Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Segmentación de imágenes mediante la aplicación Umbral de color

En este ejemplo se muestra cómo segmentar una imagen para crear una imagen de máscara binaria mediante la aplicación Umbral de color. El ejemplo tiene varias partes. La primera parte muestra cómo abrir una imagen en el Umbral de color. La siguiente parte del ejemplo muestra cómo utilizar la opción de selección de color para segmentar la imagen automáticamente. La siguiente parte muestra un enfoque iterativo para el umbral mediante controles de componentes de color. La segmentación por umbral de color es un proceso iterativo: puede realizar una segmentación inicial mediante la selección de color y, a continuación, refinar esa segmentación mediante controles de componentes de color. La última parte de este ejemplo muestra lo que puede hacer después de completar la segmentación. Puede crear una imagen de máscara, guardar una versión segmentada de la imagen original y obtener el código utilizado para realizar la segmentación.MATLAB®

Abrir imagen en umbral de color

En este ejemplo se muestra cómo abrir una imagen en la aplicación Umbral de color. La primera vez que abra la aplicación, debe elegir el espacio de color que se utilizará para representar los componentes de color de la imagen. Elija el espacio de color en el que los colores que le interesan segmentan aparecen cerca uno del otro en el modelo de color. Siempre puede cambiar el espacio de color que elija más adelante, utilizando .New Color Space

Abra la aplicación Umbral de color. En la tira de herramientas , abra la pestaña Aplicaciones y, debajo, haga clic enMATLABImage Processing and Computer Vision. También puede abrir la aplicación mediante el comando.colorThresholder

Traiga una imagen a la aplicación Umbral de color. Haga clic.Load Image Puede cargar una imagen especificando su nombre de archivo o puede leer una imagen en el espacio de trabajo y cargar la variable. También puede adquirir una imagen de una cámara (consulte ).Adquirir imágenes en vivo en la aplicación Color Thresholder

En este ejemplo, lea una imagen de color en el espacio de trabajo y visualísela.MATLAB

rgb = imread('peppers.png');  imshow(rgb)

En el menú de la aplicación, haga clic en .Load ImageLoad Image from Workspace En el cuadro de diálogo Importar desde espacio de trabajo, seleccione la variable que ha creado y haga clic en .OK

Elija el espacio de color que desea representar los componentes de color en la imagen. Cuando se abre, la aplicación Umbral de color muestra la imagen en la pestaña, con nubes de puntos que representan la imagen en varios espacios de color populares:Choose a Color Space RGB, HSV, YCbCr y .L*a*b* Seleccione el espacio de color que proporciona la mejor separación de color para la segmentación. Con el ratón, gire las representaciones de nube de puntos para ver cómo representan los colores. Para este ejemplo, haga clic en el espacio de color YCbCr.

La aplicación se abre, mostrando la imagen junto con un conjunto de controles para cada componente de color. Para el espacio de color YCbCr, el Umbral de color muestra tres histogramas que representan los componentes de color de la imagen. En este espacio de color, el componente representa el brillo, el componente representa el espectro azul-amarillo y el componente representa el espectro rojo-verde.YCbCr Otros espacios de color utilizan diferentes tipos de controles. Además, el Umbral de color incluye la representación de nube de puntos de los colores de la imagen en el espacio de color YCbCr. Puede realizar segmentaciones agarrando los manejadores en cada extremo de los histogramas y moviéndolos a través del espectro de valores. También puede rotar la nube de color para encontrar el mejor aislamiento del color que le interesa segmentar.

Segmentar imagen usando el selector de color en Color Thresholder

Esta parte del ejemplo muestra cómo segmentar una imagen automáticamente seleccionando colores en la imagen. Con esta opción, se dibuja una región a mano alzada en la imagen para seleccionar un color en primer plano o en el fondo. En este ejemplo se dibuja la región en el fondo púrpura para segmentar las verduras del fondo. Puede dibujar varias regiones. Después de segmentar la imagen mediante la selección de color, puede refinar el resultado mediante los controles de componente de color individuales. Ver.Segmentar imagen mediante controles de componentes de color en el Umbral de color

Para segmentar la imagen automáticamente en función de una selección de color, haga clic en el botón para dibujar una región en la imagen. Al mover el cursor sobre la imagen, el cursor cambia a una forma de cruz. Arrastre el cursor sobre la imagen para dibujar regiones y especificar los colores que desea segmentar. Puede dibujar varias regiones. Si desea eliminar una región que dibujó y volver a empezar, haga clic con el botón derecho en la línea que dibujó y seleccione .Delete

