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.

Etiquetar y medir objetos en una imagen binaria

Comprender el etiquetado de componentes conectados

Un componente conectado en una imagen binaria es un conjunto de píxeles que forman un grupo conectado. Por ejemplo, la imagen binaria siguiente tiene tres componentes conectados.

El etiquetado de componentes conectados es el proceso de identificar los componentes conectados en una imagen y asignar a cada uno una etiqueta única, como esta:

La matriz anterior se llama un archivo .matriz de etiquetas

calcula los componentes conectados, como se muestra en el ejemplo:bwconncomp

cc = bwconncomp(BW) cc =       Connectivity: 8        ImageSize: [8 9]       NumObjects: 3     PixelIdxList: {[6x1 double]  [6x1 double]  [5x1 double]} 

El identifica la lista de píxeles que pertenecen a cada componente conectado.PixelIdxList

Para visualizar componentes conectados, es útil construir una matriz de etiquetas. Utilice la función.labelmatrix Para inspeccionar los resultados, muestre la matriz de etiquetas como una imagen pseudocolor utilizando .label2rgb

Construir una matriz de etiquetas:

labeled = labelmatrix(cc); 

Cree una imagen pseudocolor, donde la etiqueta que identifica cada objeto de la matriz de etiquetas se asigna a un color diferente en la matriz asociada.colormap Se utiliza para elegir el mapa de colores, el color de fondo y cómo los objetos de la matriz de etiquetas se asignan a los colores del mapa de colores:label2rgb

RGB_label = label2rgb(labeled, @copper, 'c', 'shuffle'); imshow(RGB_label,'InitialMagnification','fit')

Observaciones

Las funciones , , y todos los componentes conectados de proceso para imágenes binarias. reemplaza el uso de y .bwlabelbwlabelnbwconncompbwconncompbwlabelbwlabeln Utiliza significativamente menos memoria y a veces es más rápido que las funciones más antiguas.

FunciónDimensión de entradaFormulario de salidaUso de la memoriaConectividad
bwlabel2-DMatriz de etiquetas de doble precisiónAlto4 u 8
bwlabelnN-DMatriz de etiquetas de doble precisiónAltoCualquier
bwconncompN-DEstructuraCCBajoCualquier

Selección de objetos en una imagen binaria

Puede utilizar la función para seleccionar objetos individuales en una imagen binaria.bwselect Especifique píxeles en la imagen de entrada y devuelva una imagen binaria que incluya solo los objetos de la imagen de entrada que contienen uno de los píxeles especificados.bwselect

Puede especificar los píxeles de forma no interactiva o con un ratón. Por ejemplo, supongamos que desea seleccionar objetos en la imagen mostrada en los ejes actuales. Escribes

BW2 = bwselect;

El cursor cambia a puntos de mira cuando está sobre la imagen. Haga clic en los objetos que desee seleccionar; muestra una pequeña estrella sobre cada píxel en el que hace clic.bwselect Cuando haya terminado, pulse . devuelve una imagen binaria que consta de los objetos seleccionados y elimina las estrellas.Returnbwselect

Consulte la página de referencia para obtener más información.bwselect

Encontrar el área del primer plano de una imagen binaria

La función devuelve el área de una imagen binaria.bwarea El área es una medida del tamaño del primer plano de la imagen. En términos generales, el área es el número de píxeles de la imagen.on

no cuenta simplemente el número de píxeles establecido en , sin embargo.bwareaon En su lugar, pondera los diferentes patrones de píxeles de manera desigual al calcular el área.bwarea Esta ponderación compensa la distorsión inherente a la representación de una imagen continua con píxeles discretos. Por ejemplo, una línea diagonal de 50 píxeles es más larga que una línea horizontal de 50 píxeles. Como resultado de los usos de ponderación, la línea horizontal tiene un área de 50, pero la línea diagonal tiene un área de 62,5.bwarea

Este ejemplo se utiliza para determinar el aumento de área porcentual en ese resultado de una operación de dilatación.bwareacircbw.tif

BW = imread('circbw.tif');  SE = ones(5); BW2 = imdilate(BW,SE); increase = (bwarea(BW2) - bwarea(BW))/bwarea(BW) increase =      0.3456

Consulte la página de referencia para obtener más información sobre el patrón de ponderación.bwarea

Encontrar el número De Euler de una imagen binaria

La función devuelve el número Euler para una imagen binaria.bweuler El número Euler es una medida de la topología de una imagen. Se define como el número total de objetos de la imagen menos el número de agujeros en esos objetos. Puede utilizar barrios conectados a 4 u 8.

En este ejemplo se calcula el número de Euler para la imagen del circuito, utilizando 8 vecindades conectadas.

BW1 = imread('circbw.tif');  eul = bweuler(BW1,8)  eul =     -85

En este ejemplo, el número De Euler es negativo, lo que indica que el número de taladros es mayor que el número de objetos.