Explore os fundamentos do fluxo óptico na visão computacional. Saiba como os vetores de movimento impulsionam a compreensão de vídeos e aprimoram o rastreamento no Ultralytics .
O fluxo ótico é o padrão de movimento aparente de objetos, superfícies e bordas numa cena visual causado pelo movimento relativo entre um observador e uma cena. No campo da visão computacional, este conceito é fundamental para compreender a dinâmica temporal dentro de sequências de vídeo. Ao analisar o deslocamento de pixels entre dois quadros consecutivos, os algoritmos de fluxo óptico geram um campo vetorial onde cada vetor representa a direção e a magnitude do movimento para um ponto específico. Essa pista visual de baixo nível permite que os sistemas de inteligência artificial percebam não apenas o que está em uma imagem, mas como ela está se movendo, preenchendo a lacuna entre a análise de imagens estáticas e a compreensão de vídeos dinâmicos.
O cálculo do fluxo ótico geralmente baseia-se na suposição de constância de brilho, que postula que a intensidade de um pixel num objeto permanece constante de um quadro para o outro, mesmo quando ele se move. Os algoritmos utilizam esse princípio para resolver vetores de movimento usando duas abordagens principais:
Embora frequentemente usados em conjunto, é vital distinguir o fluxo ótico do rastreamento de objetos. O fluxo ótico é uma operação de baixo nível que descreve o movimento instantâneo dos pixels; ele não compreende inerentemente a identidade ou a persistência do objeto.
Em contrapartida, o rastreamento de objetos é uma tarefa de alto nível que localiza entidades específicas e atribui a elas um ID consistente ao longo do tempo. Rastreadores avançados, como os integrados ao Ultralytics , normalmente realizam a detecção de objetos para localizar o objeto e, em seguida, usam sinais de movimento — às vezes derivados do fluxo óptico — para associar detecções entre quadros. O fluxo ótico responde "a que velocidade esses pixels estão se movendo agora", enquanto o rastreamento responde "para onde foi o carro nº 5?"
A capacidade de estimar o movimento ao nível do pixel impulsiona uma ampla gama de tecnologias sofisticadas:
O exemplo a seguir demonstra como calcular o fluxo óptico denso usando a OpenCV , uma ferramenta padrão no ecossistema de visão computacional . Este trecho usa o algoritmo Farneback para gerar um mapa de fluxo entre dois quadros consecutivos.
import cv2
import numpy as np
# Simulate two consecutive frames (replace with actual image paths)
frame1 = np.zeros((100, 100, 3), dtype=np.uint8)
frame2 = np.zeros((100, 100, 3), dtype=np.uint8)
cv2.rectangle(frame1, (20, 20), (40, 40), (255, 255, 255), -1) # Object at pos 1
cv2.rectangle(frame2, (25, 25), (45, 45), (255, 255, 255), -1) # Object moved
# Convert to grayscale for flow calculation
prvs = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
next = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
# Calculate dense optical flow
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"Max motion detected: {np.max(mag):.2f} pixels")
Para aplicações de alto nível que exigem persistência de objetos em vez de movimento bruto de pixels, os utilizadores devem considerar os modos de rastreamento disponíveis no Ultralytics YOLO11 e YOLO26. Esses modelos abstraem a complexidade da análise de movimento, fornecendo IDs de objetos robustos e trajetórias prontas para uso em tarefas que vão desde monitoramento de tráfego até análise de varejo.