Main Content

selectBlockLocations

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

R2020b 以降

説明

blset = selectBlockLocations(bims) は、1 つ以上のブロック化されたイメージ bims から、各イメージで使用可能な最も細かい解像度で、オーバーラップのない固有のブロックのセットを選択します。この関数はブロック 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

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

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

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 要素ベクトルとして指定します。すべてのブロック化されたイメージの次元数が、ブロックの選択元の解像度レベルで同じでなければなりません。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: bls = selectBlockLocations(bim,BlockSize=[224 224]) はサイズが 224 x 224 ピクセルのブロックを選択します。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: bls = selectBlockLocations(bim,"BlockSize",[224 224]) はサイズが 224 x 224 ピクセルのブロックを選択します。

隣接するブロックのオフセット (ピクセル単位)。正の整数のベクトルとして指定します。BlockOffsets の長さは、ブロック化された入力イメージの次元数以下でなければなりません。最初の 2 つの要素は (行、列) の順でオフセットを指定します。

既定値は BlockSize に等しくなります。結果として、ブロックがオーバーラップしなくなり、イメージが完全にサンプリングされます。ブロックをオーバーラップするには、より小さい値を指定します。ブロック間のギャップを追加するには、より大きい値を指定します。ブロック化された入力イメージよりも低い次元のブロック オフセットを指定すると、関数 selectBlockLocations は残りの次元のイメージ サイズに等しい、その次元のブロック オフセットを設定します。

例: BlockOffsets=[100 200] は、垂直方向に 100 ピクセル、水平方向に 200 ピクセルのブロック オフセットを指定します。

ブロック サイズ (ピクセル単位)。正の整数のベクトルとして指定します。BlockSize の長さは、ブロック化された入力イメージの次元数以下でなければなりません。

BlockSize 引数を指定しない場合、既定値は bims 内で最初のブロック化されたイメージの最も細かい解像度レベルにおける BlockSize プロパティに等しくなります。より低い次元のブロック サイズを指定すると、関数 selectBlockLocations は残りの次元のイメージ サイズに等しい、その次元のブロック サイズを設定します。

例: BlockSize=[1024 512] は高さ 1024 ピクセル、幅は 512 ピクセルのブロックを指定します。

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

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

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

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

bims 内のそれぞれのブロック化されたイメージに含まれるブロックの解像度レベル。正の整数または正の整数の b 要素ベクトルとして指定します。スカラー値を指定した場合、関数 selectBlockLocations はすべてのブロック化されたイメージから同じ解像度レベルでブロックを選択します。既定値は 1 の b 要素ベクトルで、この場合は 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 で導入