Scene Flow
Aprende como o fluxo de cena estima o movimento 3D entre fotogramas, em que difere do fluxo ótico e da estimativa de profundidade, e como contribui para a condução autónoma, a robótica e os fluxos de trabalho de visão com YOLO26.
O fluxo de cena é o campo de movimento tridimensional de uma cena dinâmica ao longo do tempo. Descreve como os pontos visíveis se movem no espaço 3D real entre fotogramas, incluindo movimentos laterais, verticais e em direção à câmera ou para longe dela. Em visão computacional, o fluxo de cena ajuda os sistemas a compreender não apenas o que parece se mover numa imagem, mas também como a geometria ao redor realmente muda.
Como o fluxo de cena representa o movimento 3D#
Uma estimativa do fluxo de cena atribui um vetor de deslocamento ou velocidade 3D a cada ponto observado da cena. Por exemplo, se um peão atravessa uma estrada enquanto se aproxima de uma câmera, os vetores correspondentes descrevem tanto o movimento lateral como a diminuição da distância até à câmera.
Isto é diferente do fluxo óptico, que representa o movimento aparente dos píxeis no plano bidimensional da imagem. Como explica o projeto Carnegie Mellon Scene Flow, o fluxo óptico pode ser entendido como a projeção do fluxo de cena 3D numa imagem de câmera. Por conseguinte, dois pontos podem ter movimentos semelhantes na imagem, embora se movam de forma diferente em profundidade.
As estimativas densas do fluxo de cena calculam o movimento da maioria dos pontos visíveis, enquanto as estimativas esparsas abrangem características selecionadas, pontos rastreados ou retornos LiDAR. A saída densa fornece mais detalhes geométricos, mas exige mais computação e correspondências fiáveis entre fotogramas.
Fluxo de cena vs. conceitos de visão relacionados#
O fluxo de cena combina a estrutura espacial com o movimento temporal, situando-se entre várias tarefas relacionadas:
- Estimativa do fluxo óptico com OpenCV: estima o deslocamento horizontal e vertical dos píxeis. Não consegue determinar de forma independente se um objeto se moveu em profundidade ou se a câmera causou o movimento aparente.
- Estimativa de profundidade: determina a distância das superfícies à câmera, normalmente num único fotograma. O fluxo de cena também descreve como essas posições 3D mudam ao longo do tempo.
- Visão estéreo: usa píxeis correspondentes de câmeras sincronizadas para recuperar a profundidade. O fluxo de trabalho de profundidade estéreo do OpenCV explica como a disparidade entre vistas contribui para a reconstrução 3D.
- Rastreamento de objetos: mantém as identidades dos objetos entre fotogramas, geralmente usando caixas delimitadoras ou máscaras. Em vez disso, o fluxo de cena estima o movimento ao nível do ponto ou do píxel e pode representar movimentos diferentes dentro de um único objeto deformável.
- Movimento de nuvens de pontos: os sistemas LiDAR e RGB-D podem estimar diretamente o fluxo de cena entre conjuntos de pontos 3D. O guia de nuvens de pontos do Open3D apresenta a representação geométrica usada em muitos desses pipelines.
O fluxo de cena também depende da geometria da câmera. Uma calibração de câmera com OpenCV precisa ajuda a separar o movimento real da cena das alterações causadas pela rotação e translação da câmera ou pela distorção da lente.
Aplicações no mundo real#
-
Condução autónoma: um sistema de perceção pode estimar se um veículo próximo está a mudar de faixa, a aproximar-se rapidamente ou a acompanhar o fluxo do trânsito. Ao contrário do movimento 2D isolado, o fluxo de cena permite raciocinar sobre o tempo até à colisão porque inclui o movimento ao longo do eixo de profundidade. Pode complementar os componentes de deteção, rastreamento e profundidade em soluções de visão computacional para o setor automóvel. O benchmark de fluxo de cena KITTI ilustra a avaliação em cenas rodoviárias com movimento da câmera e objetos em movimento independente, enquanto as orientações da NHTSA para a segurança de veículos automatizados fornecem um contexto mais amplo para sistemas de perceção centrados na segurança.
-
Robótica: um robô móvel pode usar o fluxo de cena para distinguir uma prateleira imóvel de um trabalhador em movimento, estimar a trajetória 3D de um obstáculo e atualizar o percurso antes de ocorrer uma colisão. Em soluções de visão para robótica, estas informações podem ser combinadas com câmeras, sensores de profundidade e LiDAR. A documentação das mensagens de sensores do ROS define interfaces comuns para trocar imagens, informações de câmera e nuvens de pontos entre componentes robóticos.
Desafios de estimação e dados#
O fluxo de cena pode ser derivado de vídeo estéreo, câmeras RGB-D, sequências LiDAR ou vídeo monocular com pistas de profundidade e movimento aprendidas. Os sensores estéreo e de profundidade ativa fornecem medições geométricas mais sólidas, enquanto os sistemas monoculares têm de inferir a escala e resolver ambiguidades com base no contexto visual.
Os casos de falha comuns incluem oclusão, desfoque de movimento, superfícies refletoras, regiões sem textura, estruturas finas, alterações na iluminação e movimentos rápidos entre fotogramas. O movimento da câmera acrescenta outro desafio, pois o sistema tem de separar o movimento próprio dos objetos que se movem de forma independente. Os erros podem gerar trajetórias 3D incorretas, levando os sistemas de navegação ou previsão de colisões a jusante a avaliar mal a velocidade e a distância.
Os dados de treino podem incluir fotogramas RGB, profundidade ou disparidade, fluxo óptico, segmentação e parâmetros da câmera. Os conjuntos de dados Freiburg Scene Flow demonstram como estas anotações complementares podem descrever em conjunto a geometria e o movimento.
Fluxo de trabalho prático#
O Ultralytics YOLO26 pode fornecer o componente de profundidade de um pipeline de fluxo de cena através da sua tarefa documentada de estimativa monocular de profundidade. O exemplo seguinte produz um mapa de profundidade denso para um fotograma:
from ultralytics import YOLO
# Estima a estrutura 3D da cena por píxel.
model = YOLO("yolo26n-depth.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
result.save(filename="depth_result.jpg")
print(result.depth.data.shape)Este fluxo de trabalho do YOLO26 não calcula o fluxo de cena por si só. Fornece profundidade por píxel, que um pipeline completo pode combinar com fotogramas consecutivos, correspondências temporais e poses de câmera calibradas para estimar o deslocamento 3D. Na prática, as equipas devem validar cada componente separadamente antes de avaliar o campo de movimento completo, sobretudo nas zonas de oclusão e nos limites de profundidade.









