exponenta event banner

Сегментировать изображение и создать маску с помощью приложения «Пороговое значение цвета»

В этом примере показано, как сегментировать изображение и создавать двоичное изображение маски с помощью приложения «Цветовой порог». Пример сегментирует передний план (перцы) от фона (пурпурная ткань) на основе значений цвета.

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

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

Открыть изображение в формирователе цветовых порогов

Считывание цветного изображения в рабочую область.

rgb = imread('peppers.png');

Откройте приложение «Пороговые значения цвета» на панели инструментов MATLAB. На вкладке «Приложения» в разделе «Обработка изображений и компьютерное зрение» выберите «Пороговое значение цвета».

Загрузите изображение в приложение «Цветовой порог». Нажмите кнопку «Загрузить изображение» и выберите команду «Загрузить изображение из рабочей области». В диалоговом окне «Импорт из рабочей области» выберите изображение из рабочей области и нажмите кнопку «ОК».

Вы также можете открыть приложение из командной строки с помощью colorThresholder , указывая имя изображения: colorThresholder(rgb);. Вы также можете получить изображение Получить живые изображения в приложении Цветовой порог.

Приложение Color Thresholder отображает изображение на вкладке «Выбор цветового пространства» с облаками точек, представляющими изображение в этих цветовых пространствах: RGB, HSV, YCbCr и L * a * b *. Для цветовой сегментации выберите цветовое пространство, обеспечивающее наилучшее цветоделение. С помощью мыши поверните представления облака точек, чтобы увидеть, как они изолируют отдельные цвета. Сегментация с помощью приложения Color Thresholder может быть итеративным процессом - попробуйте несколько различных цветовых пространств, прежде чем вы достигнете сегментации, соответствующей вашим потребностям. Для этого примера запустите процесс, выбрав цветовое пространство YCbCr.

Сегмент изображения YCbCr в приложении «Цветовой порог»

При выборе цветового пространства приложение открывает новую вкладку, отображая изображение вместе с набором элементов управления для каждого цветового компонента и представления облака точек. Параметры управления цветом зависят от цветового пространства. Для цветового пространства YCbCr приложение Color Thresholder отображает три гистограммы, представляющие три цветовых компонента: Y-компонент представляет яркость, Cb-компонент представляет сине-желтый спектр, а Cr-компонент представляет красно-зеленый спектр.

Для просмотра изображения наведите курсор на изображение, чтобы получить доступ к элементам управления панорамированием и зумированием.

Автоматическое пороговое значение

Сначала сегментируйте изображение с помощью автоматического порогового значения. Поскольку цвет фона (пурпурная ткань) близок к однородному цвету, сегментируйте его, а не объекты переднего плана (перцы). Впоследствии маску всегда можно инвертировать с помощью параметра «Инвертировать маску».

Определите область с помощью инструмента окупаемости инвестиций. Нажмите кнопку в левом верхнем углу изображения и нарисуйте окупаемость инвестиций на фоне. Можно нарисовать несколько областей.

После рисования области приложение «Пороговые значения цвета» автоматически устанавливает пороговые значения для изображения на основе цветов, выбранных в области рисования. Элементы управления цветом Y, Cb и Cr изменяются для отражения сегментации. Это автоматическое установление пороговых значений не создает чистой сегментации фона и переднего плана, особенно на нижней границе между передним и задним планом. В этом примере цвет фона светлее в нижней части изображения. Если требуется удалить нарисованную область и начать сначала, щелкните правой кнопкой мыши в любом месте области и выберите «Удалить произвольный».

Уточнение автоматического порогового значения с помощью элементов управления цветом

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

Пороговые значения цвета изображения с помощью облака точек

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

На панели инструментов приложения щелкните Сбросить пороговые значения, чтобы вернуться к исходному изображению. В правой нижней части окна приложения щелкните и перетащите облако точек, чтобы повернуть его до тех пор, пока не будет изолировано представление цвета, для которого требуется установить пороговый уровень. Нажмите кнопку в левом верхнем углу облака точек. Приложение Color Thresholder преобразует облако точек 3-D в 2-D представление и активирует инструмент окупаемости инвестиций в полигон. Нарисуйте ROI вокруг цвета, который требуется сегментировать (фиолетовый). Этот метод может создать лучшую сегментацию, чем начальный подход автоматического пороговой обработки.

Изображение сегмента в другом цветовом пространстве

Чтобы сегментировать изображение в другом цветовом пространстве, щелкните Создать цветовое пространство на панели инструментов приложения. На вкладке «Выбор цветового пространства» выберите цветовое пространство HSV.

Приложение Color Thresholder создает новую вкладку, отображающую изображение и элементы управления цветовым компонентом для цветового пространства HSV. В этом цветовом пространстве H представляет оттенок, S - насыщенность, а V - значение. Цветовое пространство HSV использует двунаправленную ручку для компонента H и два ползунка гистограммы для компонентов S и V. Вкладка также содержит представление цветов изображения в облаке точек.

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

Создание маскирующего изображения с помощью приложения-формирователя цветовых порогов

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

Поскольку пример сегментировал фон (фиолетовую ткань), а не объекты переднего плана (перцы), поменяйте местами передний и задний план, нажав кнопку «Инвертировать маску».

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

Сохраните изображение маски в рабочей области. На панели инструментов маски нажмите «Экспорт» и выберите «Экспорт изображений».

В диалоговом окне «Экспорт в рабочее пространство» укажите имена переменных для изображения двоичной маски. Можно также сохранить исходное входное изображение RGB и сегментированную версию исходного изображения.

Чтобы сохранить код MATLAB, необходимый для повторного создания сегментации, щелкните Экспорт (Export) и выберите Экспортировать функцию (Export Function). Приложение Color Thresholder открывает редактор MATLAB с кодом, создающим сегментацию. Для сохранения кода нажмите кнопку «Сохранить» на панели инструментов редактора MATLAB. Этот код можно запустить, передав ему изображение RGB, чтобы создать такое же изображение маски программным способом.

function [BW,maskedRGBImage] = createMask(RGB)
%createMask  Threshold RGB image using auto-generated code from colorThresholder app.
%  [BW,MASKEDRGBIMAGE] = createMask(RGB) thresholds image RGB using
%  auto-generated code from the colorThresholder App. The colorspace and
%  minimum/maximum values for each channel of the colorspace were set in the
%  App and result in a binary mask BW and a composite image maskedRGBImage,
%  which shows the original RGB image values under the mask BW.

% Auto-generated by colorThresholder app on 22-Jun-2016
%------------------------------------------------------


% Convert RGB image to chosen color space
I = rgb2hsv(RGB);

% Define thresholds for channel 1 based on histogram settings
channel1Min = 0.713;
channel1Max = 0.911;

% Define thresholds for channel 2 based on histogram settings
channel2Min = 0.049;
channel2Max = 0.971;

% Define thresholds for channel 3 based on histogram settings
channel3Min = 0.005;
channel3Max = 1.000;

% Create mask based on chosen histogram thresholds
sliderBW = (I(:,:,1) >= channel1Min ) & (I(:,:,1) <= channel1Max) & ...
    (I(:,:,2) >= channel2Min ) & (I(:,:,2) <= channel2Max) & ...
    (I(:,:,3) >= channel3Min ) & (I(:,:,3) <= channel3Max);
BW = sliderBW;

% Invert mask
BW = ~BW;

% Initialize output masked image based on input image.
maskedRGBImage = RGB;

% Set background pixels where BW is false to zero.
maskedRGBImage(repmat(~BW,[1 1 3])) = 0;

end

См. также