Yolo Vision Shenzhen
Shenzhen
Únete ahora
Glosario

Flujo Óptico

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.

Mecanismos básicos del flujo óptico

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:

  • Flujo óptico denso: Este método calcula un vector de movimiento para cada píxel de una imagen. Proporciona un mapa de movimiento mapa de movimiento completo y de alta resolución, que es esencial para tareas detalladas como segmentación de imágenes y la vídeo. Aunque son intensivos desde el punto de vista computacional, los aprendizaje profundo como RAFT (transformadas recurrentes de campo de todos los pares) han logrado un rendimiento puntero en la estimación densa, superando a los métodos matemáticos tradicionales.
  • Flujo óptico disperso: En lugar de analizar toda la imagen, los métodos dispersos track un conjunto selecto de características distintivas, como esquinas o bordes. o bordes, a menudo identificados extracción de características de características. Algoritmos como el método Lucas-Kanade son básicos en esta categoría. Dado que procesan menos datos puntos de datos, los métodos dispersos son muy eficientes y inferencia en tiempo real en tiempo real, donde la velocidad se antepone a la densidad.

Flujo Óptico vs. Seguimiento de Objetos

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?").

Aplicaciones reales de la IA

El flujo óptico es una herramienta versátil utilizada en diversas industrias para resolver problemas complejos relacionados con el movimiento.

  • Sistemas autónomos y robótica: En el ámbito de la vehículos autónomosel flujo óptico se utiliza para la odometría visual, es decir, para estimar el movimiento propio del vehículo en relación con el mundo. Ayuda a ayuda a detectar obstáculos en movimiento que la detección estática podría pasar por alto, lo que contribuye a una navegación más segura. Del mismo modo, en robóticalos agentes utilizan el flujo para manipular objetos y navegar por entornos dinámicos mediante marcos como ROS.
  • Reconocimiento de acciones: El análisis de los patrones temporales de movimiento permite a los sistemas de IA reconocer acciones humanas complejas. Por ejemplo, en tecnología de fitness inteligenteel flujo óptico puede ayudar a refinar estimación de la pose asegurándose de que los entre fotogramas, identificando ejercicios como las sentadillas o los giros de tenis.
  • Estabilización y compresión de vídeo: La electrónica de consumo depende en gran medida de la estimación del flujo. La estabilización electrónica de imagen (EIS) utiliza vectores de flujo para compensar las sacudidas de la cámara. Además, las normas de compresión de vídeo, como MPEG utilizan la estimación del movimiento para reducir el tamaño de los archivos codificando sólo las diferencias (residuales) entre fotogramas, en lugar de los fotogramas completos. completos.
  • Imagen médica: En análisis de imágenes médicasel flujo óptico se aplica para track la deformación de los tejidos, como los latidos del corazón en un ecocardiograma. Esto ayuda a los médicos a cuantificar la función de los órganos y detectar anomalías invisibles en imágenes estáticas.

Ejemplo de aplicación

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.

Únase a la comunidad Ultralytics

Únete al futuro de la IA. Conecta, colabora y crece con innovadores de todo el mundo

Únete ahora