selectBlockLocations

Выберите блоки из заблокированных изображений

Описание

blset = selectBlockLocations(bims) выбирает набор непересекающихся уникальных блоков из одного или нескольких blockedImage объекты bims в лучшем разрешении доступном на каждом изображении. Возвращает blset, а blockLocationsSet объект.

пример

blset = selectBlockLocations(bims,Name,Value) задает дополнительные опции для выбранных блоков, такие как перекрытие и интервалы между блоками, используя один или несколько аргументы пары "имя-значение".

Примеры

свернуть все

Создайте заблокированное изображение.

bim = blockedImage('tumor_091R.tif');

Создайте набор расположения блоков, исключая неполные блоки.

 bls = selectBlockLocations(bim,'ExcludeIncompleteBlocks',true);

Создайте blockedImageDatastore из этого набора блоков.

bimds = blockedImageDatastore(bim,'BlockLocationSet', bls);

Визуализация заблокированных местоположений.

bigimageshow(bim)

Размер блока находится в порядке строка-col (ширина по высоте).

blockedWH = fliplr(bls.BlockSize(1,1:2));
for ind = 1:size(bls.BlockOrigin,1)
    % BlockOrigin is already in x,y order.
    drawrectangle('Position', [bls.BlockOrigin(ind,1:2),blockedWH]);
end

Создайте заблокированное изображение.

bim = blockedImage('tumor_091R.tif');

Создайте blockLocationSet объект.

blockSize = [2048 3072];
overlapPct = 0.5;
blockOffsets = round(blockSize.*overlapPct);
bls = selectBlockLocations(bim,...
     'BlockSize', blockSize,...
     'BlockOffSets', blockOffsets,...
     'ExcludeIncompleteBlocks', true);

Создайте blockedImageDatastore из этого набора блоков.

bimds = blockedImageDatastore(bim, 'BlockLocationSet', bls);

Визуализация заблокированных местоположений.

bigimageshow(bim)

Размер блока находится в порядке строка-col (ширина по высоте).

blockedWH = fliplr(bls.BlockSize(1,1:2));
colors = prism(size(bls.BlockOrigin,1));
for ind = 1:size(bls.BlockOrigin,1)
     blockedColor = colors(ind,:);
     % BlockOrigin is already in x-y order
     drawrectangle('Position', [bls.BlockOrigin(ind,1:2), blockedWH],'Color', blockedColor);
end

Создайте заблокированное изображение.

bim = blockedImage('tumor_091R.tif');

Создайте blockLocationSet объект.

blockedSize = [1024 512];
spacePct = 0.5;
blockedOffsets = blockedSize + blockedSize.*spacePct;
bls = selectBlockLocations(bim,...
          'BlockSize', blockedSize,...
          'BlockOffSets', blockedOffsets,...
          'ExcludeIncompleteBlocks', true);

Создайте blockedImageDatastore объект из этого набора блоков.

bimds = blockedImageDatastore(bim, 'BlockLocationSet', bls);

Визуализация расположения блоков.

bigimageshow(bim)
% Block size is in row-col (height-width) order
blockedWH = fliplr(bls.BlockSize(1,1:2));
for ind = 1:size(bls.BlockOrigin,1)
     % BlockOrigin is already in x-y order
     drawrectangle('Position', [bls.BlockOrigin(ind,1:2), blockedWH]);
end

Создайте заблокированное изображение.

bim = blockedImage('tumor_091R.tif');

Визуализация заблокированного изображения.

h = bigimageshow(bim);

Создайте маску на самом грубом уровне.

clevel = bim.NumLevels;
bmask = apply(bim, @(b)~imbinarize(im2gray(b.Data)), "Level", clevel);

Используйте showMask для оценки InclusionThreshold значение.

showmask(h, bmask, 'BlockSize', [256 256], 'InclusionThreshold', 0.9)

