EN JA ZH ES

Visión estéreo y medición de distancia - Recuperar información 3D a partir de disparidad

· 9 min de lectura

Principios de la visión estéreo - Simular la visión binocular humana

La visión estéreo utiliza dos cámaras en posiciones diferentes (similar a los ojos humanos) para capturar la misma escena, calculando la profundidad a partir de la disparidad (diferencia de posición del mismo punto en ambas imágenes). Mayor disparidad indica que el objeto está más cerca.

Principio básico: Para un sistema binocular con distancia de línea base B y distancia focal f, la relación entre profundidad Z y disparidad d es: Z = B × f / d. Esta es una aplicación directa de la triangulación.

Componentes del sistema:

  • Cámara binocular: Dos cámaras colocadas en paralelo, distancia de línea base 5-30cm
  • Calibración: Determinar parámetros intrínsecos (distancia focal, punto principal) y extrínsecos (posición relativa)
  • Rectificación: Transformar ambas imágenes para alinear filas (simplifica la correspondencia)
  • Correspondencia: Encontrar píxeles correspondientes en las imágenes izquierda y derecha
  • Triangulación: Calcular coordenadas 3D a partir de la disparidad

Diferencia con estimación monocular de profundidad: La visión estéreo se basa en principios geométricos con precisión cuantificable; la estimación monocular se basa en priors aprendidos con precisión dependiente de los datos de entrenamiento. La visión estéreo es adecuada para escenarios que requieren medición precisa.

Geometría epipolar y rectificación

La geometría epipolar describe las restricciones geométricas entre dos vistas de cámara y es la base matemática de la correspondencia estéreo.

Restricción epipolar: Un punto en la imagen izquierda tiene su correspondiente necesariamente sobre una línea (línea epipolar) en la imagen derecha. Esto simplifica el problema de búsqueda 2D a búsqueda 1D.

Matriz fundamental F: Matriz 3×3 que codifica la geometría epipolar entre dos vistas. Para puntos correspondientes x y x': x'^T F x = 0. Se puede estimar a partir de 8 o más pares de puntos correspondientes.

Rectificación estéreo:

  • Transformar ambas imágenes para que las líneas epipolares queden horizontalmente alineadas
  • Tras la rectificación, los puntos correspondientes están en la misma fila, la correspondencia solo requiere búsqueda horizontal
  • OpenCV: cv2.stereoRectify() calcula la transformación de rectificación
  • cv2.initUndistortRectifyMap() + cv2.remap() aplican la transformación

Calibración de cámara: Usando un tablero de ajedrez de calibración, cv2.stereoCalibrate() calibra simultáneamente los parámetros intrínsecos y la pose relativa de ambas cámaras. La precisión de calibración afecta directamente la precisión de medición de profundidad.

Correspondencia estéreo - Block Matching y SGM

La correspondencia estéreo es el paso central de la visión estéreo, encontrando puntos correspondientes en las imágenes izquierda y derecha para cada píxel y calculando la disparidad.

Block Matching (BM):

  • Para cada píxel de la imagen izquierda, buscar el bloque más similar en la misma fila de la imagen derecha
  • Métricas de similitud: SAD (suma de diferencias absolutas), SSD (suma de diferencias cuadradas), NCC (correlación cruzada normalizada)
  • Rápido pero resultados ruidosos, impreciso en bordes
  • OpenCV: cv2.StereoBM_create(numDisparities=64, blockSize=15)

SGM (Semi-Global Matching):

  • Optimización de caminos en múltiples direcciones (normalmente 8 o 16)
  • Equilibra el coste de correspondencia local y la suavidad global
  • Calidad muy superior al block matching, algoritmo principal en aplicaciones reales
  • OpenCV: cv2.StereoSGBM_create(minDisparity=0, numDisparities=128, blockSize=5)

Ajuste de parámetros:

  • numDisparities: Rango máximo de disparidad, depende de la distancia del objeto más cercano
  • blockSize: Tamaño de ventana de correspondencia. Ventanas grandes suavizan pero pierden detalle
  • P1, P2: Penalizaciones de suavidad SGM. P2 > P1, P2 controla la penalización en discontinuidades de profundidad

Correspondencia estéreo con aprendizaje profundo

Los métodos de aprendizaje profundo superan ampliamente a los métodos tradicionales en precisión de correspondencia estéreo, especialmente en regiones con oclusión y texturas débiles.

AANet (2020): Usa agregación adaptativa en lugar de convoluciones 3D para construir el volumen de costes, rápido y preciso. Cercano a tiempo real en KITTI.

RAFT-Stereo (2021): Adapta la arquitectura de flujo óptico RAFT a la correspondencia estéreo. Actualiza iterativamente la estimación de disparidad, alcanzando el estado del arte en los benchmarks Middlebury y ETH3D.

