exponenta event banner

setBlock

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

Описание

пример

setBlock(bigimg,level,locationWorld,data) устанавливает пиксельные данные в блоке большого изображения bigimg который содержит координаты locationWorld на указанном уровне разрешения.

Примеры

свернуть все

Создать bigimage использование измененной версии изображения «tumor_091.tif» из набора данных CAMELYON16. Исходное изображение представляет собой тренировочное изображение лимфатического узла, содержащего опухолевую ткань. Исходное изображение имеет восемь уровней разрешения, а лучший уровень имеет разрешение 53760 на 61440. Измененное изображение имеет только три уровня грубого разрешения. Пространственная привязка модифицированного изображения была отрегулирована для обеспечения согласованного отношения сторон и регистрации признаков на каждом уровне.

bim = bigimage('tumor_091R.tif');

Отображение bigimageзатем создайте ROI окружности над отображаемым изображением.

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

Выберите уровень для создания записываемого bigimage. Уровень 3 - самый грубый уровень разрешения.

maskLevel = 3;

Получение пространственных ссылок и границ пикселов из указанного уровня.

ref = bim.SpatialReferencing(maskLevel);
pixelExtent = [ref.PixelExtentInWorldX,ref.PixelExtentInWorldY];

Создание записываемого bigimage путем указания пространственной ссылки вместо данных изображения. Этот большой образ имеет один канал и имеет тип данных logical.

bmask = bigimage(ref,1,'logical');

Выполните петлю по всем блокам в записываемом большом изображении, чтобы создать маскирующее изображение. Для каждого блока задайте значения пикселов как 1 (true) для пикселов внутри ROI и 0 (false) для пикселов за пределами ROI.

for cStart = 1:bmask.BlockSize(2):ref.ImageSize(2)
    for rStart = 1:bmask.BlockSize(1):ref.ImageSize(1)

        % Get the center of top left pixel of this block in world units.
        xyStart = [cStart,rStart].*pixelExtent;

        % Get the block size. The |'BlockSize'| property represents the
        % size as a 2-element vector of the form [row,column]. Switch the
        % order of the elements so that the block size is represented as
        % [x,y].
        bsize = bmask.BlockSize;
        numRows = bsize(1);
        numCols = bsize(2);

        % Determine which pixels have coordinates inside the ROI.
        roiPositions = hROI.Vertices;

        % Transform |roiPositions| from world coordinates to the intrinsic
        % image indices at the given resolution level.
        roiPositions = (roiPositions - xyStart) ./ pixelExtent + 1;

        blockMask = poly2mask(roiPositions(:,1),roiPositions(:,2), ...
                              numRows, numCols);

        % Set the pixel values of the block.
        setBlock(bmask,1,xyStart,blockMask);
    end
end

Отображение маски.

figure
bigimageshow(bmask)

Входные аргументы

свернуть все

Большое изображение, указанное как bigimage объект.

Уровень разрешения, заданный как положительное целое число, которое меньше или равно числу уровней разрешения bigimg.

Координата точки, заданная как числовой вектор формы 1 на 2 [x y]. Местоположение задается в мировых координатах, которые являются местоположениями пикселей относительно самого высокого уровня разрешения. Позиция должна быть действительной позицией в пределах bigimg.

Пиксельные данные, указанные как числовой массив того же типа данных, что и большое изображение, bigimg.ClassUnderlying. Первые два размера данных должны соответствовать размеру блока в указанном level.

Совет

  • Создание записываемого bigimage с использованием синтаксиса, который не инициализирует данные изображения. При создании bigimage путем указания имени файла, имени каталога или имени переменной данных изображения или с помощью apply функция, затем bigimage не может быть записано, и вы не можете использовать setBlock функция.

  • Если размер data меньше размера блока bigimg.BlockSize, то setBlock помещает данные со значением по умолчанию, bigimg.UnloadedValue.

  • setBlock обрезает данные для частичных блоков кромок.

См. также

| |

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