4.3 Visión por Computadora Clásica

Por Qué Esto Importa

Antes de aprender sobre los algoritmos modernos de visión por computadora, es útil entender primero qué hacían los métodos tradicionales de visión por computadora. Esto nos da una base sólida y facilita la comprensión posterior de algoritmos más avanzados.

image-20260331140710679

La visión por computadora tradicional se centraba en enseñar a los computadores cómo encontrar información útil en las imágenes, como bordes, formas, esquinas y movimiento. Estos métodos se basaban en reglas diseñadas por humanos, en lugar de aprender automáticamente de grandes cantidades de datos como hacen los modelos modernos de deep learning. Aunque eran más simples, ayudaron a resolver muchas tareas básicas de visión y sentaron las bases para las técnicas más potentes de visión por computadora actuales.

Métodos Clásicos

Filtrado

image-20260331141309862

El filtrado cambia la estructura local de la imagen. Algunos filtros reducen el ruido, mientras que otros realzan los detalles.

El filtrado funciona dejando que cada píxel sea actualizado usando sus píxeles vecinos. En otras palabras, el algoritmo desliza una pequeña ventana, llamada kernel, sobre la imagen y calcula un nuevo valor para cada posición.

image-20260331152645839

Ejemplos:

  • Desenfoque por media: reemplaza un píxel con el promedio de sus vecinos, suavizando la imagen
  • Desenfoque gaussiano: da más peso a los píxeles cercanos, lo que suele hacer que el desenfoque parezca más natural
  • Desenfoque de mediana: reemplaza un píxel con el valor central de su vecindario
  • Realce: aumenta las diferencias locales para que los bordes y los detalles finos destaquen más claramente

Estos filtros son útiles porque las imágenes reales de cámara suelen contener ruido, pequeñas fluctuaciones de brillo o detalles inestables que necesitan ser suavizados o realzados antes de los pasos de visión posteriores.

Inténtalo:

bash
cd 4.3-Classical-Computer-Vision/code
python filtering.py

🚀 Puedes intentar arrastrar el deslizador para ver diferentes modos de filtrado y modificar diferentes parámetros del kernel para observar los cambios en la imagen.

image-20260331153010183

Umbralización

La umbralización es una manera simple de convertir una imagen en escala de grises en un resultado en blanco y negro. La idea básica es: elegir un valor umbral y luego comparar cada píxel con él. Si un píxel es más brillante que el umbral, se vuelve blanco; de lo contrario, se vuelve negro. Esto convierte los valores de píxel continuos en una decisión mucho más simple de sí o no, lo que facilita separar los objetos del fondo.

image-20260331142045879

Esto es útil en:

  • procesamiento de documentos
  • inspección industrial simple
  • extracción de primer plano en escenas controladas

Inténtalo:

bash
cd 4.3-Classical-Computer-Vision/code
python thresholding.py

🚀 Intenta arrastrar el deslizador para modificar diferentes umbrales y observar los cambios en la imagen.

image-20260331162811153

Detección de Bordes

Los bordes a menudo corresponden a límites donde la intensidad cambia bruscamente.

image-20260331142022364

La detección de bordes es una manera de encontrar los límites importantes en una imagen. La idea básica es simple: el algoritmo observa cuánto cambia el brillo del píxel de una ubicación a la siguiente. Si el cambio es muy pequeño, probablemente es parte de la misma región. Si el cambio es repentino y grande, esa ubicación es probablemente un borde. En la práctica, muchos métodos primero suavizan la imagen un poco para reducir el ruido, luego calculan los cambios de intensidad en las direcciones horizontal y vertical, y finalmente conservan los cambios más fuertes como bordes. Esto ayuda a un computador a resaltar los contornos de objetos, la estructura de forma y la disposición de la escena con más claridad.

La detección de bordes ayuda a revelar:

  • estructura de forma
  • límites de objetos
  • geometría de la escena

Inténtalo:

bash
cd 4.3-Classical-Computer-Vision/code
python edge_detection.py

🚀 Arrastra el deslizador para ver diferentes modos y modifica diferentes parámetros para observar los cambios en la imagen.

image-20260331163055712

Contornos

Los contornos describen los perfiles de los objetos en una imagen binaria.

image-20260331142747289

Los contornos son una manera para que un computador trace el perfil de los objetos en una imagen binaria. El proceso habitual es: primero convertir la imagen en blanco y negro, luego tratar una parte como el objeto y la otra como el fondo. Después, el algoritmo sigue el límite donde se encuentran y registra el perfil como un conjunto de puntos conectados. De esta forma, un contorno es básicamente el borde de la forma de un objeto. Una vez encontrado el perfil, el computador puede usarlo para medir tamaño, contar objetos o analizar la forma más fácilmente.

