Main Content

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

readRelative

(削除予定) 相対的な位置を使用した bigimageDatastore からの近傍ブロックの読み取り

R2019b 以降

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

説明

data = readRelative(bigds,sourceInfo,blockOffset) は、大きなイメージ データストア bigds からオフセット blockOffset でソース ブロック sourceInfo に隣接するブロックを返します。

[data,info] = readRelative(bigds,sourceInfo,blockOffset) は、メタデータを含む抽出データに関する情報も、info に返します。

すべて折りたたむ

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

bim = bigimage('tumor_091R.tif');

最も細かい解像度レベルで大きなイメージのブロックを管理する bigimageDatastore を作成します。

bimds = bigimageDatastore(bim,1);

データストアから最初のブロックを読み取ります。

[b,binfo] = read(bimds);
b = b{1};

ブロックの左右にある近傍ブロックを読み取ります。左近傍ブロックは bim の境界の外にあるため空です。

bLeft = readRelative(bimds,binfo,[0 -1]);
bRight = readRelative(bimds,binfo,[0 1]);

ブロックをモンタージュとして表示します。左近傍ブロックは空であるため、黒く表示されます。

montage({bLeft,b,bRight},'Size',[1 3],'BorderSize',5,'BackgroundColor','b')

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

入力引数

すべて折りたたむ

大きなイメージ データストア。bigimageDatastore オブジェクトとして指定します。

ソース ブロックに関する情報。少なくとも以下のフィールドを含む struct として指定します。read によって返される info の値は sourceInfo の有効な入力です。

フィールド名説明
Levelデータの解像度レベル。正の整数として指定します。
ImageNumberデータを提供する大きなイメージのインデックス。正の整数として指定します。
BlockStartWorldデータの左上隅の (x,y) ワールド座標。1 行 2 列の数値ベクトルとして指定します。座標は、左上ピクセルの中心ではなく、ブロックの境界上の位置に対応しています。

ブロックのオフセット。ブロックの単位で整数の 1 行 2 列ベクトルとして指定します。2 つの要素は、ソース ブロックからの垂直オフセットと水平オフセットをそれぞれ指定します。

出力引数

すべて折りたたむ

出力データ。数値配列として返されます。リクエストされたブロックがソース イメージの境界の外にある場合、readRelative は空のブロック [] を返します。

出力データに関する情報。以下のフィールドを含む struct として返されます。

フィールド名説明
Levelデータの解像度レベル。正の整数の 1 行 ReadSize 列ベクトルとして指定します。
ImageNumberデータを提供する大きなイメージのインデックス。正の整数の 1 行 ReadSize 列ベクトルとして指定します。
BlockStartWorldパディングを除く、データの左上ピクセルの中心の (x,y) 座標。ReadSize 行 2 列の数値ベクトルとして指定します。値はワールド座標の値です。
BlockEndWorldパディングを除く、データの右下ピクセルの中心の (x,y) 座標。ReadSize 行 2 列の数値ベクトルとして指定します。値はワールド座標の値です。
DataStartWorldパディングを含む、データの左上ピクセルの中心の (x,y) 座標。ReadSize 行 2 列の数値ベクトルとして指定します。値はワールド座標の値です。
DataEndWorldパディングを含む、データの右下ピクセルの中心の (x,y) 座標。ReadSize 行 2 列の数値ベクトルとして指定します。値はワールド座標の値です。

ヒント

  • readRelative はマスクを無視します。

  • readRelative では、大きなイメージ データストアの PadMethod プロパティと BorderSize プロパティが考慮されます。

  • リクエストされたブロックが不完全で、bigds.IncompleteBlocks'exclude' の値がある場合、readRelative は空のブロックを返します。

バージョン履歴

R2019b で導入

すべて展開する

R2023b: readRelative は削除予定

bigimageDatastore オブジェクトとこの関数は将来のリリースで削除される予定です。代わりに、blockedImage オブジェクトの関数 getBlock を使用してください。関数 getBlock は、イメージの境界の外にある近傍ブロックの読み取りをサポートしていません。

コードを更新するには、まず、イメージ データを読み取るための blockedImage オブジェクトを作成してから、データ ブロックを管理するための blockedImageDatastore を作成します。次に、以下の手順に従い、相対位置を使用して近傍ブロックを読み取ります。

  • 関数 read を使用し、blockedImageDatastore からブロックを読み取ってブロックのメタデータを返します。

  • ブロックのメタデータ構造体の Blocksub プロパティおよび Level プロパティをそれぞれクエリし、添字と解像度レベルを取得します。

  • 近傍ブロックの相対オフセットを追加し、近傍ブロックの添字を取得します。データ ブロックが RGB イメージの場合、最後の要素の値が 0 である 3 要素ベクトルとしてオフセットを指定します。

  • ブロック化されたイメージおよび近傍ブロックの添字を指定して関数 getBlock を呼び出します。解像度レベルが 1 以外の場合、名前と値の引数 Level を使用して解像度レベルも指定します。

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

この例では、指定したブロックの右側にある近傍ブロックを bigimageDatastore オブジェクトから読み取ります。

bigIm = bigimage("tumor_091R.tif");
bigImds = bigimageDatastore(bigIm);
[block,info] = read(bigDS);
blockRightOffset = [0 1];
blockRight = readRelative(bigDS,info,blockRightOffset);

以下は、blockedImage オブジェクトを使用して指定したブロックの右側にある近傍ブロックを読み取る等価なコードです。

blockedIm = blockedImage("tumor_091R.tif");
blockedDS = blockedImageDatastore(blockedIm);
[block,info] = read(blockedDS);
blockSub = info.BlockSub;
blockRightOffset = [0 1 0];
blockRightSub = blockSub + blockRightOffset;
blockRight = getBlock(blockedIm,blockRightSub);

この例では、解像度レベル 2 で近傍ブロックを読み取ります。

bigIm = bigimage("tumor_091R.tif");
level = 2;
bigDS = bigimageDatastore(bigIm,level);
[block,info] = read(bigDS);
blockRightOffset = [0 1];
blockRight = readRelative(bigDS,info,blockRightOffset);

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

blockedIm = blockedImage("tumor_091R.tif");
level = 2;
blockedDS = blockedImageDatastore(blockedIm);
[block,info] = read(blockedDS);
blockSub = info.BlockSub;
blockRightOffset = [0 1 0];
blockRightSub = blockSub + blockRightOffset;
blockRight = getBlock(blockedIm,blockRightSub,Level=level);