CREStereo (2022): Red recurrente en cascada que refina progresivamente la disparidad de grueso a fino. Primer puesto en múltiples benchmarks.

Métodos auto-supervisados: No requieren mapas de disparidad ground truth para el entrenamiento. Usan restricciones de consistencia izquierda-derecha y pérdida fotométrica para aprendizaje auto-supervisado. Adecuados para escenarios donde el ground truth es difícil de obtener.

Estéreo en tiempo real con aprendizaje profundo: HITNet (Google) logra correspondencia estéreo en tiempo real en dispositivos edge. MobileStereoNet optimizado para dispositivos móviles. Despliegue con TensorRT puede alcanzar 30+ fps.

Conversión de mapa de disparidad a nube de puntos 3D

Convertir el mapa de disparidad en coordenadas 3D, generando una nube de puntos utilizable para medición y visualización.

Fórmulas de conversión:

X = (u - cx) × Z / f
Y = (v - cy) × Z / f
Z = B × f / d

Donde (u,v) son coordenadas de píxel, (cx,cy) es el punto principal, f es la distancia focal, B es la línea base y d es la disparidad.

Implementación OpenCV:

Q = cv2.stereoRectify(...)[4] # Matriz de reproyección
points_3d = cv2.reprojectImageTo3D(disparity, Q)

Filtrado de nube de puntos:

  • Eliminar puntos correspondientes a disparidad inválida (d=0 o negativa)
  • Eliminar puntos demasiado lejanos (disparidad muy pequeña, baja precisión)
  • Filtrado estadístico para eliminar valores atípicos

Análisis de precisión: La relación entre precisión de profundidad y precisión de disparidad: ΔZ = Z² / (B×f) × Δd. A mayor distancia, el mismo error de disparidad produce mayor error de profundidad. Esta es una limitación inherente de la visión estéreo.

Visión estéreo práctica - Construcción de sistemas y aplicaciones

Selección de hardware, proceso de calibración y aplicaciones típicas para construir sistemas prácticos de visión estéreo.

Selección de hardware:

  • Consumo: Intel RealSense D435/D455 (infrarrojo activo + estéreo), ZED 2 (estéreo pasivo)
  • Industrial: Sistemas binoculares Basler, pares de cámaras sincronizadas FLIR
  • DIY: Dos cámaras USB del mismo modelo + soporte fijo

Proceso de calibración:

  • Imprimir tablero de calibración de ajedrez (9×6 o 7×5 esquinas internas)
  • Capturar 20-30 pares de imágenes desde múltiples ángulos
  • cv2.findChessboardCorners() detecta esquinas
  • cv2.stereoCalibrate() calcula parámetros de calibración
  • Error de reproyección < 0.5 píxeles indica buena calibración

Escenarios de aplicación:

  • Evasión de obstáculos en robots: Mapa de profundidad en tiempo real para planificación de trayectorias
  • Medición industrial: Medición dimensional sin contacto, precisión hasta 0.1mm
  • Conducción autónoma: Estimación de distancia a obstáculos frontales
  • AR/VR: Percepción de profundidad para manejo de oclusiones y reconocimiento de gestos

Artículos relacionados

Fundamentos de calibración de cámara - Guía práctica de parámetros intrínsecos y corrección de distorsión

Aprende los principios básicos de la calibración de cámara, incluyendo el modelo de cámara estenopeica, modelos de distorsión de lentes y los pasos prácticos del método de Zhang.

Tecnología y aplicaciones de estimación de profundidad monocular - Inferir profundidad desde una sola imagen

Guía sistemática de generación de mapas de profundidad desde los modelos MiDaS y DPT hasta aplicaciones en conducción autónoma y RA. Cubre principios hasta implementación práctica.

Fundamentos de nubes de puntos y reconstrucción 3D - De la adquisición al procesamiento

Guía completa sobre datos de nubes de puntos que cubre métodos de adquisición, preprocesamiento, registro y reconstrucción de mallas con ejemplos de pipelines en Open3D.

Fundamentos de correspondencia de puntos característicos - Principios e implementación de SIFT, ORB y AKAZE

Explica la correspondencia de puntos característicos para encontrar correspondencias entre imágenes. Cubre algoritmos de detección y descripción SIFT, ORB, AKAZE, métodos de correspondencia y rechazo de valores atípicos con ejemplos.

Procesamiento de imágenes en la inspección industrial - De la inspección visual a la medición dimensional

Explicación sistemática de la aplicación del procesamiento de imágenes en la inspección industrial. Cubre detección de defectos, medición dimensional, inspección de superficies y métodos de aprendizaje profundo.

Principios y práctica del desenfoque de imagen - Del desenfoque de movimiento a la recuperación de desenfoque

Guía sistemática de técnicas de desenfoque de imagen que cubre filtrado de Wiener, deconvolución ciega y métodos de vanguardia basados en aprendizaje profundo con detalles de implementación.

Términos relacionados