Erosión y Dilatación de imágenes usando OpenCV en Python

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.

La imagen usada se puede descargar desde aquí .

Python
   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:

gato-originalOriginal

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:

erosiónDespué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:

dilataciónDespué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