Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

selectBlockLocations

ブロック化されたイメージからのブロックの選択

説明

blset = selectBlockLocations(bims) は、1 つ以上の blockedImage オブジェクト bims から、各イメージで使用可能な最も細かい解像度で、オーバーラップのない固有のブロックのセットを選択します。blockLocationsSet オブジェクト blset を返します。

blset = selectBlockLocations(bims,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して、選択するブロックに関する追加のオプション (ブロック同士のオーバーラップや間隔など) を指定します。

すべて折りたたむ

ブロック化されたイメージを作成します。

bim = blockedImage('tumor_091R.tif');

不完全なブロックを除くブロック位置のセットを作成します。

 bls = selectBlockLocations(bim,'ExcludeIncompleteBlocks',true);

このブロックのセットから blockedImageDatastore を作成します。

bimds = blockedImageDatastore(bim,'BlockLocationSet', bls);

ブロック化された位置を可視化します。

bigimageshow(bim)

ブロック サイズは、行、列 (高さ、幅) の順に並んでいます。

blockedWH = fliplr(bls.BlockSize(1,1:2));
for ind = 1:size(bls.BlockOrigin,1)
    % BlockOrigin is already in x,y order.
    drawrectangle('Position', [bls.BlockOrigin(ind,1:2),blockedWH]);
end

Figure contains an axes object. The axes object contains 21 objects of type bigimageshow, images.roi.rectangle.

ブロック化されたイメージを作成します。

bim = blockedImage('tumor_091R.tif');

blockLocationSet オブジェクトを作成します。

blockSize = [2048 3072];
overlapPct = 0.5;
blockOffsets = round(blockSize.*overlapPct);
bls = selectBlockLocations(bim,...
     'BlockSize', blockSize,...
     'BlockOffSets', blockOffsets,...
     'ExcludeIncompleteBlocks', true);

このブロックのセットから blockedImageDatastore を作成します。

bimds = blockedImageDatastore(bim, 'BlockLocationSet', bls);

ブロック化された位置を可視化します。

bigimageshow(bim)

ブロック サイズは、行、列 (高さ、幅) の順に並んでいます。

blockedWH = fliplr(bls.BlockSize(1,1:2));
colors = prism(size(bls.BlockOrigin,1));
for ind = 1:size(bls.BlockOrigin,1)
     blockedColor = colors(ind,:);
     % BlockOrigin is already in x-y order
     drawrectangle('Position', [bls.BlockOrigin(ind,1:2), blockedWH],'Color', blockedColor);
end

ブロック化されたイメージを作成します。

bim = blockedImage('tumor_091R.tif');

blockLocationSet オブジェクトを作成します。

blockedSize = [1024 512];
spacePct = 0.5;
blockedOffsets = blockedSize + blockedSize.*spacePct;
bls = selectBlockLocations(bim,...
          'BlockSize', blockedSize,...
          'BlockOffSets', blockedOffsets,...
          'ExcludeIncompleteBlocks', true);

このブロックのセットから blockedImageDatastore オブジェクトを作成します。

bimds = blockedImageDatastore(bim, 'BlockLocationSet', bls);

ブロックの位置を可視化します。

bigimageshow(bim)
% Block size is in row-col (height-width) order
blockedWH = fliplr(bls.BlockSize(1,1:2));
for ind = 1:size(bls.BlockOrigin,1)
     % BlockOrigin is already in x-y order
     drawrectangle('Position', [bls.BlockOrigin(ind,1:2), blockedWH]);
end

Figure contains an axes object. The axes object contains 22 objects of type bigimageshow, images.roi.rectangle.

ブロック化されたイメージを作成します。

bim = blockedImage("tumor_091R.tif");

ブロック化されたイメージを表示します。

h = bigimageshow(bim);

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

最も粗いレベルでマスクを作成します。

clevel = bim.NumLevels;
bmask = apply(bim,@(b)~imbinarize(im2gray(b.Data)),"Level",clevel);

showMask を使用して InclusionThreshold の値を推定します。

showmask(h,bmask,"BlockSize",[256 256],"InclusionThreshold",0.9)

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

マスクで定義された染色領域において 90% 以上のピクセルが true であるブロックについて、blockedImagedatastore を作成します。

mbls = selectBlockLocations(bim, ...
                 "Levels",1, ...
                 "Masks",bmask,"InclusionThreshold",0.90, ...
                 "BlockSize",[256 256]);

このブロックのセットから blockedImageDatastore を作成します。

bimds = blockedImageDatastore(bim,"BlockLocationSet",mbls);

検証を行います。

bimds.ReadSize = 10;
blocks = read(bimds);
figure
montage(blocks,"BorderSize",5,"BackgroundColor","b"); 

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

入力引数

すべて折りたたむ

ブロック化されたイメージ。blockedImage オブジェクト、または blockedImage オブジェクトの b 要素ベクトルとして指定します。

名前と値の引数

例: 'BlockSize',[224 224] はブロック サイズを 224 x 224 ピクセルに設定します。

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

隣接するブロックのオフセット。[rows columns] の形式の正の整数の 2 要素行ベクトルとして指定します。

既定値は BlockSize に等しくなります。結果として、ブロックはオーバーラップしません。ブロックをオーバーラップするには、より小さい値を指定します。ブロック間のギャップを追加するには、より大きい値を指定します。

ブロック サイズ。[rows columns] の形式の正の整数の 2 要素行ベクトルとして指定します。既定値は、bims の最初のブロック化されたイメージの最も細かい解像度レベルにおける BlockSize プロパティに等しくなります。

'BlockSize' より小さい不完全なブロックの除外。数値か logical 0 (false) または 1 (true) として指定します。

マスク ブロックの包含しきい値。範囲 [0, 1] の値をもつ数値スカラーまたは b 要素数値ベクトルとして指定します。引数 InclusionThreshold は、要素の数が引数 Masks と同じでなければなりません。関数 selectBlockLocations は、対応するマスク ブロックの前景に、'InclusionThreshold' で指定された値以上の割合がオーバーラップするブロックを選択します。

  • 包含しきい値が 0 の場合、対応するマスク ブロック内の少なくとも 1 つのピクセルが非ゼロのときに関数 selectBlockLocations はブロックを選択します。

  • 包含しきい値が 1 の場合、マスク ブロック内のすべてのピクセルが非ゼロのときのみに関数 selectBlockLocations はブロックを選択します。

bims 内のそれぞれのブロック化されたイメージに含まれるブロックの解像度レベル。正の整数のスカラー、または bims と同じサイズの配列として指定します。スカラー値を指定した場合、関数 selectBlockLocations はすべてのブロック化されたイメージから同じ解像度レベルでブロックを選択します。既定値は、ブロック化されたイメージの配列 bims に含まれる各イメージにおける最も細かいレベルです。

データ型: double

マスク イメージ。bims と同じサイズの配列として指定します。マスク イメージの基となるデータ型は logical です。関数 selectBlockLocations は、対応するマスク ブロックの前景に InclusionThreshold で指定された量だけオーバーラップするブロックを選択します。マスクは、配列 bims 内の対応する blockedImage と同じワールド座標系になければなりません。

マスク ブロックの評価における並列処理の使用。数値か logical 0 (false) または 1 (true) として指定します。マスクがメモリに収まらない場合は、マスクの並列評価が役立ちます。

並列処理を使用するには Parallel Computing Toolbox™ が必要です。関数 selectBlockLocations は、既存のワーカーの並列プールを使用するか、アクティブな並列プールがない場合は新規プールを開きます。bims 内のそれぞれのブロック化されたイメージの Source プロパティは、すべての並列ワーカーに対して有効なパスでなければなりません。

出力引数

すべて折りたたむ

ブロック位置。blockLocationSet オブジェクトとして返されます。

参照

[1] Bejnordi, Babak Ehteshami, Mitko Veta, Paul Johannes van Diest, Bram van Ginneken, Nico Karssemeijer, Geert Litjens, Jeroen A. W. M. van der Laak, et al. “Diagnostic Assessment of Deep Learning Algorithms for Detection of Lymph Node Metastases in Women With Breast Cancer.” JAMA 318, no. 22 (December 12, 2017): 2199–2210. https://doi.org/10.1001/jama.2017.14585.

バージョン履歴

R2020b で導入