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]);

Выберите уровень, на котором можно создать writeable bigimage. Уровень 3 является самым грубым уровнем разрешения.

maskLevel = 3;

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

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

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

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

Цикл через все блоки в writeable большом изображении, чтобы создать рисунок маски. Для каждого блока, набор пиксельные значения как 1 TRUE) для пикселей в ROI и 0 ложь) для пикселей вне 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.

Пиксельные данные в виде числового массива совпадающего типа данных как большое изображение, bigimgclassUnderlying. Первые две размерности данных должны совпадать с размером блока в заданном level.

Советы

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

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

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

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

| |

Введенный в R2019b