Son útiles para:

  • análisis de formas
  • contar objetos
  • medir área y perímetro

Inténtalo:

bash
cd 4.3-Classical-Computer-Vision/code
python contours.py

🚀 Intenta arrastrar el deslizador para modificar diferentes umbrales y observar los cambios en la imagen.

image-20260331163359282

Operaciones Morfológicas

Las operaciones morfológicas son métodos simples de procesamiento de imágenes que cambian la forma de las regiones blancas en una imagen binaria. Funcionan moviendo un pequeño patrón, llamado kernel o elemento estructurante, por la imagen y comprobando cómo encaja con el primer plano. La erosión reduce los objetos eliminando los píxeles del límite, por lo que el ruido pequeño puede desaparecer. La dilatación agranda los objetos añadiendo píxeles alrededor de los límites, lo que puede rellenar pequeños huecos. La apertura es erosión seguida de dilatación, por lo que elimina pequeñas manchas ruidosas mientras conserva la forma principal. El cierre es dilatación seguida de erosión, por lo que rellena pequeños agujeros y conecta partes rotas. En resumen, la morfología es útil para limpiar máscaras ruidosas y facilitar el análisis de las formas de los objetos.

image-20260331142417743

Operaciones comunes:

  • erosión
  • dilatación
  • apertura
  • cierre

Estas son especialmente útiles cuando las máscaras son ruidosas o están fragmentadas.

Inténtalo:

bash
cd 4.3-Classical-Computer-Vision/code
python morphological_operate.py

🚀 Intenta arrastrar el deslizador para modificar diferentes umbrales y observar los cambios en la imagen.

image-20260331163707790

Detección y Emparejamiento de Características

Una característica es un punto o patrón visualmente distintivo. El emparejamiento de características se utiliza para comparar imágenes, alinear vistas o estimar relaciones geométricas.

image-20260331142714201

La detección de características significa encontrar puntos o patrones especiales en una imagen que son fáciles de reconocer de nuevo, como esquinas, blobs o parches con textura. El emparejamiento de características significa comparar estos puntos entre dos imágenes para encontrar cuáles corresponden a la misma ubicación del mundo real. Un flujo de trabajo común es: primero detectar puntos clave, luego calcular un descriptor para cada uno, que es un resumen numérico compacto de la apariencia local, y finalmente comparar los descriptores para encontrar las mejores coincidencias. OpenCV describe matchers como Brute-Force, que compara un descriptor contra todos los demás, y FLANN, que acelera la búsqueda en grandes conjuntos. Esto es útil porque, una vez que se encuentran buenas coincidencias, el computador puede alinear imágenes, unir panoramas, estimar movimiento o localizar un objeto desde otra vista.

Esta idea es importante para:

  • unión de panoramas
  • alineación de imágenes
  • localización
  • odometría visual

Inténtalo:

bash
cd 4.3-Classical-Computer-Vision/code
python feature_detection_matching.py

🚀 Intenta arrastrar el deslizador para modificar diferentes modos de emparejamiento y observar los cambios en la imagen.

image-20260331173910126

Malentendidos Comunes

  • "La visión clásica está obsoleta."
    • Es más antigua, pero no obsoleta. Sigue siendo útil para preprocesamiento, medición y lógica basada en reglas.
  • "El deep learning reemplazó todo el procesamiento de imágenes tradicional."
    • En la práctica, muchos sistemas modernos siguen incluyendo operaciones clásicas.
  • "Si la umbralización funciona en una imagen, funcionará en todas partes."
    • Los métodos clásicos pueden ser sensibles a la iluminación y al contexto.

Ejercicios / Reflexión

  1. Aplica umbralización a una imagen con un primer plano simple y cuenta los objetos conectados.
  2. Compara mapas de bordes antes y después del desenfoque gaussiano. ¿Qué cambia?
  3. Prueba erosión y dilatación en la misma máscara binaria. ¿Qué le ocurre a las regiones pequeñas?
  4. Reflexiona sobre una situación en la que un método clásico simple puede ser mejor que un modelo profundo.

Resumen

La visión por computadora clásica ofrece a los estudiantes una manera transparente de comprender las transformaciones de imágenes. También sigue siendo útil en sistemas reales para preprocesamiento, filtrado, razonamiento de formas y lógica visual ligera.

Siguiente Paso Sugerido

Continúa a 4.4 Redes Neuronales y CNN.

Referencias