Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Segmentación de imágenes, Unidad 3 — Segmentación clásica (pre-Deep Learning), 3.1 — Segmentación por umbral ·

Umbral adaptativo

Umbral adaptativo

Introducción

La segmentación de imágenes es una técnica clave en la visión por computador que implica dividir una imagen en regiones con características similares. Una de las técnicas clásicas utilizadas para lograr esto es la segmentación por umbral, especialmente cuando se aplica el umbral adaptativo. En este artículo, exploraremos cómo funciona el umbral adaptativo y cuándo puede ser útil.

Explicación principal

El umbral adaptativo es una técnica que busca mejorar sobre el umbral global aplicando un umbral diferente a diferentes partes de la imagen en lugar de usar un umbral único para toda ella. Esto se hace suponiendo que las diferentes regiones de la imagen pueden tener diferentes niveles de luminosidad y, por lo tanto, necesitan umbrales distintos.

En términos prácticos, el algoritmo del umbral adaptativo ajusta el umbral dinámicamente basándose en los valores de píxel locales. Esto es útil para imágenes con altas variaciones en la luminosidad y contrastes entre regiones.

Ejemplo

Imagina que tienes una imagen en escala de grises donde las áreas oscuras representan el fondo y las áreas brillantes son objetos. El umbral adaptativo ajusta el umbral dinámicamente para cada pequeña región de la imagen, lo que puede resultar en un mejor contraste entre los objetos y el fondo.

import cv2

# Cargar imagen
img = cv2.imread('imagen.jpg', 0)

# Aplicar umbral adaptativo
adapted_threshold = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C,
                                          cv2.THRESH_BINARY, blockSize=11, C=2)

# Mostrar imágenes
cv2.imshow('Original', img)
cv2.imshow('Adapted Thresholding', adapted_threshold)
cv2.waitKey(0)

En este código, blockSize determina el tamaño de la ventana local que se utiliza para calcular el umbral adaptativo. Un valor más grande de blockSize significa una mayor extensión local a considerar en cada píxel.

Errores típicos / trampas

  1. Escogencia inadecuada del tamaño de bloque: El tamaño de la ventana para calcular el umbral adaptativo es crítico. Un valor muy pequeño puede hacer que el algoritmo sea demasiado sensible a los cambios en intensidad locales, mientras que un valor muy grande puede promediar las variaciones en la luminosidad y no mejorar sobre el umbral global.
  1. Omisión de detalles pequeños: El algoritmo del umbral adaptativo puede perder detalles pequeños o ruido, especialmente si se aplica a una imagen con mucho ruido.
  1. Perdida de detalles en áreas uniformes: En áreas donde la luminosidad varía solo ligeramente, el umbral adaptativo puede no ser lo suficientemente sensible para capturar las diferencias entre los píxels y puede resultar en pérdida de detalles.

Checklist accionable

  1. Determina adecuadamente el tamaño del bloque: El tamaño del bloque debe ajustarse según la imagen y el problema que se esté intentando resolver.
  2. Ajusta el parámetro C (offset): Este parámetro puede ajustar la sensibilidad del umbral adaptativo a los valores locales de píxel.
  3. Utiliza una imagen sin ruido: El algoritmo es sensible a ruido, así que asegúrate de tener una imagen con buena calidad para obtener mejores resultados.
  4. Prueba diferentes métodos de adaptación: ADAPTIVE_THRESH_MEAN_C y ADAPTIVE_THRESH_GAUSSIAN_C son las opciones más comunes, pero cada uno tiene sus propias fortalezas y debilidades.
  5. Valida los resultados: Asegúrate de revisar visualmente los resultados para verificar que el algoritmo está funcionando correctamente.

Cierre

El umbral adaptativo es una herramienta valiosa en la segmentación de imágenes, pero como con cualquier técnica, requiere un ajuste cuidadoso y una comprensión clara del problema a resolver. Si bien puede mejorar sobre el umbral global, también presenta desafíos en términos de parámetros adecuados y detalles perdidos.

Siguientes pasos

  • Prueba diferentes tamaños de bloque: Experimenta con valores diferentes para blockSize para ver cuál mejor se adapta a tu problema.
  • Ajusta el offset C: Observa cómo los resultados cambian cuando ajustas la variable C.
  • Aplica en diferentes contextos: Prueba este algoritmo en diversas aplicaciones de segmentación y observa cómo afecta a tus resultados.

¡Esperamos que este artículo te haya ayudado a entender mejor el umbral adaptativo y cómo utilizarlo efectivamente para tu trabajo en la visión por computador!

Contacto

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