apply

Блоки процесса блокированного изображения

Описание

пример

bres = apply(bim,fcn) обрабатывает целое блокированное изображение bim путем применения указателя на функцию fcn с каждым блоком. Возвращает bres, новое блокированное изображение, содержащее обработанные данные.

[bres1,bres2,...] = apply(bim,fcn) возвращает несколько выходных аргументов. Заданный указатель на функцию, fcn, должен указать на функцию пользователя, которая возвращает то же количество аргументов.

[bres1s,bres2s,...] = apply(bims,fcn) обрабатывает массив блокированных изображений bims путем применения указателя на функцию fcn с каждым блоком каждого блокированного изображения. Возвращает массив блокированных изображений, содержащих обработанные данные.

[___] = apply(___,Name,Value) изменяет аспекты обработки блока с помощью аргументов name-value.

Примеры

свернуть все

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

bim = blockedImage("tumor_091R.tif");

Создайте фильтр сглаживания и примените его к блокам в блокированном изображении.

smoothing = 2000;

imguidedfilter работает с окружением по умолчанию 5 пикселей. Добавьте границу во вход, чтобы считать дополнительные данные. Это краевые элементы изображения автоматически обрезаются от выхода, поскольку он одного размера с входом.

benh= apply(bim,...
    @(bs)imguidedfilter(bs.Data,bs.Data,"DegreeOfSmoothing", smoothing),...
    "BorderSize", [5 5]);

Отобразите оригинальное изображение и улучшенное изображение.

ha1 = subplot(1,2,1);
bigimageshow(bim,"ResolutionLevel",1);
ha2 = subplot(1,2,2);
bigimageshow(benh);
linkaxes([ha1, ha2]);
xlim([2100, 2600])
ylim([1800 2300])

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

bim = blockedImage("tumor_091R.tif");

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

bmask = apply(bim, @(bs)rgb2gray(bs.Data)<80, "Level",3);
figure
bigimageshow(bmask)

Используйте маску, чтобы ограничить области, обработанные вызовом apply объектная функция.

bls = selectBlockLocations(bim, "Mask", bmask,"InclusionThreshold", 0.005);
benh = apply(bim, @(bs)imguidedfilter(bs.Data,bs.Data,"DegreeOfSmoothing", 2000),...
    "BorderSize", [5 5],...
    "BlockLocationSet", bls); 

Отобразите оригинальное изображение и улучшенное изображение.

figure
ha1 = subplot(1,2,1);
bigimageshow(bim,"ResolutionLevel",1);
ha2 = subplot(1,2,2);
bigimageshow(benh);
linkaxes([ha1, ha2]);      

Создайте набор файла всех изображений JPEG в демонстрационной папке изображений тулбокса.

fs = matlab.io.datastore.FileSet( ...
    fullfile(matlabroot,"toolbox","images","imdata"), ...
    "FileExtensions",".jpg");

Создайте массив блокированных изображений от набора файла.

bims = blockedImage(fs);

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

outputFolder = tempname;
outputAdapter = images.blocked.GenericImage;
outputAdapter.Extension = "jpg";

Преобразуйте изображения в бинарные изображения на диске.

bos = apply(bims, @(b)imbinarize(im2gray(b.Data)), ...
    "OutputLocation",outputFolder,"Adapter",outputAdapter);

Просмотрите содержимое выходной папки с помощью приложения Image Browser путем выполнения этой команды: imageBrowser(outputFolder)

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

свернуть все

Блокированное изображение в виде blockedImage объект.

Блокированные изображения в виде массива blockedImage объекты.

Обработка функции в виде указателя на функцию. Для получения дополнительной информации см. Создание указателя на функцию. Функция обработки fcn должен принять bstruct как введено. Чтобы передать дополнительные аргументы, задайте fcn как анонимная функция. Для получения дополнительной информации см. Анонимные функции.

bstruct struct с этими полями:

Поле Описание
DataБлок данных от bim
StartИндексы первого элемента в блоке. Если BorderSize задан, этот индекс может выйти за пределы для блоков ребра.
EndИндексы последнего элемента в блоке. Если BorderSize задан, этот индекс может выйти за пределы для блоков ребра.
BlocksubБлокируйте индексы текущего блока
BorderSizeЗначение BorderSize параметр.
BlockSizeЗначение BlockSize параметр. Примечание: size(data) может быть меньше этого значения для блоков границы когда PadPartialValue является ложным.
BatchSizeЗначение BatchSize параметр
ImageNumberИндексируйте в bim массив для текущего изображения.
LevelУровень разрешения, из которого считываются данные.

Функциональный fcn обычно возвращает результаты для одного блока. Результаты могут быть числовыми, struct, или categorical.

Аргументы name-value

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

Пример: "Level",3

Адаптер используется для записи блокированных данных изображения в виде объекта адаптера. Чтобы задать различные адаптеры для различных выходных параметров, используйте массив ячеек. Скалярные значения расширены.

Эта таблица приводит адаптеры, включенные с тулбоксом.

АдаптерОписание
BINBlocksСохраните каждый блок как двоичный файл в папке
GenericImage Сохраните блоки в одном изображении
GenericImageBlocksСохраните каждый блок как файл изображения в папке
H5Сохраните блоки в одном изображении HDF5
H5BlocksСохраните каждый блок как файл HDF5 в папке
InMemoryСохраните блоки в переменной в оперативной памяти
JPEGBlocksСохраните каждый блок как файл JPEG в папке
MATBlocksСохраните каждый блок как файл MAT в папке
PNGBlocksСохраните каждый блок как файл PNG в папке
TIFFСохраните блоки в одном файле TIFF

Можно также задать пользовательский адаптер, который выполняет пользовательские операции записи. Для получения дополнительной информации смотрите images.blocked.Adapter.

