Descubra el poder del Flujo Óptico en la visión artificial. Aprenda cómo estima el movimiento, mejora el análisis de video e impulsa las innovaciones en la IA.
El flujo óptico es un concepto fundamental en visión por ordenador que consiste en estimar el movimiento aparente de objetos, superficies y bordes en una escena visual. Este movimiento se calcula basándose en el movimiento relativo entre un observador (como una cámara) y la propia escena. El resultado de este proceso es un campo vectorial en el que cada vector representa el desplazamiento de un píxel o característica entre dos fotogramas de vídeo consecutivos. Mediante el análisis de estos vectores de movimiento, los sistemas pueden obtener una comprensión granular y de bajo nivel de la dinámica de la escena, respondiendo a la pregunta crítica de "¿cómo? la pregunta crítica de "cómo" se mueven los píxeles a lo largo del tiempo.
El cálculo del flujo óptico suele basarse en la hipótesis de la "constancia del brillo". Este principio postula que la intensidad del píxel de un punto específico de un objeto permanece constante entre fotogramas consecutivos, incluso cuando se mueve. aunque se mueva. Los algoritmos utilizan este supuesto para track el desplazamiento. Hay dos métodos principales para determinar estos campos de movimiento:
Es importante distinguir el flujo óptico del seguimiento de objetosya que tienen propósitos diferentes dentro de un proceso de visión. El flujo óptico es una operación de bajo nivel que describe el movimiento movimiento instantáneo de los píxeles sin comprender lo que representan. No mantiene intrínsecamente la identidad de un objeto a lo largo del tiempo.
En cambio, el seguimiento de objetos es una tarea de alto nivel que localiza entidades específicas y les asigna un ID coherente coherente en todos los fotogramas. Los modos de seguimiento avanzados, como los disponibles en Ultralytics YOLO11suelen realizar detección de objetos primero y luego utilizan señales de movimiento para asociar las detecciones. Mientras que un rastreador puede utilizar el flujo óptico internamente para predecir la posición, el objetivo del rastreador es la persistencia de la identidad ("¿A dónde fue el coche nº 4?"), mientras que el objetivo del flujo óptico es el mapeo del movimiento ("¿A qué velocidad se mueven estos píxeles a la derecha?"). ("¿A qué velocidad se mueven estos píxeles hacia la derecha?").
El flujo óptico es una herramienta versátil utilizada en diversas industrias para resolver problemas complejos relacionados con el movimiento.
El siguiente ejemplo Python muestra cómo calcular el flujo óptico denso utilizando la función OpenCV de OpenCV. Utiliza el algoritmo Gunnar Farneback, un método popular para la estimación del flujo denso.
import cv2
import numpy as np
# Load two consecutive frames (ensure these files exist)
frame1 = cv2.imread("frame1.jpg")
frame2 = cv2.imread("frame2.jpg")
# Convert frames to grayscale
prvs = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
next = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
# Calculate dense optical flow using Farneback's algorithm
flow = cv2.calcOpticalFlowFarneback(prvs, next, None, 0.5, 3, 15, 3, 5, 1.2, 0)
# Compute magnitude and angle of 2D vectors
mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1])
print(f"Flow shape: {flow.shape}") # Output: (Height, Width, 2)
print(f"Max motion magnitude: {np.max(mag):.2f} pixels")
Para usuarios que buscan integrar el análisis de movimiento con la detección de objetos, los modelos de detecciónUltralytics pueden combinarse con algoritmos de flujo para crear sólidos canales de análisis. Mientras que el flujo óptico proporciona los datos de movimiento en bruto, los modelos de nivel superior como YOLO11 proporcionan la la comprensión semántica necesaria para interpretar eficazmente ese movimiento. La I+D en curso sobre modelos como YOLO26 pretende unificar aún más la comprensión espacial y temporal para agilizar aún más el análisis integral del vídeo.