Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

OpenCV con Python, Unidad 7 — Segmentación y morfología, 7.2 — Operaciones morfológicas ·

Apertura y cierre

Apertura y cierre

Introducción

En la visión por computador, la segmentación es una técnica fundamental para dividir una imagen o video en regiones más simples. Las operaciones morfológicas son herramientas cruciales en este proceso, permitiendo el refinamiento y análisis de estas regiones. Dentro de las operaciones morfológicas, apertura y cierre son técnicas que pueden mejorar la calidad de las segmentaciones al eliminar pequeños ruidos y conectar regiones dispersas.

Explicación principal con ejemplos

Apertura

La apertura es una combinación de dos operaciones: erosión seguida de dilatación. La idea es eliminar las áreas más pequeñas en la imagen sin alterar la forma general del objeto.

import cv2
import numpy as np

# Cargar una imagen en escala de grises
image = cv2.imread('imagen.jpg', cv2.IMREAD_GRAYSCALE)

# Definir el tamaño del kernel (ejemplo: 3x3)
kernel = np.ones((3, 3), np.uint8)

# Aplicar la apertura
opened_image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)

cv2.imshow('Imagen Original', image)
cv2.imshow('Apertura', opened_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Cierre

La cierre es la combinación de dilatación seguida de erosión. Este proceso sirve para llenar las pequeñas brechas dentro del objeto sin alterar su forma general.

import cv2
import numpy as np

# Cargar una imagen en escala de grises
image = cv2.imread('imagen.jpg', cv2.IMREAD_GRAYSCALE)

# Definir el tamaño del kernel (ejemplo: 3x3)
kernel = np.ones((3, 3), np.uint8)

# Aplicar el cierre
closed_image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)

cv2.imshow('Imagen Original', image)
cv2.imshow('Cierre', closed_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ejemplos de operaciones

Ejemplo 1: Usar apertura para eliminar pequeños ruidos en una imagen.

import cv2
import numpy as np

# Cargar la imagen
image = cv2.imread('imagen_ruidosa.jpg', cv2.IMREAD_GRAYSCALE)

# Aplicar apertura con un kernel de 5x5
kernel_size = (5, 5)
opened_image = cv2.morphologyEx(image, cv2.MORPH_OPEN, np.ones(kernel_size, dtype=np.uint8))

cv2.imshow('Imagen Original', image)
cv2.imshow('Apertura', opened_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ejemplo 2: Usar cierre para llenar pequeñas brechas dentro de un objeto.

import cv2
import numpy as np

# Cargar la imagen
image = cv2.imread('imagen_brecha.jpg', cv2.IMREAD_GRAYSCALE)

# Aplicar cierre con un kernel de 3x3
closed_image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, np.ones((3, 3), dtype=np.uint8))

cv2.imshow('Imagen Original', image)
cv2.imshow('Cierre', closed_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Errores típicos / trampas

  1. Kernel no adecuado: El tamaño del kernel puede ser crucial. Un kernel muy grande puede alterar las formas de los objetos, mientras que uno muy pequeño puede no eliminar completamente el ruido.
  1. Perdida de detalles finos: Aplicar apertura o cierre con un kernel demasiado grande puede resultar en la pérdida de detalles importantes en la imagen original.
  1. Condiciones inadecuadas: No siempre son las mejores opciones para todos los tipos de imágenes y problemas, especialmente si se aplican a áreas donde los detalles son fundamentales (como textos o patrones).

Checklist accionable

  1. Validar el tamaño del kernel: Asegúrate de que es adecuado para la imagen en cuestión.
  2. Comprobar resultados intermedios: Verifica cómo se ven las imágenes antes y después de aplicar apertura o cierre.
  3. Comparar con otras técnicas: Analiza si otros métodos como umbralización, filtrados en frecuencia o detección de bordes pueden ser más apropiados.
  4. Asegurar la consistencia: Comprueba que los resultados son consistentes a lo largo del tiempo y bajo diferentes condiciones.
  5. Revisar el rendimiento: Evalúa si las operaciones morfológicas afectan negativamente el tiempo de procesamiento.

Siguientes pasos

  • Aprender más sobre análisis morfológico avanzado: Investigar técnicas como la transformada de Hough, segmentación basada en regiones y algoritmos de agrupamiento.
  • Explorar aplicaciones prácticas: Aplicar estas técnicas a proyectos reales para mejorar su comprensión e implementación.
  • Consultar documentación oficial: Familiarizarse con la documentación de OpenCV para obtener más detalles sobre parámetros y optimización.

Siguiendo estos pasos, podrás utilizar eficazmente las operaciones morfológicas en tus proyectos de visión por computador.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).