Обработка папки изображений с использованием приложения Image Batch Processor

В этом примере показано, как использовать приложение Image Batch Processor для обработки группы изображений в той же папке.

Создайте новую папку в области, где у вас есть разрешение на запись, и скопируйте набор из 10 изображений из Image Processing Toolbox imdata папка в новую папку.

mkdir('cellprocessing');
copyfile(fullfile(matlabroot,'toolbox','images','imdata','AT3*.tif'),'cellprocessing','f');

Загрузка изображений в приложение для пакетного обработки изображений

Откройте приложение Image Batch Processor с панели инструментов MATLAB ®. На вкладке Приложения, в разделе Обработка изображений и Компьютерное зрение, нажмите Image Batch Processor.

Загрузите изображения в приложение. На панели инструментов приложения нажмите Загрузить изображения. В диалоговом окне Загрузка изображений из папки укажите папку, содержащую изображения, которые вы хотите загрузить. В данном примере укажите папку, которую вы создали на первом шаге, cellprocessing. По умолчанию приложение включает изображения в подпапках. Чтобы изменить это поведение, снимите флажок Включить изображения в подпапки. Затем нажмите кнопку Загрузка.

Приложение Image Batch Processor создает миниатюры изображений в папке и отображает их на прокручиваемой вкладке в левой панели. Приложение отображает первое выбранное изображение (выделенное синим цветом) с большим разрешением на вкладке «Входное изображение» в правой панели.

Настройка функции пакетной обработки

Укажите имя функции, которую вы хотите использовать для обработки изображений в папке. Чтобы указать существующую функцию, введите имя в поле Имя функции в разделе Пакетная функция на панели инструментов приложения. Вы также можете кликнуть значок папки рядом с полем, чтобы просмотреть и выбрать функцию. Чтобы создать новую функцию пакетной обработки, щелкните Создать в разделе Пакетная функция на панели инструментов приложения. Когда вы делаете это, приложение открывает шаблон функции пакетной обработки в редакторе MATLAB ®. В данном примере нажмите New, чтобы создать новую функцию .

В шаблоне функции пакетной обработки введите код новой функции в пространство, зарезервированный в файле шаблона, и нажмите Сохранить. В этом примере используется имя по умолчанию для функции пакетной обработки myimfcn, но можно задать любое имя. В данном примере код задает функцию, которая создает масковое изображение, вычисляет общее количество камер в изображении и создает пороговую версию оригинального изображения.

function results = myimfcn(im)
%Image Processing Function
%
% IM      - Input image.
% RESULTS - A scalar structure with the processing results.
%

%--------------------------------------------------------------------------
% Auto-generated by imageBatchProcessor App. 
%
% When used by the App, this function will be called for every input image
% file automatically. IM contains the input image as a matrix. RESULTS is a
% scalar structure containing the results of this processing function.
%
%--------------------------------------------------------------------------

imstd = stdfilt(im,ones(27));
bw    = imstd>30;

thresholdMask = imfuse(im, bw);
[~, n] = bwlabel(bw);

results.bw = bw;
results.thresholdMask = thresholdMask;
results.numCells = n;
end

Сохраните файл. После сохранения приложение отображает имя этой новой функции в поле Имя функции на панели инструментов приложения.

Обработка изображений с помощью функции пакетной обработки

Протестируйте новую функцию, запустив пакетный процессор на одном из ваших изображений. Когда выбрано одно изображение (выделено синим цветом), нажмите Process Selected, чтобы обработать выбранное изображение. Приложение отображает результаты обработки на новой вкладке Результаты. В данном примере приложение отображает двоичную маску, количество объектов (камер) в изображении и пороговую версию изображения.

Чтобы получить более близкое представление результатов изображения, щелкните Показом для этого конкретного результата на вкладке Результаты. Приложение открывает версию изображения с большим разрешением на новой вкладке в нижней центральной панели. В данном примере просмотрите результаты двоичной маски, нажав Показать для bw на вкладке Результаты. Чтобы исследовать результаты, наведите курсор на изображение, чтобы получить доступ к элементам управления панорамированием и масштабированием. При масштабировании и панорамировании приложение связывает изображение результата с оригинальным изображением - панорамирование или масштабирование одного изображения заставляет другое изображение также перемещаться. Если вы не хотите этого поведения, очистите Link Axes на панели инструментов приложения.

Если результаты тестового запуска на одном изображении успешны, выполните функцию на всех изображениях в папке. Чтобы обработать все изображения сразу, на панели инструментов приложения, нажмите Process Selected и выберите Process All. Чтобы обработать только подмножество изображений, нажмите Process Selected. Можно выбрать изображения для обработки либо путем нажатия Ctrl и щелчка по желаемым изображениям, либо щелчком одного изображения, чтобы начать, нажатием Сдвига и щелчком другого изображения, чтобы выбрать все изображения между начальным и конечным изображениями. Если у вас есть Parallel Computing Toolbox™, можно нажать Использовать Parallel на панели инструментов приложения, чтобы обработать изображения в локальном параллельном пуле. В данном примере обработайте все изображения.

Приложение обрабатывает все изображения в указанной папке. Заполненный зеленый квадрат рядом с миниатюрой указывает, что приложение успешно обработало это изображение. Вкладка Результаты (Results) содержит результаты выбранного изображения (выделено синим цветом). Строка состояния в правом нижнем углу приложения сообщает о количестве обработанных изображений.

Экспорт обработанных изображений и конвейера обработки

Чтобы сохранить результаты, нажмите кнопку Экспорт, чтобы просмотреть доступные опции. Можно экспортировать результаты в рабочую область или в файл, или получить код MATLAB ®, используемый приложением для генерации результатов.

Сохраните результаты в переменной рабочей области. На панели инструментов приложения нажмите Экспорт и выберите Экспорт результата всех обработанных изображений в опцию рабочей области. В открывшемся диалоговом окне выберите результаты, которые необходимо экспортировать. Общим подходом является экспорт результатов неизображение в рабочую область и сохранение изображений, которые являются результатом обработки в файлах. Этот пример сохраняет количество камер вместе с именем входного файла в переменную рабочей области numCells.

По умолчанию приложение возвращает результаты, выбранные в таблице с именем allresults. Чтобы сохранить результаты в структуре вместо таблицы, выберите «Массив структур» в разделе «Выбор формата» диалогового окна. Чтобы задать другое имя для переменной результата, измените Имя Переменной в диалоговом окне. Если вы выбираете Включить вход имя файла изображения, приложение включает имя изображения, сопоставленного с результатами в структуре или таблице. После определения сведений об экспорте нажмите кнопку ОК.

Чтобы получить код MATLAB ®, который приложение использовало для обработки ваших файлов, на панели инструментов приложения нажмите Экспортировать и выберите функцию Сгенерировать. Приложение генерирует функцию, которая принимает имя папки входа и имя папки выхода в качестве входных параметров. По умолчанию функция возвращает таблицу с результатами, но вместо этого можно выбрать структуру. Для результатов изображения можно задать формат файла и хотите ли вы, чтобы функция записывала изображение в указанную выходную папку .