Erosión y Dilatación de imágenes usando OpenCV en Python
Las operaciones morfológicas modifican imágenes en función de la estructura y disposición de los píxeles. Aplican kernel a una imagen de entrada para cambiar sus características según la disposición de los píxeles vecinos. Las operaciones morfológicas como la erosión y la dilatación son técnicas de procesamiento de imágenes, especialmente para imágenes binarias o en escala de grises. Ayudan a analizar formas, limpiar el ruido y refinar los límites de los objetos.
Erosión
La erosión en el procesamiento de imágenes es una operación morfológica que reduce y adelgaza los límites de los objetos en una imagen eliminando píxeles en los bordes de los objetos, haciendo que los objetos sean más pequeños y eliminando el pequeño ruido blanco.
Objetivo
- Reduce o erosiona los límites de los objetos en primer plano (normalmente píxeles blancos).
- Elimina el ruido blanco fino y separa los objetos que se tocan.
Cómo funciona
- Un núcleo (normalmente una matriz de unos de 3×3, 5×5 o 7×7) se desliza por la imagen.
- Un píxel permanece blanco (1) solo si todos los píxeles debajo del núcleo son blancos; de lo contrario se vuelve negro (0).
- Este proceso reduce el tamaño del objeto y erosiona los bordes.
Dilatación
La dilatación es una operación morfológica que expande los límites de los objetos en una imagen agregando píxeles a los bordes de los objetos, haciendo que los objetos parezcan más grandes y llenando pequeños espacios o agujeros.
Objetivo:
- Expande los límites de los objetos en primer plano.
- Acentúa o amplía rasgos y llena pequeños huecos.
Cómo funciona:
- El núcleo está igualmente convolucionado sobre la imagen.
- Un píxel se establece en blanco (1) si al menos uno de los píxeles correspondientes debajo del núcleo es blanco.
- Como resultado, las regiones blancas crecen fusionando pequeños agujeros o uniendo partes rotas.
Implementación de Erosión y Dilatación
Implementemos Erosión y Dilatación con OpenCV en Python
Paso 1: importar bibliotecas
Importaremos las bibliotecas necesarias.
- cv2 : Biblioteca OpenCV para procesamiento de imágenes.
- engordado : Para operaciones numéricas y para crear núcleos.
- matplotlib.pyplot : Para visualizar imágenes en cuadernos.
Paso 2: cargar la imagen de entrada y definir los elementos estructurantes (núcleo)
El kernel define la vecindad de la operación. Las opciones comunes son rectángulos o discos.
PythonLa imagen usada se puede descargar desde aquí .
img = cv2 . imread ( 'input.webp' 0 ) plt . imshow ( img cmap = 'gray' ) plt . title ( 'Original Image' ) plt . axis ( 'off' ) plt . show () kernel = np . ones (( 5 5 ) np . uint8 )
Producción:
Original Paso 3: aplicar la erosión
La erosión funciona deslizando el núcleo por la imagen. Un píxel permanece blanco (255) sólo si todos los píxeles debajo del núcleo son blancos; de lo contrario, se vuelve negro (0). Esto reduce los límites de los objetos y elimina el pequeño ruido blanco.
Python img_erosion = cv2 . erode ( img kernel iterations = 1 ) plt . imshow ( img_erosion cmap = 'gray' ) plt . title ( 'After Erosion' ) plt . axis ( 'off' ) plt . show ()
Producción:
Después de la erosión Paso 4: aplicar dilatación
La dilatación desliza el núcleo a través de la imagen y un píxel se vuelve blanco si al menos un píxel debajo del núcleo es blanco. Esto espesa las regiones u objetos blancos y rellena pequeños agujeros.
Python img_dilation = cv2 . dilate ( img kernel iterations = 1 ) plt . imshow ( img_dilation cmap = 'gray' ) plt . title ( 'After Dilation' ) plt . axis ( 'off' ) plt . show ()
Producción:
Después de la dilatación Aplicaciones
Erosión
- Eliminar ruido blanco aislado de una imagen.
- Separar objetos que están unidos o tocándose.
- Encontrar límites de objetos reduciendo el tamaño del objeto.
Dilatación
- Rellenar pequeños agujeros o huecos en objetos.
- Unir partes rotas o desconectadas de un mismo objeto.
- Se utiliza después de la erosión (como parte de la operación de "apertura") para restaurar el tamaño del objeto mientras se elimina el ruido.
La erosión y la dilatación son operaciones morfológicas fundamentales en el procesamiento de imágenes que nos permiten refinar, limpiar y manipular formas dentro de las imágenes. Al utilizar elementos estructurantes simples, estas técnicas ayudan a eliminar el ruido, separar o conectar objetos y mejorar las características de la imagen, lo que las convierte en herramientas esenciales para un preprocesamiento y análisis efectivos en tareas de visión por computadora con OpenCV y Python.
Crear cuestionario