Количество блоков, предоставленных обработке, функционирует fcn в каждом пакете в виде числового скаляра. BatchSize последняя размерность входа к fcn. Все выходные параметры fcn должен иметь последнюю размерность совпасть с BatchSize. BatchSize больше, чем 1 полезно, чтобы оптимально загрузить графические процессоры при применении вызовов вывода глубокого обучения. Когда BatchSize больше 1, PadPartialBlocks должен быть true.

Набор блоков к процессу в виде blockLocationSet объект. ImageNumber свойство индексирует в bims массив. Определение блоков к процессу может повысить эффективность путем ограничения количества обработанных блоков. Например, используйте selectBlockLocations с маской, чтобы ограничить применение обработки функционируют в определенные области. Содержавшие блоки должны быть на обычной сетке.

Размер блока в виде вектора с целочисленным знаком из длины равняется NumDimensions свойство bim. Задает размер блока, предоставленного как вход fcn. Если BlockSize содержит меньше элементов, apply возразите, что функция заполняет недостающие размерности элементами от Size свойство.

Ограничьте размер в виде вектора с целочисленным знаком из длины, равной NumDimensions свойство bim. Задает дополнительные данные из соседней области, которая будет включена в блок. Для блоков ребра, apply возразите, что функция использует 'PadMethod'. Если BorderSize содержит меньше элементов, apply возразите, что функция заполняет границу с 0s.

Отобразитесь ожидают панель в виде логического скаляра. Когда установлено в true, apply возразите, что функция отображает панель ожидания для продолжительных операций. Если вы отменяете панель ожидания, apply объектная функция возвращает частичный выходной параметр при наличии.

Типы данных: логический

Дополнительные входные параметры к fcnВ виде массива blockedImage объекты. Блоки из этого массива предоставляются fcn как дополнительные входные параметры после bstruct: __ = fcn(bstruct, extrablock1,...). Применять объектная функция извлекает эти блоки из того же региона мира как основной блок из bim, представленный в bstruct.

Уровень разрешения в виде вектора из целых чисел той же длины как 'ExtraImages'. Каждое значение задает уровень разрешения, чтобы использовать от соответствующего blockedImage объект в ExtraImages.

Уровень разрешения, чтобы использовать в виде целочисленного скаляра. Для мультиразрешения blockedImage объект, это значение определяет уровень разрешения, чтобы использовать, чтобы получить блоки для обработки.

Местоположение выходной папки в виде string скаляр или char вектор. Если существует один выход, apply возразите, что функция пишет его непосредственно в это местоположение. Для нескольких выходных параметров, apply объектная функция создает подпапки формата output<N>/ для N 'th выход. Если вход является массивом, apply объектная функция выводит выходное имя из Source свойство соответствующего элемента. Если вход в оперативной памяти, apply возразите, что функция использует числовой индекс. Когда свойством UseParallel является true, OutputLocation должен быть допустимый путь на клиентском сеансе. Используйте свойство AlternateFileSystemRoots входа задать необходимое отображение для сеансов рабочего. Все выходные параметры наследовали это значение.

Заполните метод неполных блоков ребра в виде одного из этих значений. Метод задает, как получить дополнительные пиксели, чтобы соблюдать 'BorderSize' или 'PadPartialBlocks' параметры.

Значение

Значение

числовой скаляр

Заполните числовой массив элементами постоянного значения типа, заданного ClassUnderlying свойство блокированного изображения.

'replicate'

Клавиатура путем повторения элементов границы массива.

Заполните частичные блоки в виде логического скаляра. Задает, должны ли частичные блоки, которые могут существовать на ребрах, быть увеличены к заданному размеру блока. Применять объектная функция использует метод, заданный в PadMethod выполнять дополнительную операцию.

  • Когда false, функция обработки fcn работает с частичными блоками, не дополняя и может возвратить блоки, меньшие, чем BlockSize.

  • Когда true, apply функционируйте заполняет частичные блоки с помощью заданного PadMethod. Функция обработки fcn работает с и возвращает полноразмерные блоки.

Когда BatchSize больше 1, установите PadPartialBlocks к true

Типы данных: логический

Продолжите обрабатывать от где предыдущий запуск, остановленный в виде логического скаляра. Если true, и заданный 'OutputLocation' имеет содержимое от предыдущего запуска, текущий запуск продолжит обрабатывать от где предыдущий остановленный запуск. Эта поддержка зависит от используемого выходного адаптера. Если false, apply объектная функция удаляет предыдущее содержимое.

Используйте параллельную обработку в виде логического скаляра. Определяет, должен ли новый или существующий параллельный пул использоваться. Если никакой параллельный пул не активен, новый пул открыт на основе параллельных настроек по умолчанию. Все адаптеры заданы Adapter свойство должно поддержать параллельную обработку. Необходимо задать допустимый OutputLocation. Этот аргумент требует Parallel Computing Toolbox™.

Типы данных: логический

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

свернуть все

Новое блокированное изображение, возвращенное как blockedImage объект.

Советы

  • apply объектная функция определяет выходной размер путем обработки первого блока. Если обработка первого блока дает к выходному блоку одного размера с входом, затем размер окончательного результата собирается совпадать с входом. В противном случае последний блок обрабатывается, чтобы определить размер окончательного результата. Первый блок не должен быть частичным блоком.

  • apply возразите, что функция устанавливает InitialValue свойство выхода на основе типа выхода:

    • Числовые или логические выходные параметры – InitialValue установлен в 0.

    • Категориальные выходные параметры – InitialValue установлен в <undefined> значение соответствующего типа.

    • struct выходные параметры InitialValue выведен из выхода первого блока. Все поля собираются опустеть.

Смотрите также

|

Введенный в R2021a