Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

bwconncomp

Buscar y contar los componentes conectados de una imagen binaria

Descripción

ejemplo

CC = bwconncomp(BW) busca y cuenta los componentes conectados CC de la imagen binaria BW. La estructura de salida CC contiene el número total de componentes conectados, tales como las regiones de interés (ROI), de los índices de la imagen y los píxeles asignados a cada componente. bwconncomp utiliza una conectividad por defecto de 8 para dos dimensiones y de 26 para tres dimensiones.

ejemplo

CC = bwconncomp(BW,conn) especifica la conectividad deseada conn de los componentes conectados.

Ejemplos

contraer todo

Cree un pequeño arreglo 3D de muestra.

BW = cat(3, [1 1 0; 0 0 0; 1 0 0],...
            [0 1 0; 0 0 0; 0 1 0],...
            [0 1 1; 0 0 0; 0 0 1]);

Busque los componentes conectados en el arreglo.

CC = bwconncomp(BW)
CC = struct with fields:
    Connectivity: 26
       ImageSize: [3 3 3]
      NumObjects: 2
    PixelIdxList: {[5x1 double]  [3x1 double]}

Calcule los centroides de los objetos del arreglo.

S = regionprops(CC,'Centroid')
S=2×1 struct array with fields:
    Centroid

Lea una imagen en el área de trabajo y muéstrela.

BW = imread('text.png');
imshow(BW)

Figure contains an axes object. The axes object contains an object of type image.

Busque el número de componentes conectados de la imagen.

CC = bwconncomp(BW)
CC = struct with fields:
    Connectivity: 8
       ImageSize: [256 256]
      NumObjects: 88
    PixelIdxList: {1x88 cell}

Determine cuál es el componente más grande de la imagen y elimínelo (defina todos los píxeles como 0).

numPixels = cellfun(@numel,CC.PixelIdxList);
[biggest,idx] = max(numPixels);
BW(CC.PixelIdxList{idx}) = 0;

Muestre la imagen teniendo en cuenta que el componente más grande corresponde a las dos f consecutivas de la palabra "different" (diferente).

figure
imshow(BW)

Figure contains an axes object. The axes object contains an object of type image.

Argumentos de entrada

contraer todo

Imagen binaria, especificada como arreglo numérico o lógico de cualquier dimensión. En la entrada numérica, cualquier píxel distinto de cero se considera 1 (true).

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Conectividad de píxeles, especificada como uno de los siguientes valores de la tabla. La conectividad por defecto es 8 para imágenes 2D y 26 para imágenes 3D.

Valor

Significado

Conectividades bidimensionales

4

Los píxeles se consideran conectados si comparten bordes. Dos píxeles contiguos forman parte del mismo objeto si ambos se encuentran y están conectados a lo largo de la dirección horizontal o vertical.

Center pixel connected to four pixels

El píxel actual se muestra en gris.

8

Los píxeles se consideran conectados si comparten bordes o vértices. Dos píxeles contiguos forman parte del mismo objeto si ambos se encuentran y están conectados a lo largo de la dirección horizontal, vertical o diagonal.

Center pixel connected to eight pixels

El píxel actual se muestra en gris.

Conectividades tridimensionales

6

Los píxeles se consideran conectados si comparten caras. Dos píxeles contiguos forman parte del mismo objeto si ambos se encuentran y están conectados a lo largo de:

  • Alguna de estas direcciones: adentro, afuera, izquierda, derecha, arriba y abajo

Center pixel connected to the faces of 6 pixels

El píxel actual es el centro del cubo.

18

Los píxeles se consideran conectados si sus caras o bordes se tocan. Dos píxeles contiguos forman parte del mismo objeto si ambos se encuentran y están conectados a lo largo de:

  • Alguna de estas direcciones: adentro, afuera, izquierda, derecha, arriba y abajo

  • Una combinación de dos direcciones, como derecha-abajo o adentro-arriba

Center pixel connected to the faces of 6 pixels and the edges of 12 pixels

El píxel actual es el centro del cubo.

26

Los píxeles se consideran conectados si sus caras, bordes o vértices se tocan. Dos píxeles contiguos forman parte del mismo objeto si ambos se encuentran y están conectados a lo largo de:

  • Alguna de estas direcciones: adentro, afuera, izquierda, derecha, arriba y abajo

  • Una combinación de dos direcciones, como derecha-abajo o adentro-arriba

  • Una combinación de tres direcciones, como adentro-derecha-arriba o adentro-izquierda-abajo

Center pixel connected to the faces of 6 pixels, the edges of 12 pixels, and the corners of 8 pixels

El píxel actual es el centro del cubo.

En el caso de dimensiones más grandes, bwconncomp utiliza el valor por defecto conndef(ndims(BW),"maximal").

La conectividad puede definirse de una forma más general para cualquier dimensión especificando una matriz de 3 por 3 por ... por 3 con valores 0 y 1. Los elementos con el valor 1 definen los entornos relativos al elemento central de conn. Tenga en cuenta que conn debe ser simétrica respecto de su elemento central. Para obtener más información, consulte Especificar conectividades personalizadas.

Tipos de datos: double | logical

Argumentos de salida

contraer todo

Componentes conectados, devueltos como estructura con cuatro campos.

CampoDescripción
ConnectivityConectividad de los componentes conectados (objetos)
ImageSizeTamaño de BW
NumObjectsNúmero de componentes conectados (objetos) en BW
PixelIdxList

Arreglo de celdas de 1 por NumObjects donde el k-ésimo elemento del arreglo de celdas es un vector que contiene los índices lineales de los píxeles del k-ésimo componente conectado.

Sugerencias

  • Esta función ordena los componentes conectados de izquierda a derecha según el extremo top-left de cada componente. Cuando varios componentes tienen la misma posición horizontal, la función ordena esos componentes de arriba abajo y de nuevo a lo largo de cualquier dimensión superior. Esta figura ilustra los extremos de dos regiones diferentes.

    Two differently shaped regions, each with their eight extrema points labeled

  • Las funciones bwlabel, bwlabeln y bwconncomp calculan componentes conectados para imágenes binarias. bwconncomp utiliza bastante menos memoria y, en ocasiones, es más rápida que las otras funciones.

    FunciónDimensión de entradaForma de salidaUso de memoriaConectividad
    bwlabel2DMatriz de etiquetas de doble precisiónElevado4 u 8
    bwlabelnN dimensionesMatriz de etiquetas de doble precisiónElevadaCualquiera
    bwconncompN DIMENSIONESEstructura CCBajoCualquiera
  • Para extraer características de una imagen binaria utilizando regionprops con la conectividad predeterminada, pase BW directamente a regionprops utilizando el comando regionprops(BW).

  • Para calcular una matriz de etiquetas con un tipo de datos más eficiente en cuanto a memoria (por ejemplo, uint8 en lugar de double), utilice la función labelmatrix en la salida de bwconncomp.

Capacidades ampliadas

Historial de versiones

Introducido en R2009a

expandir todo