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.

imseggeodesic

Segmente la imagen en dos o tres regiones utilizando la segmentación de color geodésica basada en la distancia

Descripción

ejemplo

L = imseggeodesic(RGB,BW1,BW2) segmenta la imagen en color, devolviendo una imagen binaria segmentada con etiquetas. y son imágenes binarias que especifican la ubicación de las regiones iniciales de inicialización, llamadas , para las dos regiones (primer plano y fondo).RGBLBW1BW2Garabatos

utiliza los garabatos especificados en y como muestras representativas para calcular las estadísticas de sus respectivas regiones, que luego utiliza en la segmentación.imseggeodesicBW1BW2 Los garabatos especificados por y (regiones que son lógicas true) no deben superponerse.BW1BW2 El algoritmo subyacente utiliza las estadísticas estimadas sobre las regiones marcadas por los garabatos para la segmentación. Cuanto mayor sea el número de píxeles marcados por garabatos, más precisa será la estimación de las estadísticas de la región, lo que normalmente conduce a una segmentación más precisa. Por lo tanto, es una buena práctica proporcionar tantos garabatos como sea posible. Normalmente, proporcione al menos unos cientos de píxeles como garabatos para cada región.

ejemplo

L = imseggeodesic(RGB,BW1,BW2,BW3) segmenta la imagen en color, devolviendo una imagen segmentada con tres segmentos (segmentación trinaria) con las etiquetas de región especificadas por la matriz de etiquetas. , , y son imágenes binarias que especifican la ubicación de las regiones iniciales de inicialización o garabatos para las tres regiones.RGBLBW1BW2BW3 Los garabatos especificados por , , y (regiones que son lógicas true) no deben superponerse.BW1BW2BW3

ejemplo

[L,P] = imseggeodesic(___) también devuelve la probabilidad de cada píxel que pertenezca a cada una de las etiquetas de la matriz.P

ejemplo

[L,P] = imseggeodesic(___,Name,Value) utiliza pares nombre-valor para controlar aspectos de la segmentación.

Ejemplos

contraer todo

Lea la imagen en el espacio de trabajo y muéstrala.

RGB = imread('yellowlily.jpg'); imshow(RGB,'InitialMagnification',50) hold on

Especifique las regiones iniciales de inicialización o "scribbles" para el objeto en primer plano, en el formulario .[left_topR left_topC bottom_rightR bottom_rightC]

bbox1 = [700 350 820 775]; BW1 = false(size(RGB,1),size(RGB,2)); BW1(bbox1(1):bbox1(3),bbox1(2):bbox1(4)) = true;

Especifique las regiones iniciales de inicialización o "scribbles" para el fondo.

bbox2 = [1230 90 1420 1000];   BW2 = false(size(RGB,1),size(RGB,2)); BW2(bbox2(1):bbox2(3),bbox2(2):bbox2(4)) = true;

Mostrar regiones de semillas. El primer plano está en rojo y el fondo es azul.

visboundaries(BW1,'Color','r'); visboundaries(BW2,'Color','b');

Segmente la imagen.

[L,P] = imseggeodesic(RGB,BW1,BW2);

Mostrar resultados.

figure imshow(label2rgb(L),'InitialMagnification', 50) title('Segmented image')

   figure imshow(P(:,:,1),'InitialMagnification', 50) title('Probability that a pixel belongs to the foreground')

Lea la imagen en el espacio de trabajo y muéstrala.

RGB = imread('yellowlily.jpg');  imshow(RGB,'InitialMagnification', 50) hold on

Crea garabatos para tres regiones. Tenga en cuenta que puede especificar los garabatos de forma interactiva mediante herramientas como , , , y .roipolyimfreehandimrectimpolyimellipse La región 1 es la flor amarilla. La región 2 es las hojas verdes. La región 3 es el fondo.

region1 = [350 700 425 120]; % [x y w h] format BW1 = false(size(RGB,1),size(RGB,2)); BW1(region1(2):region1(2)+region1(4),region1(1):region1(1)+region1(3)) = true;   region2 = [800 1124 120 230]; BW2 = false(size(RGB,1),size(RGB,2)); BW2(region2(2):region2(2)+region2(4),region2(1):region2(1)+region2(3)) = true;  region3 = [20 1320 480 200; 1010 290 180 240];  BW3 = false(size(RGB,1),size(RGB,2)); BW3(region3(1,2):region3(1,2)+region3(1,4),region3(1,1):region3(1,1)+region3(1,3)) = true; BW3(region3(2,2):region3(2,2)+region3(2,4),region3(2,1):region3(2,1)+region3(2,3)) = true;

