Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

getRegion

(削除予定) bigimage オブジェクトの任意の領域の読み取り

R2019b 以降

bigimage オブジェクトの関数 getRegion は将来のリリースで削除される予定です。代わりに、blockedImage オブジェクトに関連付けられた関数 getRegion を使用してください。詳細については、互換性の考慮事項を参照してください。

説明

data = getRegion(bigimg,level,regionStartWorld,regionEndWorld) は、指定された解像度レベルで bigimg 内の大きなイメージ データを読み取ります。この関数は、regionStartWorldregionEndWorld (両端を含む) で指定された四角形領域の境界に接触する範囲をもつか、境界内にある範囲をもつ、すべてのピクセルを返します。

すべて折りたたむ

CAMELYON16 データセットのイメージ "tumor_091.tif" の変更したバージョンを使用して bigimage を作成します。元のイメージは、腫瘍組織が含まれるリンパ節の学習イメージです。元のイメージには 8 つの解像度レベルがあり、最も細かいレベルの解像度は 53760 x 61440 です。変更したイメージには、3 つの粗い解像度レベルのみが含まれています。変更したイメージの空間参照は、縦横比が一定に維持され、各レベルで特徴がレジストレーションされるように調整されています。

bim = bigimage('tumor_091R.tif');

最も細かい解像度レベルで bigimage 全体を表示します。

bshow = bigimageshow(bim);

Figure contains an axes object. The axes object contains an object of type bigimageshow.

最も細かい解像度レベルに対して水平方向と垂直方向の開始座標と終了座標を指定することにより、四角形の領域を定義します。

xyStart = [2100,1800];
xyEnd = [2600,2300];

各解像度レベルで bigimage の領域を取得します。

imL1 = getRegion(bim,1,xyStart,xyEnd);
imL2 = getRegion(bim,2,xyStart,xyEnd);
imL3 = getRegion(bim,3,xyStart,xyEnd);

3 つの領域をモンタージュに表示します。最も細かい解像度レベルは左側、最も粗い解像度レベルは右側です。

montage({imL1,imL2,imL3},'Size',[1 3], ...
    'BorderSize',5,'BackgroundColor','w');

Figure contains an axes object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

大きなイメージ。bigimage オブジェクトとして指定します。

解像度レベル。bigimg の解像度レベル値以下の正の整数として指定します。

読み取る四角形領域の左上の座標。[x y] 形式の 1 行 2 列の数値ベクトルとして指定します。場所はワールド座標、つまり最も高い解像度レベルに対するピクセル位置で指定されます。

読み取る四角形領域の右下の座標。[x y] 形式の 1 行 2 列の数値ベクトルとして指定します。場所はワールド座標、つまり最も高い解像度レベルに対するピクセル位置で指定されます。

出力引数

すべて折りたたむ

ピクセル データ。大きなイメージ bigimg.ClassUnderlying と同じデータ型の数値配列として返されます。

バージョン履歴

R2019b で導入

すべて展開する

R2023b: getRegion は削除予定

bigimage オブジェクトとこの関数は将来のリリースで削除される予定です。代わりに、blockedImage オブジェクトの関数 getRegion を使用してください。

コードを更新するには、まず、イメージ データを読み取るための blockedImage オブジェクトを作成します。次に、以下の手順に従います。

  • 2 つの要素の順序を入れ替えて、(x, y) ワールド座標を (行, 列) ワールド座標に変換します。

  • 関数 world2sub を使用して、ワールド座標をピクセルの添字に変換します。レベル 1 以外の解像度レベルで領域を取得するには、名前と値の引数 Level を使用してそのレベルを指定します。

  • ブロック化されたイメージおよびピクセルの添字を関数 getRegion に渡します。レベル 1 以外の解像度レベルで領域を取得するには、名前と値の引数 Level を使用してそのレベルを指定します。

非推奨の使用方法推奨される代替案

この例では、関数 getRegionbigimage オブジェクトと共に使用して、領域に含まれるイメージ データを最も高い解像度レベルで取得します。

filename = "tumor_091R.tif";
bim = bigimage(filename);
xyStart = [2100 1800];
xyEnd = [2600 2300];
region = getRegion(bim,1,xyStart,xyEnd);

以下は、blockedImage オブジェクトを使用する等価なコードです。

filename = "tumor_091R.tif";
blockedIm = blockedImage(filename);
xyStart = [2100 1800];
xyEnd = [2600 2300];
rcStart = flip(xyStart);
rcEnd = flip(xyEnd);
pixelStart = world2sub(blockedIm,rcStart);
pixelEnd = world2sub(blockedIm,rcEnd);
region = getRegion(blockedIm,pixelStart,pixelEnd);

この例では、解像度レベル 2 で操作を繰り返します。

lvl = 2;
region = getRegion(bim,lvl,xyStart,xyEnd);

この例では、名前と値の引数 Level を指定して、解像度レベル 2 で最後の操作を繰り返します。

lvl = 2;
pixelStart = world2sub(blockedIm,rcStart,Level=lvl);
pixelEnd = world2sub(blockedIm,rcEnd,Level=lvl);
region = getRegion(blockedIm,subBlock,Level=lvl);