exponenta event banner

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 объектная функция. blocksubs параметр указывает координаты блока, в который требуется записать данные. 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
    

    Преобразование координат 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-by-N. Диапазон допустимых элементов: 1 к соответствующему элементу в SizeInBlocks собственность.

    Пример: [3, 2, 1]

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Блок данных, указанный как числовой массив с размерами, соответствующими BlockSize. Тип соответствует типу, указанному ClassUnderlying собственность. setBlock автоматически обрезает блоки вдоль кромок для соответствия Size собственность.

    См. также

    |

    Представлен в R2021a