Scene Flow
Aprende cómo el flujo de escena estima el movimiento 3D entre fotogramas, en qué se diferencia del flujo óptico y la estimación de profundidad, y cómo facilita la conducción autónoma, la robótica y los flujos de trabajo de visión de YOLO26.
El flujo de escena es el campo de movimiento tridimensional de una escena dinámica a lo largo del tiempo. Describe cómo se mueven los puntos visibles en el espacio 3D real entre fotogramas, incluidos los movimientos laterales, verticales y hacia la cámara o en dirección contraria. En la visión artificial, el flujo de escena ayuda a los sistemas a entender no solo qué parece moverse en una imagen, sino también cómo cambia realmente la geometría del entorno.
Cómo representa el flujo de escena el movimiento 3D#
Una estimación del flujo de escena asigna un vector de desplazamiento o velocidad 3D a cada punto observado de la escena. Por ejemplo, si un peatón cruza una carretera mientras se acerca a una cámara, los vectores correspondientes describen tanto el movimiento lateral como la disminución de la distancia a la cámara.
Esto difiere del flujo óptico, que representa el movimiento aparente de los píxeles en el plano bidimensional de la imagen. Tal como explica el proyecto Carnegie Mellon Scene Flow, el flujo óptico puede entenderse como la proyección del flujo de escena 3D sobre una imagen de cámara. Por consiguiente, dos puntos pueden tener un movimiento similar en la imagen y, aun así, moverse de forma diferente en profundidad.
El flujo de escena denso estima el movimiento de la mayoría de los puntos visibles, mientras que el flujo de escena disperso abarca características seleccionadas, puntos seguidos o retornos LiDAR. Los resultados densos ofrecen más detalles geométricos, pero requieren más cálculo y correspondencias fiables entre fotogramas.
Flujo de escena frente a conceptos de visión relacionados#
El flujo de escena combina la estructura espacial con el movimiento temporal y se sitúa entre varias tareas relacionadas:
- Estimación del flujo óptico con OpenCV: Estima el desplazamiento horizontal y vertical de los píxeles. No permite determinar por sí sola si un objeto se ha movido en profundidad o si la cámara ha causado el movimiento aparente.
- Estimación de profundidad: Determina a qué distancia de la cámara están las superficies, normalmente en un solo fotograma. El flujo de escena también describe cómo cambian esas posiciones 3D a lo largo del tiempo.
- Visión estereoscópica: Utiliza píxeles correspondientes de cámaras sincronizadas para recuperar la profundidad. El flujo de trabajo de profundidad estéreo con OpenCV explica cómo la disparidad entre vistas permite la reconstrucción 3D.
- Seguimiento de objetos: Mantiene las identidades de los objetos entre fotogramas, normalmente mediante cuadros delimitadores o máscaras. En cambio, el flujo de escena estima el movimiento a nivel de punto o píxel y puede representar distintos movimientos dentro de un mismo objeto deformable.
- Movimiento de nubes de puntos: Los sistemas LiDAR y RGB-D pueden estimar el flujo de escena directamente entre conjuntos de puntos 3D. La guía de nubes de puntos de Open3D presenta la representación geométrica que utilizan muchas de estas cadenas de procesamiento.
El flujo de escena también depende de la geometría de la cámara. Una calibración de cámara con OpenCV precisa ayuda a separar el movimiento real de la escena de los cambios causados por la rotación, la traslación o la distorsión del objetivo de la cámara.
Aplicaciones en el mundo real#
-
Conducción autónoma: Un sistema de percepción puede estimar si un vehículo cercano está cambiando de carril, se acerca rápidamente o circula con el tráfico. A diferencia del movimiento 2D por sí solo, el flujo de escena permite razonar sobre el tiempo hasta la colisión porque incluye el movimiento a lo largo del eje de profundidad. Puede complementar los componentes de detección, seguimiento y profundidad en las soluciones de visión artificial para la automoción. El conjunto de pruebas de flujo de escena KITTI muestra cómo evaluar escenas de carretera con movimiento de cámara y objetos que se desplazan de forma independiente, mientras que la guía de seguridad de vehículos automatizados de la NHTSA ofrece un contexto más amplio sobre los sistemas de percepción centrados en la seguridad.
-
Robótica: Un robot móvil puede usar el flujo de escena para distinguir una estantería inmóvil de un trabajador en movimiento, estimar la trayectoria 3D de un obstáculo y actualizar su ruta antes de que se produzca una colisión. En las soluciones de visión para robótica, esta información puede combinarse con cámaras, sensores de profundidad y LiDAR. La documentación de mensajes de sensores de ROS define interfaces comunes para intercambiar imágenes, información de cámaras y nubes de puntos entre componentes robóticos.
Retos de estimación y datos#
El flujo de escena puede derivarse de vídeo estéreo, cámaras RGB-D, secuencias LiDAR o vídeo monocular con indicios aprendidos de profundidad y movimiento. Los sensores estéreo y de profundidad activa proporcionan mediciones geométricas más sólidas, mientras que los sistemas monoculares deben inferir la escala y resolver ambigüedades a partir del contexto visual.
Entre los fallos habituales se encuentran la oclusión, el desenfoque por movimiento, las superficies reflectantes, las regiones sin textura, las estructuras delgadas, los cambios de iluminación y el movimiento rápido entre fotogramas. El movimiento de la cámara plantea un reto adicional, ya que el sistema debe separar el movimiento propio de los objetos que se desplazan de forma independiente. Los errores pueden generar trayectorias 3D incorrectas y hacer que los sistemas posteriores de navegación o predicción de colisiones calculen mal la velocidad y la distancia.
Los datos de entrenamiento pueden incluir fotogramas RGB, profundidad o disparidad, flujo óptico, segmentación y parámetros de cámara. Los conjuntos de datos de flujo de escena de Friburgo muestran cómo estas anotaciones complementarias pueden describir conjuntamente la geometría y el movimiento.
Flujo de trabajo práctico#
Ultralytics YOLO26 puede aportar el componente de profundidad a una cadena de procesamiento de flujo de escena mediante su tarea documentada de estimación monocular de profundidad. El siguiente ejemplo genera un mapa de profundidad denso para un fotograma:
from ultralytics import YOLO
# Estima la estructura 3D de la escena en cada píxel.
model = YOLO("yolo26n-depth.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
result.save(filename="depth_result.jpg")
print(result.depth.data.shape)Este flujo de trabajo de YOLO26 no calcula el flujo de escena por sí solo. Proporciona la profundidad de cada píxel, que una cadena de procesamiento completa puede combinar con fotogramas consecutivos, correspondencias temporales y poses de cámara calibradas para estimar el desplazamiento 3D. En la práctica, los equipos deben validar cada componente por separado antes de evaluar el campo de movimiento completo, sobre todo en torno a oclusiones y límites de profundidad.









