Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Visión por computador desde cero, Unidad 8 — Detección de formas y características, 8.1 — Contornos ·

Jerarquía de contornos

Jerarquía de contornos

Introducción

La detección de contornos es una técnica fundamental en la visión por computador, ya que permite identificar las formas y características de objetos en imágenes. No obstante, a menudo estos contornos pueden formar jerarquías complejas, lo que requiere estrategias adicionales para su análisis y clasificación. En esta lección, exploraremos la concepto de jerarquía de contornos y cómo utilizarla para obtener información más profunda sobre las estructuras visuales en imágenes.

Explicación principal

En una imagen, los contornos pueden formar jerarquías que representan relaciones entre diferentes partes del objeto. Por ejemplo, si tenemos un árbol, sus ramas podrían considerarse como sub-contornos de la copa general del árbol. Para analizar estas jerarquías, utilizamos técnicas de procesamiento de imágenes avanzadas.

Ejemplo práctico

Vamos a usar el módulo cv2 (OpenCV) en Python para detectar contornos y representar su jerarquía. Primero, cargaremos una imagen y usaremos la función findContours() para obtener los contornos. Luego, utilizaremos la propiedad de hierarchy proporcionada por OpenCV para visualizar las relaciones entre estos contornos.

import cv2

# Cargar la imagen en escala de grises
image = cv2.imread('example_image.jpg', 0)
_, contours, hierarchy = cv2.findContours(image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# Imprimir jerarquía de contornos
print(hierarchy)

En el código anterior:

  • cv2.imread carga la imagen en escala de grises.
  • cv2.findContours detecta los contornos y devuelve tres valores: una lista de contornos, un objeto hierarchy, y las imagenes cortadas (que no usamos aquí).

El hierarchy es una matriz con 4 columnas que representa la jerarquía de los contornos. Cada fila del hierarchy contiene información sobre el siguiente, anterior, padre y hijo de cada contorno.

Errores típicos / trampas

  1. Falta de normalización: Antes de detectar contornos, asegúrate de que la imagen esté correctamente normalizada para evitar errores en la detección. Esto incluye ajustar el contraste y brillo.
  2. Problemas con iluminación: La iluminación variada puede afectar significativamente a los resultados de la detección de contornos. Asegúrate de que las imágenes estén bien iluminadas o considera técnicas como correcciones de iluminación.
  3. Supuestos erróneos sobre el objeto: Si hay supuestos erróneos sobre el objeto, puede afectar a la jerarquía detectada. Por ejemplo, un contorno podría ser interpretado incorrectamente como parte del fondo en lugar de una parte del objeto.

Checklist accionable

  1. Normaliza la imagen: Ajusta el contraste y brillo para mejorar los resultados.
  2. Verifica la iluminación: Revisa que las imágenes estén bien iluminadas o realiza correcciones de iluminación.
  3. Define correctamente los contornos: Utiliza técnicas adecuadas para detectar contornos, como cv2.CHAIN_APPROX_SIMPLE.
  4. Analiza el hierarchy devuelto por OpenCV: Comprueba que comprendas la estructura de las relaciones entre los contornos.
  5. Asegúrate de un fondo claro: Si es posible, asegúrate de que el fondo de la imagen sea lo suficientemente distinto del objeto para una mejor detección.

Siguientes pasos

  • Avanzar a la siguiente lección en nuestra unidad: "Características simples" (área, perímetro, momentos).
  • Practicar con diferentes tipos de imágenes: Experimenta con imágenes variadas para mejorar tu comprensión y habilidades.
  • Aplicar la jerarquía de contornos a proyectos prácticos: Utiliza lo aprendido en aplicaciones reales como reconocimiento de patrones en imágenes.

Con estos conocimientos, podrás analizar imágenes más profundamente y obtener información valiosa sobre las estructuras visuales presentes.

Contacto

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