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.

bwlabel

Etiquetar componentes conectados en 2-D imagen binaria

Sintaxis

L = bwlabel(BW)
L = bwlabel(BW,conn)
[L,n] = bwlabel(___)
[gpuarrayL,n] = bwlabel(gpuarrayBW,conn)

Descripción

ejemplo

L = bwlabel(BW) Devuelve la etiqueta Matrix L que contiene etiquetas para los objetos conectados a 8 que se encuentran en BW.

L = bwlabel(BW,conn) Devuelve una matriz de etiquetas, donde conn especifica la conectividad.

[L,n] = bwlabel(___) también devuelve n, el número de objetos conectados encontrados en BW.

ejemplo

[gpuarrayL,n] = bwlabel(gpuarrayBW,conn) realiza la operación de etiquetado en una GPU. La imagen de entrada y la matriz de etiqueta de salida son gpuArrays. La variable conn puede ser un array numérico o un gpuArray. Esta sintaxis requiere el Parallel Computing Toolbox™.

Ejemplos

contraer todo

Crear una pequeña imagen binaria.

BW = logical ([1     1     1     0     0     0     0     0                1     1     1     0     1     1     0     0                1     1     1     0     1     1     0     0                1     1     1     0     0     0     1     0                1     1     1     0     0     0     1     0                1     1     1     0     0     0     1     0                1     1     1     0     0     1     1     0                1     1     1     0     0     0     0     0]);

Cree la matriz de etiquetas utilizando objetos conectados a 4.

L = bwlabel(BW,4)
L = 8×8

     1     1     1     0     0     0     0     0
     1     1     1     0     2     2     0     0
     1     1     1     0     2     2     0     0
     1     1     1     0     0     0     3     0
     1     1     1     0     0     0     3     0
     1     1     1     0     0     0     3     0
     1     1     1     0     0     3     3     0
     1     1     1     0     0     0     0     0

Utilice el comando find para obtener las coordenadas de fila y columna del objeto etiquetado como "2".

[r, c] = find(L==2); rc = [r c]
rc = 4×2

     2     5
     3     5
     2     6
     3     6

Cree una pequeña imagen binaria y cree un objeto gpuArray para contenerlo.

BW = gpuArray(logical([1 1 1 0 0 0 0 0                       1 1 1 0 1 1 0 0                       1 1 1 0 1 1 0 0                       1 1 1 0 0 0 1 0                       1 1 1 0 0 0 1 0                       1 1 1 0 0 0 1 0                       1 1 1 0 0 1 1 0                       1 1 1 0 0 0 0 0])); 

Cree la matriz de etiquetas utilizando objetos conectados a 4.

L = bwlabel(BW,4)

Utilice el comando find para obtener las coordenadas de fila y columna del objeto etiquetado como "2".

[r,c] = find(L == 2)

Argumentos de entrada

contraer todo

Imagen binaria, especificada como una matriz 2-D, real, no Sparse, numérica o lógica. Para la entrada numérica, cualquier píxel distinto de cero se considera on.

Ejemplo: BW = imread('text.png'); L = bwlabel(BW);

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

Conectividad, especificada como valores 4, para objetos conectados a 4 o 8, para objetos conectados a 8.

Ejemplo: BW = imread('text.png'); L = bwlabel(BW,4);

Tipos de datos: double

Imagen binaria cuando se ejecuta en una GPU, especificada como un gpuArray.

Ejemplo: BW = gpuArray(imread('text.png')); L = bwlabel(BW);

Argumentos de salida

contraer todo

Matriz de etiquetas de regiones contiguas, devuelta como matriz de enteros no negativos con el mismo tamaño que BW. Los píxeles etiquetados como 0 son el fondo. Los píxeles etiquetados 1 componen un objeto; los píxeles etiquetados 2 conforman un segundo objeto; y así sucesivamente.

Tipos de datos: double

Número de objetos conectados en BW, devueltos como enteros no negativos.

Tipos de datos: double

Matriz de etiquetas cuando se ejecuta en una GPU, se devuelve como un gpuArray.

Sugerencias

  • Las funciones bwlabel, bwlabelny bwconncomp calculan todos los componentes conectados para las imágenes binarias. bwconncomp sustituye el uso de bwlabel y bwlabeln. Utiliza significativamente menos memoria y a veces es más rápido que las otras funciones.

     Dimensión de la entradaFormulario de salidaUso de memoriaConectividad
    bwlabel2-DMatriz de etiquetas de doble precisiónAlta4 o 8
    bwlabelnN-DMatriz de etiquetas de doble precisiónAltaCualquier
    bwconncompN-DEstructura de CCBajaCualquier
  • Puede utilizar la función MATLAB® find junto con bwlabel para devolver vectores de índices para los píxeles que componen un objeto específico. Por ejemplo, para devolver las coordenadas de los píxeles del objeto 2, escriba lo siguiente:.

    [r, c] = find(bwlabel(BW)==2)

    Puede mostrar la matriz de salida como una imagen indexada seudocolores. Cada objeto aparece en un color diferente, por lo que los objetos son más fáciles de distinguir que en la imagen original. Para obtener más información, consulte label2rgb.

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

  • Para extraer características de una imagen binaria usando regionprops con conectividad predeterminada, simplemente pase BW directamente a regionprops, es decir, regionprops(BW).

  • La función bwlabel puede aprovechar la optimización de hardware para los tipos de datos logical, uint8y single para ejecutarse más rápido. La optimización de hardware requiere que marker y mask sean imágenes en 2-D y conn sea 4 u 8.

Algoritmos

bwlabel utiliza el procedimiento general descrito en la referencia [1], págs. 40-48:

  1. La longitud de ejecución codifica la imagen de entrada.

  2. Escanee las ejecuciones, asignando etiquetas preliminares y equivalencias de etiquetas de grabación en una tabla de equivalencia local.

  3. Resuelva las clases de equivalencia.

  4. Reetiquetar las ejecuciones basándose en las clases de equivalencia resueltas.

Referencias

[1] Haralick, Robert M., and Linda G. Shapiro, Computer and Robot Vision, Volume I, Addison-Wesley, 1992, pp. 28-48.

Capacidades ampliadas

Introducido antes de R2006a