Mostrar las regiones de semillas.

visboundaries(BW1,'Color','r'); visboundaries(BW2,'Color','g'); visboundaries(BW3,'Color','b');

Segmente la imagen.

[L,P] = imseggeodesic(RGB,BW1,BW2,BW3, 'AdaptiveChannelWeighting', true);

Mostrar resultados.

figure imshow(label2rgb(L),'InitialMagnification', 50) title('Segmented image with three regions')

   figure imshow(P(:,:,2),'InitialMagnification', 50) title('Probability that a pixel belongs to region/label 2')

Argumentos de entrada

contraer todo

Imagen segmentada, especificada como una imagen RGB. convierte la imagen RGB de entrada en el espacio de color YCbCr antes de realizar la segmentación.imseggeodesic

Ejemplo: RGB = imread('peppers.png');

Tipos de datos: double | uint8 | uint16

Imagen de garabato, especificada como una matriz lógica. debe tener el mismo número de filas y columnas que la imagen de entrada.BW1RGB Para especificar los garabatos de forma interactiva, utilice , , , , o .roipolyimfreehandimrectimpolyimellipse

Ejemplo: bbox1 = [700 350 820 775]; BW1 = false(size(RGB,1),size(RGB,2)); BW1(bbox1(1):bbox1(3),bbox1(2):bbox1(4)) = true;

Tipos de datos: logical

Imagen de garabato, especificada como una matriz lógica. debe tener el mismo número de filas y columnas que la imagen de entrada.BW2RGB Para especificar los garabatos de forma interactiva, utilice , , , , o .roipolyimfreehandimrectimpolyimellipse

Ejemplo: bbox2 = [1230 90 1420 1000]; BW2 = false(size(RGB,1),size(RGB,2)); BW2(bbox2(1):bbox2(3),bbox2(2):bbox2(4)) = true;

Tipos de datos: logical

Imagen de garabato, especificada como una matriz lógica. debe tener el mismo número de filas y columnas que la imagen de entrada.BW3RGB Para especificar los garabatos de forma interactiva, utilice , , , , o .roipolyimfreehandimrectimpolyimellipse

Ejemplo: bbox3 = [20 1320 480 200; 1010 290 180 240]; BW3 = false(size(RGB,1),size(RGB,2)); BW3(bbox3(1,2):bbox3(1,2)+bbox3(1,4),bbox3(1,1):bbox3(1,1)+bbox3(1,3)) = true;

Tipos de datos: logical

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: [L,P] = imseggeodesic(RGB,BW1,BW2,BW3,'AdaptiveChannelWeighting',true);

Utilice la ponderación de canales adaptable, especificada como escalar lógica. Cuando , pondera los canales proporcionales a la cantidad de información discriminatoria que tienen que es útil para la segmentación (basado en los garabatos proporcionados como entrada).trueimseggeodesic Cuando (el valor predeterminado), pondera todos los canales por igual.falseimseggeodesic

Ejemplo: [L,P] = imseggeodesic(RGB,BW1,BW2,BW3, 'AdaptiveChannelWeighting', true);

Tipos de datos: logical

Argumentos de salida

contraer todo

Matriz de etiquetas, devuelta como una matriz de enteros no negativos. Los píxeles etiquetados son el fondo y los píxeles etiquetados identifican una región segmentada.01 Los píxeles etiquetados identifican otra región segmentada en la segmentación trinaria.2

Tipos de datos: double

Probabilidad de que un píxel pertenezca a una región etiquetada, especificada como una matriz -by- -by-2 para la segmentación binaria o una matriz -by- -by-3 para la segmentación trinaria. y son el número de filas y columnas en la imagen de entrada. especifica la probabilidad de píxel en la ubicación perteneciente a la etiqueta .MNMNMNP(i,j,k)(i,j)k

Tipos de datos: double

Sugerencias

  • Los garabatos de las dos (o tres) regiones no deben superponerse entre sí. Cada matriz de garabatos ( , , y ) debe estar no vacía, es decir, debe haber al menos un píxel (aunque cuanto más mejor) marcado como true lógico en cada uno de los garabatos.BW1BW2BW3

Algoritmos

utiliza un algoritmo geodésico de segmentación de color basado en la distancia (similar a ).imseggeodesic[1]

Referencias

[1] A. Protiere and G. Sapiro, Interactive Image Segmentation via Adaptive Weighted Distances, IEEE Transactions on Image Processing. Volume 16, Issue 4, 2007.

Introducido en R2015a