Выберите блоки из блокированных изображений
задает дополнительные опции о блоках, чтобы выбрать, такие как перекрытие и располагающий с интервалами между блоками, с помощью одного или нескольких аргументов пары "имя-значение".blset
= selectBlockLocations(bims
,Name,Value
)
Создайте блокированное изображение.
bim = blockedImage('tumor_091R.tif');
Создайте набор местоположения блока, исключая неполные блоки.
bls = selectBlockLocations(bim,'ExcludeIncompleteBlocks',true);
Создайте blockedImageDatastore
от этого набора блоков.
bimds = blockedImageDatastore(bim,'BlockLocationSet', bls);
Визуализируйте блокированные местоположения.
bigimageshow(bim)
Размер блока находится в седле строки (ширина высоты) порядок.
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)
Размер блока находится в седле строки (ширина высоты) порядок.
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');
bims
— Блокированные изображенияblockedImage
возразите | b - вектор элемента из blockedImage
объектыБлокированные изображения в виде blockedImage
объект или b - вектор элемента из blockedImage
объекты.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'BlockSize',[224 224]
устанавливает размер блока на 224 224.'BlockOffsets'
— Смещение смежных блоковСмещение смежных блоков в виде вектора-строки с 2 элементами из положительных целых чисел формы [rows columns].
Значение по умолчанию равно BlockSize
, получившийся в неналожении блоков. Чтобы перекрыть блоки, задайте меньшее значение. Чтобы добавить разрыв между блоками, задайте большее значение.
'BlockSize'
— Размер блокаРазмер блока в виде вектора-строки с 2 элементами из положительных целых чисел формы [rows
columns]. Значение по умолчанию равно BlockSize
свойство на самом прекрасном уровне разрешения первого блокированного изображения в bims
.
'ExcludeIncompleteBlocks'
— Исключите неполные блокиfalse
или 0
(значение по умолчанию) | true
или 1
Исключите неполные блоки, которые меньше, чем 'BlockSize
'в виде числового или логического 0
ложь
) или 1
TRUE
)..
'InclusionThreshold'
— Порог включения для блоков маски
(значение по умолчанию) | числовой скаляр | b - элемент числовой векторПорог включения для маски блокируется в виде числового скаляра или b - элемент числовой вектор со значениями в области значений [0, 1]. InclusionThreshold
аргумент должен иметь то же число элементов как Masks
аргумент. selectBlockLocations
функция выбирает блоки, которые перекрывают передний план соответствующего блока маски процентом, больше, чем или равный значению, заданному 'InclusionThreshold'
.
Когда порогом включения является 0
, selectBlockLocations
функция выбирает блок, когда по крайней мере один пиксель в соответствующем блоке маски является ненулевым.
Когда порогом включения является 1
, selectBlockLocations
функция выбирает блок только, когда все пиксели в блоке маски являются ненулевыми.
'Levels'
— Уровень разрешенияУровень разрешения блоков из каждого блокированного изображения в bims
В виде скалярного положительного целого числа или массива одного размера с bims
. Если вы задаете скалярное значение, selectBlockLocations
функция выбирает блоки из всех блокированных изображений на том же уровне разрешения. Значением по умолчанию является самый прекрасный уровень каждого изображения в массиве блокированных изображений, bims
.
Типы данных: double
'Masks'
— Рисунки маскиblockedImage
возразите | массив blockedImage
объектыРисунки маски в виде массива тот же размер как bims
. Базовым типом данных рисунков маски является logical
. selectBlockLocations
функция выбирает блоки, которые перекрывают передний план соответствующего блока маски суммой, заданной InclusionThreshold
. Маски, как ожидают, будут в той же системе мировой координаты как соответствующий blockedImage
в bims
массив.
'UseParallel'
— Используйте параллельную обработкуfalse
или 0
(значение по умолчанию) | true
или 1
Используйте параллельную обработку, чтобы оценить блоки маски в виде числового или логического 0
ложь
) или 1
TRUE
).. Параллельная оценка масок выгодна, когда маски не умещаются в памяти.
Использование параллельной обработки требует Parallel Computing Toolbox™. selectBlockLocations
функционируйте использует существующий параллельный пул рабочих или открывает новый пул, когда никакой параллельный пул не активен. Source
свойство каждого блокированного изображения в bims
должен быть допустимый путь на всех параллельных рабочих.
blset
— Блокируйте местоположенияblockLocationSet
объектБлокируйте местоположения, возвращенные как a blockLocationSet
объект.
[1] Bejnordi, Babak Ehteshami, Митко Вета, Пол Джоханнс ван Дист, Брэм ван Джиннекен, Нико Карссемейджер, Герт Литьенс, Йерун А. В. М. ван дер Лак, и др. “Диагностическая Оценка Алгоритмов Глубокого обучения для Обнаружения Метастаз Лимфатического узла в Женщинах С Раком молочной железы”. JAMA 318, № 22 (12 декабря 2017): 2199–2210. https://doi.org/10.1001/jama.2017.14585.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.