setBlock

Поместите данные в определенный блок блокированного изображения

Описание

пример

setBlock(bim,blocksub,blockdata) устанавливает содержимое блока blockdata в заданном местоположении индекса блока, blocksub в blockedImage объект bim.

setBlock(bim,blocksub,blockdata,'Level',L) устанавливает содержимое блока в L'уровень th мультиразрешения blockedImage. По умолчанию, L 1.

Примеры

свернуть все

Создайте блокированное изображение, к которому можно записать данные. Вы задаете формат блокированного изображения в destination параметр. Чтобы записать в память, задайте пустую матрицу. Необходимо также задать размер изображения и размер блоков, в которые вы хотите разделенное на блоки изображение. Параметр начального значения зависит от формата, который вы задали в месте назначения. Чтобы создать перезаписываемое блокированное изображение, задайте 'Mode' параметр со значением 'w' для режима записи.

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

Запишите данные с заданными блоками в блокированном изображении при помощи setBlock объектная функция. blocksubs параметр задает координаты блока, с которым вы хотите записать данные. blockdata параметр задает данные, чтобы записать в заданный блок. Размер blockdata должен совпадать с размером блока.

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

Закройте изображение для записи.

Переключите блокированное изображение на режим чтения путем устанавливания параметра 'Режима' на '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 свойство. setBlock автоматически обрезки блокируются вдоль ребер, чтобы соответствовать Size свойство.

Смотрите также

|

Введенный в R2021a