bwmorph
Operaciones morfológicas en imágenes binarias
Descripción
Ejemplos
Realizar operaciones morfológicas en una imagen binaria
Lea una imagen binaria y muéstrela.
BW = imread('circles.png');
imshow(BW);
Elimine los píxeles del interior para dejar un contorno de las formas.
BW2 = bwmorph(BW,'remove');
figure
imshow(BW2)
Obtenga el esqueleto de la imagen.
BW3 = bwmorph(BW,'skel',Inf);
figure
imshow(BW3)
Argumentos de entrada
BW
— Imagen binaria
Matriz numérica 2D | Matriz lógica 2D
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
operation
— Operación morfológica que desea realizar
vector de caracteres | escalar de cadena
Operación morfológica que desea realizar, especificada como una de las siguientes:
Operación | Descripción |
---|---|
| Realiza la operación morfológica bottom hat, que devuelve la imagen menos el cierre morfológico de la imagen. La función |
| Busca los puntos de ramificación del esqueleto. 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 esqueletizada. Para crear una imagen esqueletizada, utilice |
| Une píxeles no conectados, esto es, establece los píxeles cuyo valor es 1 0 0 1 1 0 1 0 1 becomes 1 1 1 0 0 1 0 1 1 |
| Elimina los píxeles aislados (valores 0 0 0 0 1 0 0 0 0 |
| Realiza el cierre morfológico (dilatación seguida de erosión). La función |
| 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 |
| Busca los puntos finales del 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 buscar los puntos finales, la imagen debe estar esqueletizada. Para crear una imagen esqueletizada, utilice |
| Rellena los píxeles aislados (valores 1 1 1 1 0 1 1 1 1 |
| 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 |
| Establece un píxel en |
| Realiza una apertura morfológica (erosión seguida de dilatación). La función |
| Elimina los píxeles del interior. Esta opción establece un píxel en |
| Con |
| Con Al trabajar con volúmenes 3D o cuando desee eliminar una estructura, utilice la función |
| 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 |
| Con |
| Con |
| Realice la operación morfológica top hat, que devuelve la imagen menos la apertura morfológica de la imagen. La función |
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
— Número de veces que se realizará la operación
entero positivo | Inf
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
BW2
— Imagen después de las operaciones morfológicas
Matriz lógica 2D
Imagen después de las operaciones morfológicas, devuelta como una matriz lógica 2D.
Tipos de datos: logical
Algoritmos
Cuando se utiliza con la opción 'thin'
, bwmorph
usa el algoritmo siguiente [3]:
En la primera subiteración, elimina el píxel p solamente si se cumplen todas las condiciones G1, G2 y G3.
En la segunda subiteración, elimina el píxel p solamente si se cumplen todas las condiciones G1, G2 y .
Condición G1:
donde
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:
donde
Condición G3:
Condición G3':
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
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Notas y limitaciones de uso:
bwmorph
es compatible con la generación de código C (requiere MATLAB® Coder™). Tenga en cuenta que, si selecciona la plataforma objetivo genéricaMATLAB Host Computer
,bwmorph
genera código que utiliza una biblioteca compartida precompilada específica de la plataforma. El uso de una biblioteca compartida mantiene las optimizaciones de rendimiento, pero limita las plataformas objetivo para las que se puede generar código. Para obtener más información, consulte Types of Code Generation Support in Image Processing Toolbox.Cuando se genera código, los vectores de caracteres o escalares de cadenas que especifican la operación deben ser una constante en tiempo de compilación y, para obtener los mejores resultados, la imagen de entrada debe ser de clase
logical
.
Generación de código de GPU
Genere código CUDA® para GPU NVIDIA® mediante GPU Coder™.
Notas y limitaciones de uso:
Cuando se genera código, los vectores de caracteres o escalares de cadenas que especifican la operación deben ser una constante en tiempo de compilación y, para obtener los mejores resultados, la imagen de entrada debe ser de clase
logical
.
Arreglos GPU
Acelere código mediante la ejecución en una unidad de procesamiento gráfico (GPU) mediante Parallel Computing Toolbox™.
Esta función es totalmente compatible con los arreglos de GPU. Para obtener más información, consulte Image Processing on a GPU.
Historial de versiones
Introducido antes de R2006a
Consulte también
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)