Después de dibujar las regiones, el Umbral de color umbrala automáticamente la imagen en función de los colores seleccionados en la región que dibujó. Los controles de color cambian para reflejar la segmentación. Esta segmentación automática no creó una arista bien definida entre el primer plano y el fondo. El color de fondo es más claro cerca de la parte inferior de la imagen. Puede refinar el umbral moviendo los controles.

Segmentar imagen mediante controles de componentes de color en el Umbral de color

En esta parte del ejemplo se muestra cómo utilizar la aplicación Umbral de color para segmentar una imagen de forma interactiva mediante controles de componentes de color. La segmentación mediante el Umbral de color es un proceso iterativo: es posible que deba probar varios espacios de color diferentes antes de lograr una segmentación que satisfaga sus necesidades. También puede realizar una segmentación inicial automáticamente mediante la opción de selección de color y, a continuación, refinar los resultados mediante los controles de componente de color. Ver.Segmentar imagen usando el selector de color en Color Thresholder

Segmente la imagen de forma interactiva utilizando los controles del componente de color. Por ejemplo, utilice los controles deslizantes del histograma para seleccionar los colores asociados a cada histograma. Puede ver la segmentación en curso. En este ejemplo, mover el control deslizante en el componente tiene el mayor efecto en la segmentación de la imagen.Y En este caso, segmenta el primer plano, pero puede invertir la segmentación cuando haya terminado. Usando los controles, es difícil lograr una segmentación limpia del fondo sin incluir parte de la imagen en primer plano, como se muestra en la siguiente figura. Rehacer la segmentación utilizando otro espacio de color.

Para utilizar otro espacio de color, haga clic en .New Color Space La aplicación vuelve a mostrar el cuadro de diálogo.Choose a color space

Seleccione un nuevo espacio de color en el cuadro de diálogo Elegir un espacio de color. Para este ejemplo, elija el espacio de color.HSV El Umbral de color crea una nueva pestaña que muestra la imagen y los controles del componente de color para este espacio de color. El espacio de color HSV utiliza una perilla de doble dirección para el componente y dos controles deslizantes de histograma para los componentes.HSV En este espacio de color, significa matiz, saturación y valor.HSV La pestaña también contiene la representación de nube de puntos de los colores de la imagen.

Como hizo antes con el espacio de color YCbCr, utilice los controles del componente de color para segmentar la imagen de forma interactiva. A medida que utilice los controles, puede ver la segmentación en curso. Con el ratón, agarre uno de los tiradores del control y muévalo en la dirección de la flecha.H Experimente con los controles hasta que tenga una separación limpia del fondo del primer plano. En este espacio de color, puede lograr una buena segmentación mediante el control, como se muestra en la figura siguiente.H Puede limpiar pequeñas imperfecciones después de crear la imagen de máscara utilizando otras funciones de la caja de herramientas, como operadores morfológicos. Para obtener información sobre cómo guardar la imagen segmentada, consulte .Crear una máscara de imagen con el umbral de color

Crear una máscara de imagen con el umbral de color

Esta parte del ejemplo muestra cómo crear una imagen de máscara después de la segmentación. También puede obtener la imagen segmentada y el código utilizado para crear la imagen de máscara.MATLAB

Después de segmentar el primer plano, puede intercambiar el primer plano y el fondo haciendo clic en .Invert Mask Invertir la máscara puede ser útil cuando, por ejemplo, es más fácil obtener una separación limpia trabajando con el primer plano, pero desea una máscara del primer plano. Realice la segmentación del primer plano y, a continuación, invierta la máscara.

Vea la imagen de máscara binaria que ha creado haciendo clic en .Show Binary

Para guardar la imagen de máscara en el espacio de trabajo, cuando esté satisfecho con la segmentación, haga clic y elija la opción.ExportExport Images

En el cuadro de diálogo Exportar al espacio de trabajo, especifique el nombre de las variables para la imagen de máscara binaria. También puede guardar la imagen original y la versión segmentada de la imagen original.

Para guardar el código necesario para volver a crear la segmentación que acaba de realizar, haga clic y seleccione .MATLABExportExport Function La aplicación Umbral de color abre el Editor con el código que crea la segmentación.MATLAB Para guardar el código, haga clic en el Editor.SaveMATLAB Puede ejecutar este código, pasándole una imagen RGB y crear la misma imagen de máscara mediante programación.

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