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.

bwmorph

Operaciones morfológicas en imágenes binarias

Descripción

ejemplo

BW2 = bwmorph(BW,operation) aplica una operación morfológica específica a la imagen binaria.BW

Nota

Para realizar operaciones morfológicas en una imagen volumétrica 3D, utilice .bwmorph3

Opcionalmente, puede realizar la operación morfológica usar una GPU (requiere ).Parallel Computing Toolbox™

BW2 = bwmorph(BW,operation,n) aplica los tiempos de operación. puede ser , en cuyo caso la operación se repite hasta que la imagen ya no cambia.nnInf

Ejemplos

contraer todo

Lea la imagen binaria y muésela.

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

Elimine los píxeles interiores para dejar un contorno de las formas.

BW2 = bwmorph(BW,'remove'); figure imshow(BW2)

Consigue el esqueleto de la imagen.

BW3 = bwmorph(BW,'skel',Inf); figure imshow(BW3)

Argumentos de entrada

contraer todo

Imagen binaria, especificada como una matriz numérica 2D o una matriz lógica 2D. Para la entrada numérica, los píxeles distintos de cero se consideran ( ).1true

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

Operación morfológica a realizar, especificada como una de las siguientes.

Operación

Descripción

'bothat'

Realiza la operación morfológica de "sombrero inferior", devolviendo la imagen menos el cierre morfológico de la imagen (dilatación seguida de erosión).

'branchpoints'

Encuentra puntos de rama de esqueleto. Por ejemplo:

0  0  1  0  0           0  0  0  0  0 0  0  1  0  0  becomes  0  0  0  0  0 1  1  1  1  1           0  0  1  0  0 0  0  1  0  0           0  0  0  0  0 0  0  1  0  0           0  0  0  0  0

Nota: Para encontrar puntos de bifurcación, la imagen debe ser esqueletizada. Para crear una imagen esqueletizada, utilice .bwmorph(BW,'skel')

'bridge'

Los puentes de sin conectar píxeles, es decir, establecen píxeles con valores 0 si tienen dos vecinos distintos de cero que no están conectados.1 Por ejemplo:

1  0  0           1  1  0  1  0  1  becomes  1  1  1  0  0  1           0  1  1 

'clean'

Quita los píxeles aislados (1s individuales que están rodeados por 0s), como el píxel central de este patrón.

0  0  0  0  1  0  0  0  0 

'close'

Realiza cierre morfológico (dilatación seguida de erosión).

'diag'

Utiliza relleno diagonal para eliminar la 8-conectividad del fondo. Por ejemplo:

0  1  0           0  1  0  1  0  0  becomes  1  1  0  0  0  0           0  0  0 

'endpoints'

Encuentra puntos finales de esqueleto. Por ejemplo:

1  0  0  0           1  0  0  0 0  1  0  0  becomes  0  0  0  0 0  0  1  0           0  0  1  0 0  0  0  0           0  0  0  0

Nota: Para encontrar puntos finales, la imagen debe ser esqueletizada. Para crear una imagen esqueletizada, utilice .bwmorph(BW,'skel')

'fill'

Rellena los píxeles interiores aislados (0s individuales que están rodeados por 1s), como el píxel central de este patrón.

1  1  1  1  0  1  1  1  1 

'hbreak'

Elimina los píxeles conectados a H. Por ejemplo:

1  1  1           1  1  1  0  1  0  becomes  0  0  0  1  1  1           1  1  1 

'majority'

Establece un píxel si cinco o más píxeles de su vecindad de 3 por 3 son 1s; de lo contrario, establece el píxel en .10

'open'

Realiza apertura morfológica (erosión seguida de dilatación).

'remove'

Elimina los píxeles interiores. Esta opción establece un píxel en si todos sus 4 vecinos conectados están, dejando así solo los píxeles de límite activados.01

'shrink'

Con , reduce los objetos a puntos.n = Inf Elimina los píxeles para que los objetos sin agujeros se encojan a un punto y los objetos con agujeros se encojan a un anillo conectado a medio camino entre cada taladro y el contorno exterior. Esta opción conserva el número Euler.

