Descubra o poder do Fluxo Óptico na visão computacional. Aprenda como ele estima o movimento, aprimora a análise de vídeo e impulsiona inovações em IA.
O fluxo ótico é um conceito fundamental em visão computacional que envolve estimar o movimento aparente de objectos, superfícies e arestas numa cena visual. Este movimento é calculado com base no movimento relativo entre um observador (como uma câmara) e a própria cena. O resultado deste processo é um campo vetorial campo de vectores em que cada vetor representa o deslocamento de um pixel ou elemento entre duas imagens de vídeo consecutivas. Ao analisar estes vectores de movimento, os sistemas podem obter uma compreensão granular e de baixo nível da dinâmica da cena, respondendo respondendo à questão crítica de "como" os pixéis se estão a mover ao longo do tempo.
O cálculo do fluxo ótico baseia-se normalmente no pressuposto de "constância de brilho". Este princípio Este princípio pressupõe que a intensidade do pixel de um ponto específico de um objeto permanece constante entre fotogramas consecutivos, mesmo quando mesmo quando o objeto se move. Os algoritmos utilizam este pressuposto para track a deslocação. Existem duas abordagens principais para determinar estes campos de movimento:
É importante distinguir entre fluxo ótico e rastreio de objectosuma vez que têm finalidades diferentes num pipeline de visão. O fluxo ótico é uma operação de baixo nível que descreve o movimento movimento instantâneo de pixéis sem compreender o que esses pixéis representam. Não mantém inerentemente a identidade de um identidade de um objeto ao longo do tempo.
Em contraste, o seguimento de objectos é uma tarefa de alto nível que localiza entidades específicas e lhes atribui uma identificação consistente consistente em todos os fotogramas. Modos avançados de rastreamento, como os disponíveis no Ultralytics YOLO11normalmente efectuam deteção de objectos de objectos e depois utilizam pistas de movimento para associar as detecções. Enquanto um localizador pode utilizar internamente o fluxo ótico para prever a posição, o objetivo do localizador é a persistência da identidade ("Para onde foi o carro #4?"), enquanto o objetivo do fluxo ótico é o mapeamento do movimento movimento ("A que velocidade estão estes pixéis a mover-se para a direita?").
O fluxo ótico é uma ferramenta versátil utilizada em várias indústrias para resolver problemas complexos relacionados com o movimento.
O seguinte exemplo Python demonstra como calcular o fluxo ótico denso utilizando o OpenCV biblioteca. Este exemplo utiliza o algoritmo Gunnar Farneback, um método popular para a estimativa de fluxo 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 utilizadores que pretendem integrar a análise de movimento com a deteção de objectos, modelos de deteçãoUltralytics podem ser combinados com algoritmos de fluxo para criar pipelines analíticos robustos. Enquanto o fluxo ótico fornece os dados brutos de movimento, modelos de nível superior como o YOLO11 fornecem a compreensão semântica necessária para interpretar esse movimento de forma eficaz. A I&D em curso em modelos como o YOLO26 tem como objetivo unificar ainda mais a compreensão espacial e e temporal para uma análise de vídeo de ponta a ponta ainda mais rápida.