Scene Flow
Scopri come lo scene flow stima il movimento 3D tra i fotogrammi, in cosa differisce dal flusso ottico e dalla stima della profondità e come supporta la guida autonoma, la robotica e i flussi di lavoro di visione con YOLO26.
Il flusso della scena è il campo di moto tridimensionale di una scena dinamica nel tempo. Descrive come si spostano i punti visibili nello spazio 3D reale tra un fotogramma e l’altro, includendo il movimento laterale, verticale e verso o lontano dalla telecamera. Nella visione artificiale, il flusso della scena aiuta i sistemi a capire non solo cosa sembra muoversi in un’immagine, ma anche come cambia effettivamente la geometria circostante.
Come il flusso della scena rappresenta il movimento 3D#
Una stima del flusso della scena assegna un vettore di spostamento o velocità 3D a ogni punto osservato della scena. Ad esempio, se un pedone attraversa una strada avvicinandosi a una telecamera, i vettori corrispondenti descrivono sia il movimento laterale sia la diminuzione della distanza dalla telecamera.
Questo concetto differisce dal flusso ottico, che rappresenta lo spostamento apparente dei pixel sul piano dell’immagine bidimensionale. Come spiega il progetto Scene Flow della Carnegie Mellon, il flusso ottico può essere inteso come la proiezione del flusso 3D della scena sull’immagine acquisita da una telecamera. Di conseguenza, due punti possono avere un movimento simile nell’immagine pur muovendosi in modo diverso in profondità.
Le stime dense del flusso della scena calcolano il movimento per la maggior parte dei punti visibili, mentre quelle sparse riguardano caratteristiche selezionate, punti tracciati o ritorni LiDAR. L’output denso offre maggiori dettagli geometrici, ma richiede più calcolo e corrispondenze affidabili tra i fotogrammi.
Flusso della scena e concetti correlati nella visione artificiale#
Il flusso della scena combina la struttura spaziale con il movimento temporale e si colloca tra diverse attività correlate:
- Stima del flusso ottico con OpenCV: stima lo spostamento orizzontale e verticale dei pixel. Non può determinare autonomamente se un oggetto si è mosso in profondità o se il movimento apparente è stato causato dalla telecamera.
- Stima della profondità: determina la distanza delle superfici dalla telecamera, di solito per un singolo fotogramma. Il flusso della scena descrive anche come cambiano nel tempo quelle posizioni 3D.
- Visione stereo: usa pixel corrispondenti acquisiti da telecamere sincronizzate per ricavare la profondità. Il flusso di lavoro OpenCV per la profondità stereo spiega come la disparità tra le viste contribuisce alla ricostruzione 3D.
- Tracciamento degli oggetti: mantiene l’identità degli oggetti tra i fotogrammi, spesso usando riquadri di delimitazione o maschere. Il flusso della scena stima invece il movimento a livello di punto o pixel e può rappresentare movimenti diversi all’interno di un singolo oggetto deformabile.
- Movimento delle nuvole di punti: i sistemi LiDAR e RGB-D possono stimare direttamente il flusso della scena tra insiemi di punti 3D. La guida alle nuvole di punti di Open3D presenta la rappresentazione geometrica usata in molte pipeline di questo tipo.
Il flusso della scena dipende anche dalla geometria della telecamera. Una calibrazione della telecamera con OpenCV accurata aiuta a distinguere il movimento effettivo della scena dai cambiamenti causati dalla rotazione o dalla traslazione della telecamera e dalla distorsione dell’obiettivo.
Applicazioni nel mondo reale#
-
Guida autonoma: un sistema di percezione può stimare se un veicolo vicino sta cambiando corsia, si sta avvicinando rapidamente o procede insieme al traffico. A differenza del solo movimento 2D, il flusso della scena supporta la stima del tempo alla collisione perché include il movimento lungo l’asse della profondità. Può affiancare i componenti di rilevamento, tracciamento e stima della profondità nelle soluzioni di visione artificiale per il settore automobilistico. Il benchmark KITTI per il flusso della scena mostra come valutare scene stradali con movimento della telecamera e oggetti che si muovono autonomamente, mentre le linee guida NHTSA sulla sicurezza dei veicoli automatizzati offrono un contesto più ampio per i sistemi di percezione orientati alla sicurezza.
-
Robotica: un robot mobile può usare il flusso della scena per distinguere uno scaffale fermo da un operatore in movimento, stimare la traiettoria 3D di un ostacolo e aggiornare il percorso prima che si verifichi una collisione. Nelle soluzioni di visione per la robotica, queste informazioni possono essere combinate con telecamere, sensori di profondità e LiDAR. La documentazione dei messaggi dei sensori ROS definisce interfacce comuni per scambiare immagini, informazioni sulle telecamere e nuvole di punti tra i componenti robotici.
Sfide della stima e dati#
Il flusso della scena può essere ricavato da video stereo, telecamere RGB-D, sequenze LiDAR o video monoculari con indizi appresi di profondità e movimento. I sensori stereo e quelli di profondità attiva forniscono misurazioni geometriche più affidabili, mentre i sistemi monoculari devono dedurre la scala e risolvere le ambiguità usando il contesto visivo.
I casi di errore più comuni includono occlusioni, sfocatura da movimento, superfici riflettenti, regioni prive di texture, strutture sottili, variazioni di illuminazione e movimenti rapidi tra i fotogrammi. Il movimento della telecamera aggiunge un’ulteriore difficoltà, perché il sistema deve separare il movimento proprio della telecamera da quello degli oggetti che si muovono autonomamente. Gli errori possono generare traiettorie 3D errate e indurre i sistemi a valle di navigazione o previsione delle collisioni a valutare male velocità e distanza.
I dati di addestramento possono includere fotogrammi RGB, profondità o disparità, flusso ottico, segmentazione e parametri della telecamera. I dataset Freiburg Scene Flow mostrano come queste annotazioni complementari possano descrivere insieme geometria e movimento.
Flusso di lavoro pratico#
Ultralytics YOLO26 può fornire la componente di profondità di una pipeline per il flusso della scena tramite l’attività documentata di stima monoculare della profondità. L’esempio seguente genera una mappa di profondità densa per un singolo fotogramma:
from ultralytics import YOLO
# Stima la struttura 3D della scena per ogni pixel.
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)Questo flusso di lavoro con YOLO26 non calcola da solo il flusso della scena. Fornisce la profondità per ogni pixel, che una pipeline completa può combinare con fotogrammi consecutivi, corrispondenze temporali e pose della telecamera calibrata per stimare lo spostamento 3D. Nella pratica, i team dovrebbero convalidare ogni componente separatamente prima di valutare l’intero campo di moto, soprattutto in prossimità di occlusioni e discontinuità di profondità.









