Блоки процесса большого изображения
процессы все блоки большого изображения newbig
= apply(bigimg
,level
,fun
,extraImages
)bigimg
и одно или несколько дополнительных больших изображений extraImages
. Используйте этот синтаксис когда функциональный fun
принимает входные параметры повторного изображения, такие как изображение и маска.
аспекты средств управления обработки, такие как обработка данных в параллели или дополнении блоков на ребре изображения, с помощью аргументов пары "имя-значение".newbig
= apply(___,Name,Value
)
Создайте bigimage
. Это примеры использует модифицированную версию изображения "tumor_091.tif" от набора данных CAMELYON16. Оригинальное изображение является учебным изображением лимфатического узла, содержащего ткань опухоли. Оригинальное изображение имеет восемь уровней разрешения, и самый прекрасный уровень имеет разрешение 53760 61440. Модифицированное изображение имеет только три крупных уровня разрешения. Пространственная ссылка модифицированного изображения была настроена, чтобы осуществить сопоставимое соотношение сторон и указать функции на каждом уровне.
bim = bigimage('tumor_091R.tif');
Отобразите большое изображение при помощи bigimageshow
функция. Отобразите самый прекрасный уровень разрешения на левой стороне окна рисунка.
figure ha1 = subplot(1,2,1); bigimageshow(bim,'ResolutionLevel',1); title("Original Image")
Улучшите структуры в изображении путем применения сохраняющего ребро нелокального среднего фильтра к каждому блоку на самом прекрасном уровне разрешения, 1. В данном примере apply
функция выполняет эти операции на каждом блоке входа bigimage
:
Преобразуйте блок в L*a*b* цветовое пространство.
Отфильтруйте блок с помощью imnlmfilt
.
Преобразуйте блок назад в цветовое пространство RGB.
apply
функционируйте повторно комбинирует выходные блоки, чтобы сформировать новый bigimage
.
bim_enhanced = apply(bim,1, ... @(block)lab2rgb(imnlmfilt(rgb2lab(block),'DegreeOfSmoothing',15)));
Отобразите улучшенное изображение на правой стороне окна рисунка.
ha2 = subplot(1,2,2);
bigimageshow(bim_enhanced);
title("Enhanced Image")
Убедитесь, что оба отображения показывают те же степени, затем увеличивают масштаб функции.
linkaxes([ha1,ha2]); xlim([1600,2300]) ylim([1900,2600])
bigimg
— Большое изображениеbigimage
объектБольшое изображение в виде bigimage
объект.
level
— Уровень разрешенияУровень разрешения в виде положительного целого числа, которое меньше чем или равно количеству уровней разрешения bigimg
.
fun
— Указатель на функциюУказатель на функцию в виде указателя. Для получения дополнительной информации см. Создание указателя на функцию (MATLAB).
Функциональный fun
должен принять по крайней мере один блок как вход.
Опционально, функция может принять дополнительные входные параметры, которые не являются блоками. Чтобы выполнить обработку с входными параметрами неблока, необходимо вызвать apply
функционируйте и задайте fun
как анонимная функция. Для получения дополнительной информации см. Анонимные функции (MATLAB).
Таблица показывает демонстрационные функциональные подписи для различных типов входа к fun
. Таблица также показывает демонстрационный синтаксис, чтобы использовать при вызове apply
.
InputType | Функциональная подпись | Пример вызова apply |
---|---|---|
Один блок |
function outblock = myfun(inblock) ... end |
newbig = apply(bigimg,level,@myfun); |
Два блока |
function outblock = myfun(inblock1,inblock2) ... end | Задайте второй newbig = apply(bigimg,level,@myfun,otherbig); |
Один блок и один неблок |
function outblock = myfun(inblock,nonblock) ... end | Этот пример передает скалярное значение c = 37; mynewbig = apply(mybigimg,level,@(x) myfun(x,c)); |
Функциональный fun
обычно возвращает один или несколько блоков изображений одного размера с входным блоком. В этом случае, apply
повторно комбинирует блоки и возвращает bigimage
. Если вы задаете BorderSize
аргумент apply
и желайте bigimage
выведите, затем apply
обрежет границу от выходных блоков. Можно также обрезать блок непосредственно в fun
.
Все примеры в вышеупомянутой таблице демонстрируют функциональную подпись, которая возвращает один блок. Однако функциональный fun
может также возвратить структуры или другое неизображение выходные параметры.
Таблица показывает демонстрационные функциональные подписи для различных типов выхода fun
. Таблица также показывает демонстрационные синтаксисы, чтобы использовать при вызове apply
.
'OutputType' | Демонстрационная функция обработки | Пример вызова apply |
---|---|---|
Блокируйтесь одного размера с входным блоком |
function sameSizedBlock = myfun(inblock) sameSizedBlock = imgaussfilt(inblock); end | bigimageOutput = apply(bigimg,level,@myfun);
|
Несколько блоков одного размера с входным блоком |
function [sameSizedBlock,maskBlock] = myfun(inblock) sameSizedBlock = rgb2lightness(inblock); maskBlock = imbinarize(sameSizedBlock); end | [bigimageOutput1,bigimageOutput2] = apply(bigimgRGB,level,@myfun);
|
Неизображение |
function nonimageOutput = myfun(inblock) nonimageOutput = mean(inblock(:)) end |
cellArrayOutput = apply(bigimg,level,@myfun);
|
Struct () |
function structOutput = myfun(inblock) structOutput.num = numel(inblock); structOutput.mean = mean(inblock(:)); structOutput.max = max(inblock(:)); end | tableOutput = apply(mybigimg,level,@myfun); tableOutput таблица с четырьмя переменными: num среднее значение Max , и BlockOrigin . BlockOrigin переменная задает (x, y) источник каждого блока как вектор 1 на 2. |
Несколько выходных параметров |
function [out1,out2,out3,out4,out5] = myfun(inblock) % non-image output out1 = min(inblock(:)); % image output of same size as input block out2 = imgaussfilt(out2); out3 = imbinarize(inblock); % struct output out4.originalMean = mean(inblock(:)); out4.filteredMean = mean(out2(:)); out4.fractionTrue = sum(out3(:))/numel(out3); % non-image output out5 = out4.fractionTrue; end |
[c1,b2,b3,t4] = apply(mybigimg,level,@myfun);
|
extraImages
— Дополнительный вход большие изображенияbigimage
объектыДополнительный вход большие изображения в виде вектора bigimage
объекты. Каждое большое изображение должно иметь те же пространственные степени как bigimg
, но блоки не должны иметь того же размера. Большие изображения могут иметь различные значения свойств ClassUnderlying и Channels.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
newbig = apply(bigimg,level,@myfun,'UseParallel',true);
'BatchSize'
— Количество блоков предоставляется fun
(значение по умолчанию) | положительное целое числоКоличество блоков, предоставленных обработке, функционирует fun
в каждом пакете в виде разделенной запятой пары, состоящей из 'BatchSize'
и положительное целое число. Когда BatchSize
больше 1, PadPartialBlocks
должен быть true
.
Когда BatchSize
больше 1, apply
предоставления блокируются как numrows
- numcols
- channels
- BatchSize
массив. Для apply
возвратить bigimage
, fun
должен возвратить массив, одного размера. Для apply
возвратить массив ячеек или таблицу, fun
должен возвратить массив ячеек длины BatchSize
с одним элементом для каждого блока.
'BlockSize'
— Размер блокаРазмер блока в виде разделенной запятой пары, состоящей из 'BlockSize'
и вектор 1 на 2 положительных целых чисел формы [numrows numcols]
. Если вы задаете 'BlockSize'
, затем apply
блоки передач размера [numrows numcols]
к функции обработки, fun
. apply
передачи все каналы блока к fun
.
'BorderSize'
— Ограничьте размер
(значение по умолчанию) | вектор 1 на 2 неотрицательных целых чиселОграничьте размер в виде разделенной запятой пары, состоящей из 'BorderSize'
и вектор 1 на 2 неотрицательных целых чисел формы [numrows numcols]
. Функция добавляет numrows
строки выше и ниже каждого блока и numcols
столбцы налево и право на каждый блок с данными из соседних блоков. Для блоков, которые лежат на ребре изображения, данные дополнены согласно PadMethod
. По умолчанию никакая граница не добавляется к блокам.
'DisplayWaitbar'
— Отобразитесь ожидают панельtrue
(значение по умолчанию) | false
Отобразитесь ожидают панель в виде разделенной запятой пары, состоящей из 'DisplayWaitbar'
и true
или false
. Когда true
, apply
функционируйте отображает панель ожидания для длительных операций. Если вы закрываете панель ожидания, то apply
возвращает частичный выходной параметр, при наличии.
Типы данных: логический
'IncludeBlockInfo'
— Включайте информацию о блокеfalse
(значение по умолчанию) | true
Включайте информацию о блоке в виде разделенной запятой пары, состоящей из 'IncludeBlockInfo'
и false
или true
. Когда true
, apply
включает struct как последний вход к функции обработки, fun
. Struct имеет эти поля, которые описывают пространственную информацию о ссылке о блоке.
Поле | Описание |
---|---|
BlockStartWorld
| Мировые координаты центра верхнего левого пикселя блока, исключая любую границу или дополнение. |
BlockEndWorld | Мировые координаты центра нижнего правого пикселя блока, исключая любую границу или дополнение. |
DataStartWorld | Мировые координаты центра верхнего левого пикселя блока, включая любую границу или дополнение. |
DataEndWorld | Мировые координаты центра нижнего правого пикселя блока, включая любую границу или дополнение. |
Если BatchSize
больше 1, затем значения в struct являются массивами длины BatchSize
.
Типы данных: логический
'InclusionThreshold'
— Порог включения
(значение по умолчанию) | номер в области значений [0, 1]Порог включения для маски блокируется в виде разделенной запятой пары, состоящей из 'InclusionThreshold'
и номер в области значений [0, 1]. Порог включения указывает на минимальную часть ненулевых пикселей в блоке маски, требуемом обработать блок изображений.
Когда порогом включения является 0
, затем apply
обрабатывает блок, когда по крайней мере один пиксель в соответствующем блоке маски является ненулевым.
Когда порогом включения является 1
, затем apply
только обрабатывает блок, когда все пиксели в блоке маски являются ненулевыми.
'Mask'
— Маска[]
(значение по умолчанию) | одно разрешение bigimage
объектМаска в виде разделенной запятой пары, состоящей из 'Mask'
и bigimage
объект одного размера с bigimg
и со значением свойства ClassUnderlying logical
.
apply
функционируйте только блоки процессов, которые перекрываются с ненулевыми блоками маски. Если вы также задаете InclusionThreshold
, затем блок к процессу должен перекрыться с минимальным процентом ненулевых пикселей в блоке маски. Если блок изображений достаточно перекрывает блок маски, то apply
отправляет целый блок изображений в функцию обработки fun
, и fun
процессы все пиксели в блоке. fun
не может получить доступ к маске непосредственно.
Входной блок может перекрыть несколько блоков маски, когда изображение более грубо, чем маска или когда ребро блока не выравнивается с блоками маски. Если входной блок перекрывает несколько блоков маски, то apply
выбирает маску, которая перекрывается с центром входного блока.
'OutputFolder'
— Местоположение, чтобы сохранить выход bigimage
sМестоположение, чтобы сохранить выход bigimage
s в виде разделенной запятой пары, состоящей из 'OutputFolder'
и false
или true
. Параллельная обработка требует Parallel Computing Toolbox™.
'PadMethod'
— Заполните метод'replicate'
| 'symmetric'
Заполните метод неполных блоков ребра в виде разделенной запятой пары, состоящей из 'PadMethod'
и одно из этих значений. По умолчанию, apply
заполняет числовые блоки 0
и категориальные блоки с missing
.
Значение | Значение |
---|---|
числовой скаляр | Заполните числовой массив элементами постоянного значения. |
скаляр строки | Заполните категориальный массив заданным классом в свойстве Classes |
| Клавиатура путем повторения элементов границы массива. |
| Заполните массив зеркальными отражениями себя. |
'PadPartialBlocks'
— Заполните частичные блокиfalse
(значение по умолчанию) | true
Заполните частичные блоки в виде разделенной запятой пары, состоящей из 'PadPartialBlocks'
и false
или true
. Частичные блоки возникают, когда размер изображения не является точно делимым BlockSize
. Если они существуют, частичные блоки простираются вдоль правого края и базового края изображения.
Установите PadPartialBlocks
к true
когда BatchSize
больше 1.
Типы данных: логический
'UseParallel'
— Используйте параллельную обработкуfalse
(значение по умолчанию) | true
Используйте параллельную обработку в виде разделенной запятой пары, состоящей из 'UseParallel'
и false
или true
. Параллельная обработка требует Parallel Computing Toolbox.
Когда вы задаете UseParallel
как true
, затем MATLAB® автоматически открывает параллельный пул на основе параллельных настроек по умолчанию. apply
обрабатывает bigimage
блоки через доступных рабочих. DataSource
свойство всего входа bigimage
s должен быть допустимыми путями на каждом из параллельных рабочих. Если относительные пути используются, то гарантируют, что рабочие и клиентский процесс находятся на той же рабочей директории. Если рабочие не совместно используют ту же файловую систему как клиентский процесс, то задайте OutputFolder
.
Типы данных: логический
newbig
— Обработанное большое изображениеbigimage
объектОбработанное большое изображение, возвращенное как bigimage
объект с одним уровнем разрешения. Количество строк и столбцов newbig
равно количеству строк и столбцов входа большое изображение bigimg
в заданном разрешении level
. Однако newbig
может иметь различное количество каналов и различный базовый класс.
other
— Дополнительный выходbigimage
возразите | таблица | массив ячеекДополнительный выход от обработки функционального fun
, возвращенный как одно из следующих. Если fun
возвращает несколько выходных аргументов, затем apply
может возвратить тот же номер или меньше выходных аргументов.
Значение | Вхождение |
---|---|
|
Возвращенный |
таблица |
|
cellArray |
|
apply
данные о передачах к функции обработки, fun
, один блок за один раз в самом эффективном порядке пересечь данные (часто упорядоченный по строкам порядок блока). apply
процессы каждый блок только однажды.
Это неэффективно, чтобы выполнить много операций по обработке путем совершения множественных вызовов к apply
потому что данные должны быть пересечены многократно. Чтобы оптимизировать время вычислений, задайте fun
таким образом, что это выполняет несколько операций по обработке. Это минимизирует чтение и запись наверху и гарантирует местность данных. Можно далее уменьшать время вычислений на конкретном уровне при помощи масок, созданных на более грубых уровнях разрешения, чтобы исключить области изображения от обработки.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.