Технологические блоки большого изображения
обрабатывает все блоки большого изображения 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');Улучшить структуры в изображении, применяя сохраняющий края немолированный фильтр средств к каждому блоку на уровне наилучшего разрешения, 1. Для этого примера: apply функция выполняет эти операции на каждом блоке входа bigimage:
Преобразуйте блок в цветовое пространство L * a * b *.
Фильтрация блока с помощью imnlmfilt.
Преобразуйте блок обратно в цветовое пространство RGB.
apply функция рекомбинирует выходные блоки для формирования нового bigimage.
bim_enhanced = apply(bim,1, ... @(block)lab2rgb(imnlmfilt(rgb2lab(block),'DegreeOfSmoothing',15)));
Отображение исходного изображения в левой части окна фигуры с помощью bigimageshow функция.
figure ha1 = subplot(1,2,1); bigimageshow(bim,'ResolutionLevel',1); title("Original Image")
Отображение расширенного изображения в правой части окна рисунка.
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 - Функциональная ручкаДескриптор функции, указанный как дескриптор. Дополнительные сведения см. в разделе Создание дескриптора функции.
Функция fun должен принимать в качестве входных данных хотя бы один блок.
При необходимости функция может принимать дополнительные входные данные, которые не являются блоками. Для выполнения обработки с неблочными входами необходимо вызвать apply функции и указать fun как анонимная функция. Дополнительные сведения см. в разделе Анонимные функции.
В таблице показаны образцы сигнатур функций для различных типов ввода в fun. В таблице также показан пример синтаксиса, используемого при вызове apply.
| Тип ввода | Подпись функции | Пример вызова 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.
| Тип вывода | Функция обработки проб | Пример вызова 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);
|
| Структура |
function structOutput = myfun(inblock) structOutput.num = numel(inblock); structOutput.mean = mean(inblock(:)); structOutput.max = max(inblock(:)); end | tableOutput = apply(mybigimg,level,@myfun); tableOutput - таблица с четырьмя переменными: num, mean, 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, но блоки не должны иметь одинаковый размер. Большие изображения могут иметь различные значения свойств ClassBaselning и Channel.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
newbig = apply(bigimg,level,@myfun,'UseParallel',true);'BatchSize' - Количество блоков, поставляемых fun1 (по умолчанию) | положительное целое числоКоличество блоков, подаваемых в функцию обработки 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' - Размер границы[0 0] (по умолчанию) | вектор 1 на 2 неотрицательных целых чиселРазмер границы, указанный как разделенная запятыми пара, состоящая из 'BorderSize' и вектор 1 на 2 неотрицательных целых чисел вида [numrows numcols]. Функция добавляет numrows строки над и под каждым блоком и numcols слева и справа от каждого блока с данными из соседних блоков. Для блоков, расположенных на краю изображения, данные заполняются в соответствии с PadMethod. По умолчанию к блокам не добавляется граница.
'DisplayWaitbar' - Панель ожидания дисплеяtrue (по умолчанию) | falseПанель ожидания дисплея, заданная как разделенная запятыми пара, состоящая из 'DisplayWaitbar' и true или false. Когда true, apply отображает строку ожидания для длительных операций. Если закрыть панель ожидания, то apply возвращает частичный вывод, если он доступен.
Типы данных: logical
'IncludeBlockInfo' - Включить информацию о блокахfalse (по умолчанию) | trueВключить информацию о блоках, указанную как разделенная запятыми пара, состоящая из 'IncludeBlockInfo' и false или true. Когда true, apply включает в себя структуру в качестве последнего ввода в функцию обработки, fun. Структура имеет эти поля, которые описывают информацию пространственной ссылки о блоке.
| Область | Описание |
|---|---|
BlockStartWorld
| Мировые координаты центра верхнего левого пикселя блока, исключая любую границу или заполнение. |
BlockEndWorld | Мировые координаты центра нижнего правого пикселя блока, исключая любую границу или заполнение. |
DataStartWorld | Мировые координаты центра верхнего левого пикселя блока, включая любую границу или заполнение. |
DataEndWorld | Мировые координаты центра нижнего правого пикселя блока, включая любую границу или заполнение. |
Если BatchSize больше 1, то значения в структуре являются массивами длины BatchSize.
Типы данных: logical
'InclusionThreshold' - Порог включения0.5 (по умолчанию) | число в диапазоне [0, 1]Порог включения для маскирующих блоков, указанный как разделенная запятыми пара, состоящая из 'InclusionThreshold' и число в диапазоне [0, 1]. Порог включения указывает минимальную долю ненулевых пикселей в маскирующем блоке, необходимую для обработки блока изображения.
Когда порог включения равен 0, то apply обрабатывает блок, когда, по меньшей мере, один пиксель в соответствующем маскирующем блоке является ненулевым.
Когда порог включения равен 1, то apply обрабатывает блок только тогда, когда все пикселы в маскирующем блоке ненулевые.
'Mask' - Маска[] (по умолчанию) | с одним разрешением bigimage объектМаска, заданная как разделенная запятыми пара, состоящая из 'Mask' и bigimage объект того же размера, что и bigimg и со значением свойства ClassBondering, равным logical.
apply функция обрабатывает только блоки, перекрывающиеся с ненулевыми блоками маски. Если также указать InclusionThreshold, то обрабатываемый блок должен перекрываться с минимальным процентом ненулевых пикселей в маскирующем блоке. Если блок изображения в достаточной степени перекрывает маскирующий блок, то apply отправляет весь блок изображения в функцию обработки fun, и fun обрабатывает все пикселы в блоке. fun не удается получить доступ непосредственно к маске.
Входной блок может перекрывать несколько маскирующих блоков, когда изображение крупнее маски или когда край блока не выравнивается с маскирующими блоками. Если входной блок перекрывает несколько маскирующих блоков, то apply выбирает маску, перекрывающуюся с центром блока ввода.
'OutputFolder' - Местоположение для сохранения выходных данных bigimagesМестоположение для сохранения выходных данных bigimages, указанный как пара, разделенная запятыми, состоящая из 'OutputFolder' и false или true. Параллельная обработка требует Toolbox™ параллельных вычислений.
'PadMethod' - Способ прокладки'replicate' | 'symmetric'Метод подушки неполных блоков кромок, определяемый как разделенная запятыми пара, состоящая из 'PadMethod' и одно из этих значений. По умолчанию apply подушечки числовые блоки с 0 и категориальные блоки с missing.
Стоимость | Значение |
|---|---|
числовой скаляр | Матричный числовой массив с элементами постоянного значения. |
| строковый скаляр | Категориальный массив Pad с указанным классом в свойстве Classes |
| Прокладка путем повторения граничных элементов массива. |
| Массив подушек с зеркальными отражениями самого себя. |
'PadPartialBlocks' - Частичные колодкиfalse (по умолчанию) | trueЧастичные блоки площадки, указанные как разделенная запятыми пара, состоящая из 'PadPartialBlocks' и false или true. Частичные блоки возникают, когда размер изображения не в точности делится на BlockSize. Если они существуют, то частичные блоки располагаются вдоль правого и нижнего края изображения.
Набор PadPartialBlocks кому true когда BatchSize больше 1.
Типы данных: logical
'UseParallel' - Использовать параллельную обработкуfalse (по умолчанию) | trueИспользуйте параллельную обработку, указанную как разделенная запятыми пара, состоящая из 'UseParallel' и false или true. Для параллельной обработки требуется панель инструментов Parallel Computing Toolbox.
При указании UseParallel как trueзатем MATLAB ® автоматически открывает параллельный пул на основе настроек по умолчанию .apply обрабатывает bigimage блокирует доступные рабочие. DataSource свойство всех входных данных bigimages должны быть действительными путями для каждого из параллельных работников. Если используются относительные пути, убедитесь, что работники и клиентский процесс находятся в одном рабочем каталоге. Если работники не используют ту же файловую систему, что и клиентский процесс, укажите OutputFolder.
Типы данных: logical
newbig - Обработанное большое изображениеbigimage объектОбработанное большое изображение, возвращенное как bigimage с одним уровнем разрешения. Количество строк и столбцов newbig равно количеству строк и столбцов входного большого изображения bigimg при заданном разрешении level. Однако newbig может иметь различное количество каналов и различный базовый класс.
other - Дополнительный выходbigimage объект | таблица | массив ячеекДополнительный вывод из функции обработки fun, возвращенный как один из следующих. Если fun возвращает несколько выходных аргументов, затем apply может возвращать столько же или меньше выходных аргументов.
Стоимость | Возникновение |
|---|---|
|
Возвращенный |
стол |
|
массив ячеек |
|
apply передает данные в функцию обработки, fun, один блок за один раз в наиболее эффективном порядке для прохождения данных (часто порядок основной строки). apply обрабатывает каждый блок только один раз.
Неэффективно выполнять множество операций обработки, выполняя несколько вызовов для apply поскольку данные должны проходить несколько раз. Для оптимизации времени обработки определите fun таким образом, он выполняет множество операций обработки. Это минимизирует затраты на чтение и запись и обеспечивает локальность данных. Можно дополнительно сократить время обработки на определенном уровне, используя маски, созданные на более высоких уровнях разрешения, чтобы исключить области изображения из обработки.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.