Создайте blockedImagedatastore для блоков, которые имеют по меньшей мере 90% пикселей 'on' в окрашенной области, заданной маской.

mbls = selectBlockLocations(bim, ...
                 'Levels', 1, ...
                 'Masks', bmask, 'InclusionThreshold', 0.90,...
                 'BlockSize', [256 256]);

Создайте blockedImageDatastore из этого набора блоков.

bimds = blockedImageDatastore(bim,'BlockLocationSet', mbls);

Проверьте.

bimds.ReadSize = 10;
blocks = read(bimds);
figure
montage(blocks,'BorderSize',5,'BackgroundColor','b'); 

Входные параметры

свернуть все

Заблокированные изображения, заданные как blockedImage объект или b -элементный вектор blockedImage объекты.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'BlockSize',[224 224] устанавливает размер блока 224 на 224.

Смещение смежных блоков, заданное как 2-элементный вектор-строка положительных целых чисел вида [rows columns].

Значение по умолчанию равно BlockSize, в результате чего не перекрывающиеся блоки. Чтобы перекрыть блоки, задайте меньшее значение. Чтобы добавить зазор между блоками, задайте большее значение.

Размер блока, заданный как 2-элементный вектор-строка положительных целых чисел вида [rows columns]. Значение по умолчанию равно BlockSize свойство на самом высоком уровне разрешения первого заблокированного изображения в bims.

Исключить неполные блоки, которые меньше 'BlockSize', заданный в виде числа или логического 0 (false) или 1 (true)..

Порог включения для маскирующих блоков, заданный в виде числа или b-элементного числового вектора со значениями в области значений [0, 1]. The InclusionThreshold аргумент должен иметь то же количество элементов, что и Masks аргумент. selectBlockLocations функция выбирает блоки, которые перекрывают передний план соответствующего маскирующего блока на процент, больший или равный значению, заданному 'InclusionThreshold'.

  • Когда порог включения 0, selectBlockLocations функция выбирает блок, когда, по меньшей мере, один пиксель в соответствующем маскирующем блоке является ненулевым.

  • Когда порог включения 1, selectBlockLocations функция выбирает блок только, когда все пиксели в маскирующем блоке ненулевые.

Уровень разрешения блоков из каждого заблокированного изображения в bims, заданный как скалярное положительное целое число или массив того же размера, что и bims. Если вы задаете скалярное значение, selectBlockLocations функция выбирает блоки из всех заблокированных изображений на том же уровне разрешения. Значение по умолчанию является лучшим уровнем каждого изображения в массиве заблокированных изображений, bims.

Типы данных: double

Маскировать изображения, заданные как массив того же размера, что и bims. Базовый тип данных маскировочных изображений logical. selectBlockLocations функция выбирает блоки, которые перекрывают передний план соответствующего маскирующего блока на величину, заданную как InclusionThreshold. Ожидается, что маски будут находиться в той же мировой системе координат, что и соответствующие blockedImage в bims массив.

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

Для использования параллельной обработки требуются Toolbox™ Parallel Computing. selectBlockLocations функция использует существующий параллельный пул работников или открывает новый пул, когда параллельный пул не активен. The Source свойство каждого заблокированного изображения в bims должен быть допустимым путем для всех параллельных рабочих процессов.

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

свернуть все

Блочные местоположения, возвращенные как blockLocationSet объект.

Ссылки

[1] Bejnordi, Бэбэк Эхтешэми, Митко Вета, Пол Джоханнс ван Дист, Брэм ван Джиннекен, Нико Карссемейджер, Герт Литьенс, Йерун А. В. М. ван дер Лак, и др. «Диагностическая оценка алгоритмов глубокого обучения для обнаружения метастазов в лимфатических узлах у женщин с раком молочной железы». JAMA 318, № 22 (12 декабря 2017): 2199-2210. https://doi.org/10.1001/jama.2017.14585.

Введенный в R2020b