setBlock

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

Описание

пример

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

Примеры

свернуть все

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

bim = bigimage('tumor_091R.tif');

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

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) для пикселей в информация только для чтения и 0 (false) для пикселей вне информация только для чтения.

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