Ultralytics YOLO27: Únete a la lista de espera.
Licencia YOLO
Volver al glosario de Ultralytics

Optical Flow

El flujo óptico estima cómo se mueve cada píxel entre dos fotogramas de vídeo mediante un campo de vectores de movimiento. Descubre los métodos clásicos y profundos, sus usos y el código de OpenCV.

El flujo óptico es el movimiento aparente de los patrones de brillo entre dos imágenes, normalmente fotogramas de vídeo consecutivos. Un algoritmo de flujo óptico estima, para cada píxel del primer fotograma, un vector de desplazamiento 2D (dx, dy) que indica dónde aparece el contenido de ese píxel en el segundo fotograma. El resultado, denominado campo de flujo, capta el movimiento de los objetos y de la propia cámara, lo que permite a los sistemas de visión artificial estabilizar vídeo, estimar el movimiento propio, interpolar fotogramas y reconocer acciones. El flujo mide lo que ve la cámara, no el movimiento 3D real: una esfera perfectamente uniforme que gira sobre sí misma no produce flujo, y una sombra en movimiento produce flujo aunque nada físico se mueva.

Cómo se estima el flujo óptico#

La mayoría de los métodos parten de la constancia del brillo, es decir, de la suposición de que un punto mantiene la misma intensidad al moverse. Al linealizarla se obtiene una ecuación por píxel, Ix·u + Iy·v + It = 0, donde Ix, Iy y It son las derivadas de la imagen en x, y y el tiempo, y (u, v) es el flujo desconocido. Una ecuación no permite determinar dos incógnitas: este es el problema de la apertura. Si se observa un borde recto a través de una pequeña ventana, solo se puede medir el movimiento perpendicular al borde. Los métodos clásicos añaden una segunda suposición para resolverlo:

  • Método de Lucas-Kanade (1981): Supone que el flujo es constante dentro de una pequeña ventana y resuelve las ecuaciones de todos sus píxeles mediante mínimos cuadrados. Funciona cuando la ventana contiene gradientes en dos direcciones, como en las esquinas, por lo que suele aplicarse como flujo disperso sobre puntos de interés seleccionados.
  • Método de Horn-Schunck (1981): Supone que el campo de flujo es uniforme en toda la imagen y resuelve una optimización global, que produce un flujo denso para cada píxel.

Ambas suposiciones fallan con movimientos grandes, por lo que los métodos prácticos estiman el flujo de forma progresiva, de menor a mayor resolución, sobre una pirámide de imágenes. Así, un movimiento de 16 píxeles a resolución completa equivale a uno de 2 píxeles tres niveles más abajo:

OpenCV implementa Lucas-Kanade piramidal para puntos dispersos y el algoritmo de expansión polinómica de Gunnar Farnebäck de 2003 para flujo denso. Este código desplaza una textura aleatoria una cantidad conocida y recupera el movimiento mediante el flujo denso de Farnebäck:

import cv2
import numpy as np

# A smooth random texture, then the same texture moved 3 px right and 2 px down
rng = np.random.default_rng(0)
texture = cv2.GaussianBlur(rng.random((240, 320)), (0, 0), 3)
frame1 = cv2.normalize(texture, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
frame2 = np.roll(frame1, shift=(2, 3), axis=(0, 1))

# Dense Farneback optical flow: one (dx, dy) displacement vector for every pixel
flow = cv2.calcOpticalFlowFarneback(
    frame1, frame2, None, pyr_scale=0.5, levels=3, winsize=15, iterations=3, poly_n=5, poly_sigma=1.2, flags=0
)
print(f"flow field shape: {flow.shape}")
print(f"median motion: dx={np.median(flow[..., 0]):.2f}, dy={np.median(flow[..., 1]):.2f} pixels")

Imprime flow field shape: (240, 320, 2) y median motion: dx=3.00, dy=2.00 pixels: un vector de dos componentes por cada uno de los 76.800 píxeles, con el que recupera el desplazamiento de 3 píxeles en horizontal y 2 en vertical.

Métodos de aprendizaje profundo#

FlowNet demostró en 2015 que una red neuronal convolucional podía aprender el flujo de extremo a extremo a partir de datos de entrenamiento sintéticos, ya que rara vez se dispone del flujo real de referencia en los vídeos reales. PWC-Net incorporó a una red compacta las ideas clásicas de pirámide, deformación y volumen de costes. RAFT, que ganó el premio al mejor artículo de ECCV 2020, compara cada píxel del primer fotograma con cada píxel del segundo en un volumen de correlación y perfecciona un único campo de flujo de alta resolución mediante actualizaciones recurrentes repetidas. Los métodos aprendidos gestionan desplazamientos grandes, desenfoque por movimiento y regiones sin textura mucho mejor que los métodos clásicos, y torchvision incluye modelos RAFT preentrenados. La precisión se expresa como error de punto final (EPE), la distancia media en píxeles entre los vectores de flujo predichos y reales, en conjuntos de referencia como MPI Sintel y KITTI 2015.

  • Seguimiento de objetos: Sigue objetos completos con ID persistentes a lo largo de muchos fotogramas, mientras que el flujo óptico describe el movimiento por píxel entre dos fotogramas y no sabe nada de los objetos. Los rastreadores usan el flujo como indicio: en el modo de seguimiento de Ultralytics YOLO, el rastreador predeterminado TrackTrack y BoT-SORT estiman el movimiento de la cámara con flujo disperso de Lucas-Kanade (gmc_method: sparseOptFlow), siguen hasta 400 esquinas en un fotograma a media resolución, ajustan una rotación, una escala y una traslación a esas esquinas mediante RANSAC y desplazan todas las cajas de seguimiento predichas según ese movimiento antes de asociarlas con nuevas detecciones.
  • Seguimiento de puntos: Sigue puntos seleccionados a lo largo de vídeos extensos, incluso a través de oclusiones, en lugar de estimar el movimiento de cada píxel entre dos fotogramas.
  • Flujo de escena: El movimiento 3D de los puntos en el espacio, estimado a partir de datos estereoscópicos o de profundidad. El flujo óptico es su proyección sobre el plano de la imagen.
  • Vectores de movimiento de códecs de vídeo: Los codificadores H.264, HEVC y AV1 almacenan un vector de movimiento por bloque, elegido para minimizar los bits necesarios para codificar el fotograma, por lo que a menudo se desvía del movimiento real.

Aplicaciones en el mundo real#

  • Estabilización de vídeo: El flujo dominante a través de un fotograma revela las vibraciones de la cámara, que el software compensa deformando cada fotograma en la dirección opuesta.
  • Interpolación de fotogramas: La cámara lenta y la conversión de la frecuencia de fotogramas generan fotogramas intermedios desplazando los píxeles parcialmente a lo largo de sus vectores de flujo.
  • Vehículos autónomos y drones: El flujo ayuda a la odometría visual, y la velocidad a la que se expande el flujo de un objeto avisa de una colisión inminente.
  • Reconocimiento de acciones: La red de dos flujos de 2014 clasificaba acciones a partir de un flujo espacial de fotogramas individuales y un flujo temporal alimentado con una pila de 10 campos de flujo óptico consecutivos.

Explora las soluciones

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático