Выберите блоки из заблокированных изображений
задает дополнительные опции для выбранных блоков, такие как перекрытие и интервалы между блоками, используя один или несколько аргументы пары "имя-значение".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');
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
(false
) или 1
(true
)..
'InclusionThreshold'
- Порог включения маскировочных блоков0.5
(по умолчанию) | числовой скаляр | b -элементный числовой векторПорог включения для маскирующих блоков, заданный в виде числа или b-элементного числового вектора со значениями в области значений [0, 1]. The 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 (
false
) или 1
(true
).. Параллельная оценка масок выгодна, когда маски не помещаются в памяти.
Для использования параллельной обработки требуются Toolbox™ Parallel Computing. selectBlockLocations
функция использует существующий параллельный пул работников или открывает новый пул, когда параллельный пул не активен. The Source
свойство каждого заблокированного изображения в bims
должен быть допустимым путем для всех параллельных рабочих процессов.
blset
- Расположение блоковblockLocationSet
объектБлочные местоположения, возвращенные как blockLocationSet
объект.
[1] Bejnordi, Бэбэк Эхтешэми, Митко Вета, Пол Джоханнс ван Дист, Брэм ван Джиннекен, Нико Карссемейджер, Герт Литьенс, Йерун А. В. М. ван дер Лак, и др. «Диагностическая оценка алгоритмов глубокого обучения для обнаружения метастазов в лимфатических узлах у женщин с раком молочной железы». JAMA 318, № 22 (12 декабря 2017): 2199-2210. https://doi.org/10.1001/jama.2017.14585.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.