В этом примере показано, как сегментировать изображение, чтобы создать бинарный рисунок маски с помощью приложения Color Thresholder. Пример имеет несколько частей. Первая часть показывает, как открыть изображение в Color Thresholder. Следующая часть примера показывает, как использовать опцию выбора цвета, чтобы сегментировать изображение автоматически. Следующая часть показывает итерационный подход для пороговой обработки с помощью средств управления компонентом цвета. Сегментация цветной пороговой обработкой является итеративным процессом — можно выполнить начальную сегментацию с помощью выбора цвета и затем совершенствовать ту сегментацию с помощью средств управления компонентом цвета. Последняя часть этого примера показывает то, что можно сделать после того, как вы завершаете сегментацию. Можно создать рисунок маски, сохранить сегментированную версию оригинального изображения, и использовать код MATLAB®, чтобы выполнить сегментацию.
Изображение сегмента Используя выбор цвета в цвете Thresholder
Изображение сегмента Используя средства управления компонентом цвета в цвете Thresholder
В этом примере показано, как открыть изображение в приложении Color Thresholder. Когда вы сначала открываете приложение, необходимо выбрать цветовое пространство, чтобы использовать, чтобы представлять компоненты цвета изображения. Выберите цветовое пространство, где цвета, вы интересуетесь сегментацией, появляются друг около друга в цветовой модели. Можно всегда изменять цветовое пространство, которое вы выбираете позже, с помощью New Color Space.
Откройте приложение Color Thresholder. От панели инструментов MATLAB откройте вкладку Apps и под Image Processing and Computer Vision, щелкните. Можно также открыть приложение с помощью colorThresholder
команда.
Принесите изображение в приложение Color Thresholder. Нажмите Load Image. Можно загрузить изображение путем определения его имени файла, или можно считать изображение в рабочую область и загрузить переменную. Можно также получить изображение от камеры (см., Получают Живые Изображения в Приложении Color Thresholder).
В данном примере считайте цветное изображение в рабочее пространство MATLAB и просмотрите его.
rgb = imread('peppers.png');
imshow(rgb)
В меню Load Image приложения нажмите Load Image from Workspace. В диалоговом окне Import from Workspace выберите переменную, которую вы создали, и нажмите OK.
Выберите цветовое пространство, вы хотите представлять компоненты цвета в своем изображении. Когда это открывается, отображения приложения Color Thresholder изображение на вкладке Choose a Color Space, с облаками точек, представляющими изображение в нескольких популярных цветовых пространствах: RGB, HSV, YCbCr и L*a*b*. Выберите цветовое пространство, которое обеспечивает лучшее цветоделение для сегментации. Используя мышь, вращайте представления облака точек, чтобы видеть, как они представляют цвета. В данном примере кликните по цветовому пространству YCbCr.
Приложение открывается, отображая изображение наряду с набором средств управления для каждого компонента цвета. Для цветового пространства YCbCr Color Thresholder отображает три гистограммы, представляющие компоненты цвета изображения. В этом цветовом пространстве компонент Y представляет яркость, компонент Cb представляет сине-желтый спектр, и компонент Cr представляет красно-зеленый спектр. Другие цветовые пространства используют различные типы средств управления. Кроме того, Color Thresholder включает представление облака точек цветов в изображении в цветовом пространстве YCbCr. Можно выполнить сегментации путем захвата указателей в каждом конце гистограмм и перемещения их через спектр значений. Можно также вращать цветное облако, чтобы найти лучшую изоляцию цвета, вы интересуетесь сегментацией.
Эта часть примера показывает, как сегментироваться, изображение автоматически выбором раскрашивает изображение. При использовании этой опции вы чертите область от руки в изображении, чтобы выбрать цвет или на переднем плане или на фоне. Этот пример чертит область на фиолетовом фоне, чтобы сегментировать овощи происхождения. Можно чертить несколько областей. После того, как вы сегментируете свое изображение с помощью выбора цвета, можно уточнить результат с помощью средств управления отдельным цветовым компонентом. Смотрите, что Изображение Сегмента Использует Средства управления Компонентом цвета в цвете Thresholder.
Чтобы сегментировать изображение автоматически на основе выбора цвета, нажмите кнопку, чтобы чертить область на изображении. Когда вы перемещаете курсор через изображение, курсор превращается в форму перекрестия. Перетащите курсор по изображению, чтобы чертить области, чтобы задать цвета, которые вы хотите сегментировать. Можно чертить несколько областей. Если вы хотите удалить область, вы чертили, и запустите, щелкните правой кнопкой по линии, которую вы провели, и выберите Delete.
После рисования областей Color Thresholder автоматически пороги изображение на основе цветов вы выбрали в области, которую вы чертили. Управления цветом изменяются, чтобы отразить сегментацию. Эта автоматическая сегментация не создала четко определенное ребро между передним планом и фоном. Цвет фона легче около нижней части изображения. Можно совершенствовать пороговую обработку путем перемещения средств управления.
Эта часть примера показывает, как использовать приложение Color Thresholder, чтобы сегментировать изображение в интерактивном режиме с помощью средств управления компонентом цвета. Сегментация с помощью Color Thresholder является итеративным процессом — вы можете должны быть попробовать несколько различных цветовых пространств, прежде чем вы достигнете сегментации, которая удовлетворяет ваши потребности. Можно также выполнить начальную сегментацию автоматически с помощью опции выбора цвета и затем уточнить результаты с помощью средств управления компонентом цвета. Смотрите, что Изображение Сегмента Использует Выбор цвета в цвете Thresholder.
Сегментируйте изображение в интерактивном режиме с помощью средств управления компонентом цвета. Например, используйте ползунки гистограммы, чтобы выбрать цвета, сопоставленные с каждой гистограммой. Вы видите происходящую сегментацию. В данном примере перемещение ползунка на компоненте Y оказывает самое большое влияние на сегментацию изображения. В этом случае вы сегментируете передний план, но можно инвертировать сегментацию, когда вы сделаны. Используя средства управления, трудно достигнуть чистой сегментации фона без включения части изображения переднего раздела как показано в следующем рисунке. Восстановите сегментацию, использующую другое цветовое пространство.
Чтобы использовать другое цветовое пространство, нажмите New Color Space. Отображения приложения диалоговое окно Choose a color space снова.
Выберите новое цветовое пространство в диалоговом окне Choose a Color Space. В данном примере выберите цветовое пространство HSV. Color Thresholder создает новую вкладку, отображающую изображение и средства управления компонентом цвета для этого цветового пространства. HSV-цветовое пространство использует кнопку двойного направления в компоненте H и два ползунка гистограммы для компонентах V и S. В этом цветовом пространстве H обозначает оттенок, S для насыщения и V для значения. Вкладка также содержит представление облака точек цветов в изображении.
Когда вы сделали прежде с цветовым пространством YCbCr, используйте средства управления компонентом цвета, чтобы сегментировать изображение в интерактивном режиме. Когда вы используете средства управления, вы видите происходящую сегментацию. Используя мышь, захватите один из указателей на управлении H и переместите его в направлении стрелы. Экспериментируйте со средствами управления, пока у вас не будет чистого разделения фона от переднего плана. В этом цветовом пространстве можно достигнуть хорошей сегментации с помощью управления H как показано в следующем рисунке. Можно очистить маленькие недостатки после того, как вы создадите рисунок маски с помощью других функций тулбокса, таких как морфологические операторы. Для получения информации о сохранении вашего сегментированного образа смотрите, Создают Маску Изображений Используя Color Thresholder.
Эта часть примера показывает, как создать рисунок маски после сегментации. Можно также получить сегментированное изображение, и код MATLAB раньше создавал рисунок маски.
После сегментации переднего плана, можно подкачать передний план и фон путем нажатия на Invert Mask. Инвертирование маски может быть полезным, когда, например, легче получить чистое разделение, работающее с передним планом, но вы хотите маску переднего плана. Выполните сегментацию переднего плана, и затем инвертируйте маску.
Просмотрите бинарный рисунок маски, который вы создали путем нажатия на Show Binary.
Чтобы сохранить рисунок маски в рабочей области, когда вы удовлетворены сегментацией, нажимают Export и выбирают опцию Export Images.
В диалоговом окне Export to Workspace задайте имя переменных для бинарного рисунка маски. Можно также сохранить оригинальный образ и сегментированную версию оригинального изображения.
Чтобы сохранить код MATLAB, требуемый воссоздать сегментацию, вы только выполнили, нажмите Export и выберите Export Function. Приложение Color Thresholder открывает редактор MATLAB с кодом, который создает сегментацию. Чтобы сохранить код, нажмите Save в редакторе 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