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. The axes 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. The axes 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