В этом примере показано, как сегментировать изображение и создавать двоичное изображение маски с помощью приложения «Цветовой порог». Пример сегментирует передний план (перцы) от фона (пурпурная ткань) на основе значений цвета.
В приложении Color Thresholder сегментация изображения может быть итеративным процессом. Например, попробуйте сегментировать изображение в нескольких цветовых пространствах, поддерживаемых приложением, поскольку одно цветовое пространство может изолировать определенный цвет лучше другого. В любом из поддерживаемых цветовых пространств можно сначала выполнить автоматическую сегментацию, выбрав область на переднем плане или на заднем плане. Затем можно уточнить сегментацию с помощью элементов управления цветовыми компонентами, предоставляемых приложением.
В последней части этого примера показано, как сохранить результаты работы, создать изображение маски и получить код MATLAB ®, используемый приложением для выполнения сегментации.
Считывание цветного изображения в рабочую область.
rgb = imread('peppers.png');Откройте приложение «Пороговые значения цвета» на панели инструментов MATLAB. На вкладке «Приложения» в разделе «Обработка изображений и компьютерное зрение» выберите «Пороговое значение цвета».

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

Вы также можете открыть приложение из командной строки с помощью colorThresholder , указывая имя изображения: colorThresholder(rgb);. Вы также можете получить изображение Получить живые изображения в приложении Цветовой порог.
Приложение Color Thresholder отображает изображение на вкладке «Выбор цветового пространства» с облаками точек, представляющими изображение в этих цветовых пространствах: RGB, HSV, YCbCr и L * a * b *. Для цветовой сегментации выберите цветовое пространство, обеспечивающее наилучшее цветоделение. С помощью мыши поверните представления облака точек, чтобы увидеть, как они изолируют отдельные цвета. Сегментация с помощью приложения Color Thresholder может быть итеративным процессом - попробуйте несколько различных цветовых пространств, прежде чем вы достигнете сегментации, соответствующей вашим потребностям. Для этого примера запустите процесс, выбрав цветовое пространство 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