Main Content

setBlock

ブロック化されたイメージの特定のブロックへのデータの配置

説明

setBlock(bim,blocksub,blockdata) は、ブロックの内容として blockdata を、blockedImage オブジェクト bim の指定されたブロック添字の位置 blocksub に設定します。

setBlock(bim,blocksub,blockdata,'Level',L) は、多重解像度 blockedImageL 番目のレベルにブロックの内容を設定します。既定の設定では L1 です。

すべて折りたたむ

データを書き込むためのブロック化されたイメージを作成します。destination パラメーターでブロック化されたイメージの形式を指定します。メモリに書き込むには、空行列を指定します。また、イメージのサイズと、そのイメージのチャンク先ブロックのサイズを指定しなければなりません。初期値パラメーターは、destination で指定した形式によって異なります。書き込み可能なブロック化されたイメージを作成するには、'Mode' パラメーターの値を書き込みモードの 'w' に指定します。

destination = [];
imgsize = [5 7];
blocksize = [2 2];
initval = uint8(0);
bim = blockedImage(destination,imgsize,blocksize,initval, "Mode", 'w');

オブジェクト関数 setBlock を使用して、ブロック化されたイメージの指定されたブロックにデータを書き込みます。blocksubs パラメーターは、データを書き込みたいブロックの座標を指定します。blockdata パラメーターは、指定されたブロックに書き込むデータを指定します。ブロックデータのサイズは、ブロックのサイズと一致しなければなりません。

blocksubs = [1 1];
blockdata = ones(2,2,"uint8");
setBlock(bim, blocksubs, blockdata)

書き込みのためにイメージを閉じます。

「Mode」パラメーターを読み取り (read) の「r」に設定して、ブロック化されたイメージを読み取りモードに切り替えます。

bim.Mode = 'r'
bim = 

  blockedImage with properties:

   Read only properties
             Source: [5x7 uint8]
            Adapter: [1x1 images.blocked.InMemory]
               Size: [5 7]
       SizeInBlocks: [3 4]
    ClassUnderlying: "uint8"

   Settable properties
          BlockSize: [2 2]

個々のブロックをすべて収集する関数 gather を使用して、完全なイメージを作成します。

fullImage = gather(bim);

コマンド ラインでブロック化されたイメージの詳細を表示します。

disp(fullImage)
   1   1   0   0   0   0   0
   1   1   0   0   0   0   0
   0   0   0   0   0   0   0
   0   0   0   0   0   0   0
   0   0   0   0   0   0   0

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

bim = blockedImage('tumor_091R.tif');

ブロック化されたイメージを表示し、イメージ上に円 ROI を描画します。

h = bigimageshow(bim);
hROI = drawcircle(gca, 'Radius', 470, 'Position', [1477 2284]);

Figure contains an axes object. The axes object contains 2 objects of type bigimageshow, images.roi.circle.

マスクを作成する解像度レベルを指定します。

maskLevel = 3;

書き込み可能なブロック化されたイメージをメモリに作成します。

bmask = blockedImage([], [200 200], bim.Size(maskLevel,1:2), false, "Mode", "w");

マスクの開始点と終了点を指定します。

bmask.WorldStart = bim.WorldStart(maskLevel, 1:2);
bmask.WorldEnd = bim.WorldEnd(maskLevel, 1:2);

ブロック数を表示します。

disp(bmask.SizeInBlocks);
     1     1

ROI 座標をピクセル レベルに変換します。

roiPositionsRC = fliplr(hROI.Vertices); % x,y to row,column
roiPosSub = world2sub(bmask, roiPositionsRC, "level", 1);

for cSub = 1:bmask.SizeInBlocks(2)
    for rSub = 1:bmask.SizeInBlocks(1)
        blockSub = [rSub, cSub];
        [pStart, pEnd] = blocksub2sub(bmask, blockSub, "Level", 1);
 
        % Create a grid encompassing all pixels in the block in X-Y order
        [xgrid,ygrid] = meshgrid(pStart(2):pEnd(2), pStart(1):pEnd(1));
 
        % Create in/out mask for this block
        tileMask = inpolygon(xgrid, ygrid,...
                roiPosSub(:,2), roiPosSub(:,1));
 
        % Write out the block
        setBlock(bmask, blockSub, tileMask);
 
    end
end

ブロック化されたイメージを読み取りモードに切り替えます。

bmask.Mode = 'r';

マスクを表示します。

figure
bigimageshow(bmask)

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

入力引数

すべて折りたたむ

ブロック化されたイメージ。blockedImage オブジェクトとして指定します。

ブロック添字ベクトル。1 行 N 列の整数値のブロック添字ベクトルとして指定します。有効な要素の範囲は 1 から SizeInBlocks プロパティの対応する要素までです。

例: [3, 2, 1]

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

データのブロック。次元が BlockSize と一致する数値配列として指定します。型は、ClassUnderlying プロパティで指定された型に一致します。setBlockSize プロパティに当てはまるようにエッジに沿って自動でブロックをトリミングします。

バージョン履歴

R2021a で導入