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 con la aplicación color Thresholder

En este ejemplo se muestra cómo segmentar una imagen para crear una imagen de máscara binaria mediante la aplicación de 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 componente 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 de Thresholder 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 donde los colores que le interesan segmentan aparecen uno cerca del otro en el modelo de color. Siempre puede cambiar el espacio de color que elija más adelante, utilizando.New Color Space

Abre la aplicación color Thresholder. En la tira de herramientas, abra la pestaña Aplicaciones y, a continuación, 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 de Thresholder 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).Adquiera imágenes en vivo en la aplicación color Thresholder

Para este ejemplo, lea una imagen en color en el área de trabajo y la vea.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.OK

Elija el espacio de color al que desea representar los componentes de color de la imagen. Cuando se abre, la aplicación color Thresholder 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 nubes 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 en la 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.

Imagen de segmento mediante selector de color en el umbral de color

Esta parte del ejemplo muestra cómo segmentar una imagen automáticamente seleccionando los colores de la imagen. Con esta opción, se dibuja una región a mano alzada en la imagen para seleccionar un color en el primer plano o en el fondo. Este ejemplo dibuja la región en el fondo púrpura para segmentar los vegetales desde el fondo. Puede dibujar varias regiones. Después de segmentar la imagen mediante la selección de color, puede refinar el resultado utilizando los controles de componente de color individuales. Ver.Imagen de segmento mediante controles de componente 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 para especificar los colores que desea segmentar. Puede dibujar varias regiones. Si desea eliminar una región que dibujó y empezar de una vez, 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 umbrales automáticamente la imagen en función de los colores que seleccionó en la región que dibujó. Los controles de color cambian para reflejar la segmentación. Esta segmentación automática no crea 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.

Imagen de segmento mediante controles de componente de color en el umbral de color

Esta parte del ejemplo muestra cómo utilizar la aplicación de umbral de color para segmentar una imagen de forma interactiva mediante controles de componente de color. La segmentación con el umbral de color es un proceso iterativo: es posible que debas probar varios espacios de color diferentes antes de lograr una segmentación que satisfaga tus necesidades. También puede realizar una segmentación inicial automáticamente utilizando la opción de selección de color y, a continuación, refinar los resultados utilizando los controles de componente de color. Ver.Imagen de segmento mediante selector de color en el umbral de color

Segmenta la imagen de forma interactiva con los controles de componente de color. Por ejemplo, utilice los reguladores de histograma para seleccionar los colores asociados a cada histograma. Puede ver la segmentación en curso. Para este ejemplo, mover el deslizador en el componente tiene el mayor efecto en la segmentación de la imagen.Y En este caso, segmenta el primer plano, pero puedes invertir la segmentación cuando termines. 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 de 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 reguladores de histograma para los componentes y.HSV En este espacio de color, representa el matiz, la saturación y el valor.HSV La pestaña también contiene la representación en la nube de puntos de los colores de la imagen.

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

Cree una máscara de imagen utilizando 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.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 creó 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 a 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 recrear la segmentación que acaba de realizar, haga clic y seleccione.MATLABExportExport Function La aplicación color Thresholder 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