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.

bwmorph

Operaciones morfológicas en imágenes binarias

Descripción

ejemplo

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

Nota

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

BW2 = bwmorph(BW,operation,n) aplica la operación n veces. n puede ser Inf, en cuyo caso la operación se repite hasta que la imagen deja de cambiar.

Ejemplos

contraer todo

Lea una imagen binaria y muéstrela.

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

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

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

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

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

Obtenga el esquema de la imagen.

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

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

Argumentos de entrada

contraer todo

Imagen binaria, especificada como matriz numérica 2D o matriz lógica 2D. 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

Operación morfológica que desea realizar, especificada como una de las siguientes:

Operación

Descripción

'bothat'

Realiza la operación morfológica bottom hat, que devuelve la imagen menos el cierre morfológico de la imagen.

La función bwmorph realiza el cierre morfológico usando el entorno ones(3). Si desea realizar la operación morfológica bottom hat con un entorno diferente, entonces utilice la función imbothat.

'branchpoints'

Busca los puntos de ramificación del esquema. Por ejemplo:

0  0  1  0  0           0  0  0  0  0
0  0  1  0  0           0  0  0  0  0
1  1  1  1  1  becomes  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 buscar los puntos de ramificación, la imagen debe estar esquematizada. Para crear un imagen esquematizada, utilice bwmorph(BW,'skel').

'bridge'

Une píxeles no conectados, esto es, establece los píxeles cuyo valor es 0 en 1 si tienen dos entornos distintos de cero que no están conectados. Por ejemplo:

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

'clean'

Elimina los píxeles aislados (valores 1 individuales que están rodeados por valores 0), como el píxel del centro de este patrón.

0  0  0 
0  1  0 
0  0  0

'close'

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

La función bwmorph realiza el cierre morfológico usando el entorno ones(3). Si desea realizar una operación de cierre morfológico con un entorno diferente, entonces utilice la función imclose.

'diag'

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

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

'endpoints'

Busca los puntos finales del esquema. 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 buscar los puntos finales, la imagen debe estar esquematizada. Para crear una imagen esquematizada, utilice bwmorph(BW,'skel').

'fill'

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

1  1  1 
1  0  1 
1  1  1

'hbreak'

Elimina los píxeles conectados con 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 en 1 si cinco o más píxeles de su entorno de 3 por 3 son 1; de lo contrario, establece el píxel en 0.

'open'

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

La función bwmorph realiza una apertura morfológica usando el entorno ones(3). Si desea realizar una operación de apertura morfológica con un entorno diferente, entonces utilice la función imopen.

'remove'

Elimina los píxeles del interior. Esta opción establece un píxel en 0 si todos sus entornos de conectividad 4 son 1, dejando así solamente activados los píxeles de límites.

'shrink'

Con n = Inf, reduce los objetos a puntos eliminando los píxeles desde los límites de los objetos. Los objetos sin huecos se reducen hasta un punto y los objetos con huecos se reducen hasta un anillo conectado a medio camino entre cada hueco y el límite exterior. Esta opción mantiene el número de Euler (también conocido como la característica de Euler).

'skel'

Con n = Inf, elimina los píxeles de los límites de los objetos sin dejar que los objetos se separen. Los píxeles restantes componen la estructura de la imagen. Esta opción mantiene el número de Euler.

Al trabajar con volúmenes 3D o cuando desee eliminar una estructura, utilice la función bwskel.

'spur'

Elimina los píxeles auxiliares. 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 n = Inf, aumenta los objetos añadiendo píxeles a su exterior hasta que consiga que los objetos que no estaban conectados sean de conectividad 8. Esta opción mantiene el número de Euler.

'thin'

Con n = Inf, estrecha los objetos a líneas eliminando los píxeles desde los límites de los objetos. Un objeto sin huecos se reduce hasta un trazo mínimamente conectado y un objeto con huecos se reduce hasta un anillo conectado a medio camino entre cada hueco y el límite exterior. Esta opción mantiene el número de Euler. Para obtener más detalles, consulte Algoritmos.

'tophat'

Realice la operación morfológica top hat, que devuelve la imagen menos la apertura morfológica de la imagen.

La función bwmorph realiza una apertura morfológica usando el entorno ones(3). Si desea realizar la operación morfológica top hat con un entorno diferente, entonces utilice la función imtophat.

Sugerencia

Para realizar la erosión o dilatación morfológica, utilice la función imerode o imdilate, respectivamente. Si desea repetir la dilatación o erosión realizadas por la función bwmorph, entonces especifique el entorno como ones(3).

Tipos de datos: char | string

Número de veces que se realizará la operación, especificado como entero positivo o Inf. Cuando especifica n como Inf, la función bwmorph repite la operación hasta que la imagen deja de cambiar.

Ejemplo: 100

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

Argumentos de salida

contraer todo

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

Tipos de datos: logical

Algoritmos

contraer todo

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

  1. En la primera subiteración, elimina el píxel p solamente si se cumplen todas las condiciones G1, G2 y G3.

  2. En la segunda subiteración, elimina el píxel p solamente si se cumplen todas las condiciones G1, G2 y G3.

Condición G1:

XH(p)=1

donde

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 entornos de p, empezando por el entorno del este y enumerados en sentido contrario a las agujas del reloj.

Condición G2:

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

donde

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 subiteraciones juntas constituyen una iteración del algoritmo thinning. Cuando el usuario especifica un número infinito de iteraciones (n=Inf), las iteraciones se repiten hasta que la imagen deja de cambiar. Todas las condiciones son probadas usando applylut con tablas de consulta precalculadas.

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

Historial de versiones

Introducido antes de R2006a