'skel'

Con , elimina píxeles en los límites de los objetos, pero no permite que los objetos se separen.n = Inf Los píxeles restantes conforman el esqueleto de la imagen. Esta opción conserva el número Euler.

Cuando trabaje con volúmenes 3D, o cuando desee podar un esqueleto, utilice la función.bwskel

'spur'

Elimina los píxeles de espolón. Por ejemplo:

0  0  0  0           0  0  0  0 0  0  0  0           0  0  0  0 0  0  1  0  becomes  0  0  0  0 0  1  0  0           0  1  0  0 1  1  0  0           1  1  0  0 

'thicken'

Con , engrosa los objetos agregando píxeles al exterior de los objetos hasta que hacerlo daría lugar a que los objetos desconectados previamente estuvieran conectados a 8.n = Inf Esta opción conserva el número Euler.

'thin'

Con , adelgaza los objetos a las líneas.n = Inf Elimina los píxeles para que un objeto sin agujeros se reduzca a un trazo mínimamente conectado y un objeto con agujeros se encoja a un anillo conectado a medio camino entre cada taladro y el límite exterior. Esta opción conserva el número Euler. Consulte para obtener más detalles.Algoritmos

'tophat'

Realiza la operación morfológica "sombrero superior", devolviendo la imagen menos la abertura morfológica de la imagen (erosión seguida de dilatación).

Ejemplo: BW3 = bwmorph(BW,'skel');

Tipos de datos: char | string

Número de veces que se realiza la operación, especificado como un valor numérico. puede ser , en cuyo caso se repite la operación hasta que la imagen ya no cambia.nInfbwmorph

Ejemplo: BW3 = bwmorph(BW,'skel',100);

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

Argumentos de salida

contraer todo

Imagen después de operaciones morfológicas, devuelta como una matriz lógica 2D.

Tipos de datos: logical

Sugerencias

  • Para realizar erosión o dilatación, utilice las funciones o.imerodeimdilate Si desea duplicar la dilatación o erosión realizada por , especifique el elemento de estructuración con estas funciones.bwmorphones(3)

Algoritmos

contraer todo

Cuando se utiliza con la opción, utiliza el siguiente algoritmo:'thin'bwmorph[3]

  1. En la primera subliteración, elimine el píxel si y solo si las condicionespG1, G2YG3 están todos satisfechos.

  2. En la segunda subliteración, elimine el píxel si y solo si las condicionespG1, G2Y G3 están todos satisfechos.

Condición G1:

XH(p)=1

Dónde

XH(p)=i=14bi

bi={1, if x2i1=0 and (x2i=1 or x2i+1=1)0, otherwise                                          

x1, x2, ..., x8 son los valores de los ocho vecinos de , comenzando con el vecino del este y numerados en orden contrario a las agujas del reloj.p

Condición G2:

2min{n1(p),n2(p)}3

Dónde

n1(p)=k=14x2k1x2k

n2(p)=k=14x2kx2k+1

Condición G3:

(x2x3x¯8)x1=0

Condición G3':

(x6x7x¯4)x5=0

Las dos subliteraciones juntas conforman una iteración del algoritmo de adelgazamiento. Cuando el usuario especifica un número infinito de iteraciones ( ), las iteraciones se repiten hasta que la imagen deja de cambiar.n=Inf Todas las condiciones se prueban con tablas de búsqueda precalculadas.applylut

Referencias

[1] Haralick, Robert M., and Linda G. Shapiro, Computer and Robot Vision, Vol. 1, Addison-Wesley, 1992.

[2] Kong, T. Yung and Azriel Rosenfeld, Topological Algorithms for Digital Image Processing, Elsevier Science, Inc., 1996.

[3] Lam, L., Seong-Whan Lee, and Ching Y. Suen, "Thinning Methodologies-A Comprehensive Survey," IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 14, No. 9, September 1992, page 879, bottom of first column through top of second column.

[4] Pratt, William K., Digital Image Processing, John Wiley & Sons, Inc., 1991.

Capacidades ampliadas

Consulte también

| | | | |

Introducido antes de R2006a