setBlock

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

    Описание

    пример

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

    setBlock(bim,blocksub,blockdata,'Level',L) устанавливает содержимое блока в L'й уровень мультиразрешения 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 функция объекта. The blocksubs параметр задает координаты блока, в который вы хотите записать данные. The blockdata параметр задает данные для записи в указанный блок. Размер blockdata должен совпадать с размером блока.

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

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

    Переключите заблокированное изображение в режим чтения путем установки параметра 'Mode' на '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');

    Отобразите заблокированное изображение и нарисуйте круговой информация только для чтения на изображении.

    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
    

    Преобразуйте координаты информация только для чтения в пиксельный уровень.

    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