Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Licenza YOLO
Torna al glossario di Ultralytics

Optical Flow

Il flusso ottico stima lo spostamento di ogni pixel tra due fotogrammi video sotto forma di campo di vettori di movimento. Metodi classici e deep learning, applicazioni e codice OpenCV.

Il flusso ottico è il movimento apparente dei pattern di luminosità tra due immagini, di solito fotogrammi video consecutivi. Un algoritmo di flusso ottico stima, per ogni pixel del primo fotogramma, un vettore di spostamento 2D (dx, dy) che indica dove appare il contenuto di quel pixel nel secondo fotogramma. Il risultato, chiamato campo di flusso, descrive il movimento degli oggetti in movimento e della telecamera stessa, consentendo ai sistemi di visione artificiale di stabilizzare i video, stimare il movimento proprio, interpolare i fotogrammi e riconoscere le azioni. Il flusso misura ciò che vede la telecamera, non il vero movimento 3D: una sfera perfettamente uniforme che ruota sul posto non produce flusso, mentre un’ombra in movimento produce flusso anche se non si muove nulla di fisico.

Come si stima il flusso ottico#

La maggior parte dei metodi parte dalla costanza della luminosità, ovvero dall’ipotesi che un punto mantenga la stessa intensità mentre si sposta. La sua linearizzazione produce un’equazione per pixel, Ix·u + Iy·v + It = 0, dove Ix, Iy e It sono le derivate dell’immagine rispetto a x, y e al tempo, e (u, v) è il flusso incognito. Un’equazione non può determinare due incognite: questo è il problema dell’apertura. Guardando un bordo rettilineo attraverso una piccola finestra, è misurabile solo il movimento perpendicolare al bordo. I metodi classici aggiungono una seconda ipotesi per risolverlo:

  • Metodo di Lucas-Kanade (1981): Presuppone che il flusso sia costante all’interno di una piccola finestra e risolve le equazioni di tutti i suoi pixel con il metodo dei minimi quadrati. Funziona quando la finestra contiene gradienti in due direzioni, come agli angoli, perciò viene solitamente eseguito come flusso sparso su punti caratteristici selezionati.
  • Metodo di Horn-Schunck (1981): Presuppone che il campo di flusso sia uniforme in tutta l’immagine e risolve un problema di ottimizzazione globale, producendo un flusso denso per ogni pixel.

Entrambe le ipotesi non reggono in presenza di grandi movimenti, quindi i metodi pratici stimano il flusso da grossolano a fine su una piramide di immagini: un movimento di 16 pixel alla risoluzione massima corrisponde a un movimento di 2 pixel tre livelli più in basso:

OpenCV implementa Lucas-Kanade piramidale per i punti sparsi e l’algoritmo di espansione polinomiale di Gunnar Farnebäck del 2003 per il flusso denso. Questo codice sposta una texture casuale di una quantità nota e recupera il movimento con il flusso denso di Farnebäck:

import cv2
import numpy as np

# A smooth random texture, then the same texture moved 3 px right and 2 px down
rng = np.random.default_rng(0)
texture = cv2.GaussianBlur(rng.random((240, 320)), (0, 0), 3)
frame1 = cv2.normalize(texture, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
frame2 = np.roll(frame1, shift=(2, 3), axis=(0, 1))

# Dense Farneback optical flow: one (dx, dy) displacement vector for every pixel
flow = cv2.calcOpticalFlowFarneback(
    frame1, frame2, None, pyr_scale=0.5, levels=3, winsize=15, iterations=3, poly_n=5, poly_sigma=1.2, flags=0
)
print(f"flow field shape: {flow.shape}")
print(f"median motion: dx={np.median(flow[..., 0]):.2f}, dy={np.median(flow[..., 1]):.2f} pixels")

Stampa flow field shape: (240, 320, 2) e median motion: dx=3.00, dy=2.00 pixels: un vettore a due componenti per ciascuno dei 76.800 pixel, recuperando lo spostamento di 3 pixel in orizzontale e 2 pixel in verticale.

Metodi di deep learning#

Nel 2015 FlowNet ha dimostrato che una rete neurale convoluzionale poteva apprendere il flusso end-to-end da dati di addestramento sintetici, dato che i video reali raramente includono il flusso di riferimento. PWC-Net ha integrato in una rete compatta le idee di piramide, warping e volume di costo dei metodi classici. RAFT, che ha vinto il premio per il miglior articolo a ECCV 2020, confronta ogni pixel del primo fotogramma con ogni pixel del secondo in un volume di correlazione e perfeziona un singolo campo di flusso ad alta risoluzione con aggiornamenti ricorrenti ripetuti. I metodi basati sull’apprendimento gestiscono spostamenti ampi, mosso e regioni prive di texture molto meglio dei metodi classici, e torchvision include modelli RAFT preaddestrati. La precisione viene riportata come errore di endpoint (EPE), ovvero la distanza media in pixel tra i vettori di flusso previsti e quelli reali, su benchmark come MPI Sintel e KITTI 2015.

  • Tracciamento degli oggetti: Segue oggetti interi con ID persistenti per molti fotogrammi, mentre il flusso ottico descrive il movimento per pixel tra due fotogrammi e non conosce gli oggetti. I tracker usano il flusso come indizio: nella modalità di tracciamento di Ultralytics YOLO, il tracker predefinito TrackTrack e BoT-SORT stimano il movimento della telecamera con il flusso sparso di Lucas-Kanade (gmc_method: sparseOptFlow), tracciando fino a 400 angoli in un fotogramma a metà risoluzione, adattando a essi rotazione, scala e traslazione con RANSAC e spostando ogni riquadro di tracciamento previsto in base a quel movimento prima di associarlo alle nuove rilevazioni.
  • Tracciamento dei punti: Segue punti selezionati attraverso video lunghi, anche in presenza di occlusioni, invece di stimare il movimento di ogni pixel tra due fotogrammi.
  • Flusso di scena: Il movimento 3D dei punti nello spazio, stimato a partire da dati stereo o di profondità. Il flusso ottico è la sua proiezione sul piano dell’immagine.
  • Vettori di movimento dei codec video: Gli encoder H.264, HEVC e AV1 memorizzano un vettore di movimento per ogni blocco, scelto per ridurre al minimo i bit necessari a codificare il fotogramma; per questo spesso si discosta dal movimento reale.

Applicazioni nel mondo reale#

  • Stabilizzazione video: Il flusso dominante in un fotogramma rivela le vibrazioni della telecamera, che il software compensa deformando ogni fotogramma nella direzione opposta.
  • Interpolazione dei fotogrammi: Lo slow motion e la conversione della frequenza dei fotogrammi generano fotogrammi intermedi spostando i pixel parzialmente lungo i rispettivi vettori di flusso.
  • Veicoli autonomi e droni: Il flusso supporta l’odometria visiva, mentre la velocità con cui il flusso di un oggetto si espande segnala una collisione imminente.
  • Riconoscimento delle azioni: La rete a due flussi del 2014 classificava le azioni usando un flusso spaziale di singoli fotogrammi e un flusso temporale alimentato con una sequenza di 10 campi di flusso ottico consecutivi.

Esplora le soluzioni

La visione artificiale nello sport

La visione artificiale nello sport

Scopri come Ultralytics YOLO alimenta la computer vision nello sport con il tracciamento di giocatori e palloni, l'analisi delle prestazioni, gli approfondimenti per gli allenatori e la riabilitazione degli atleti.
Scopri di più
Computer vision per immagini aeree

Computer vision per immagini aeree

Trasforma immagini aeree e riprese da drone in informazioni utili in tempo reale per agricoltura, acquacoltura, conservazione e analisi geospaziale con Ultralytics YOLO.
Scopri di più
Computer vision nel settore aerospaziale

Computer vision nel settore aerospaziale

Applica la visione artificiale nel settore aerospaziale con Ultralytics YOLO per l'ispezione degli aeromobili, il rilevamento di FOD sulle piste, le operazioni di terra aeroportuali e il rilevamento di difetti nei materiali compositi.
Scopri di più
Visione artificiale nella sicurezza

Visione artificiale nella sicurezza

Proteggi ogni sito con i modelli Ultralytics YOLO. L'IA visiva alimenta il monitoraggio perimetrale, il rilevamento delle minacce, il riconoscimento delle targhe e la sicurezza sul lavoro.
Scopri di più
Visione artificiale nella robotica

Visione artificiale nella robotica

Dai più potenza alle macchine intelligenti con i modelli Ultralytics YOLO. Nell'ambito della robotica, l'IA visiva alimenta la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Visione artificiale nella logistica

Visione artificiale nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. L'IA per la visione consente l'ispezione dei pacchi, la selezione, il tracciamento dei veicoli e il monitoraggio della sicurezza nei magazzini in tempo reale.
Scopri di più
Visione artificiale nel commercio al dettaglio

Visione artificiale nel commercio al dettaglio

Ripensa il commercio al dettaglio con i modelli Ultralytics YOLO. L'IA per la visione consente di tracciare le scorte, monitorare gli scaffali, gestire le code e ottenere informazioni più approfondite sui clienti.
Scopri di più
Visione artificiale in ambito sanitario

Visione artificiale in ambito sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. In ambito sanitario, l'IA per la visione consente di elaborare più rapidamente le immagini mediche, migliorare la diagnostica e monitorare i pazienti.
Scopri di più
Computer vision nella produzione

Computer vision nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La visione basata sull'IA migliora il controllo qualità, il rilevamento dei difetti, la conformità ai requisiti sui DPI e l'automazione delle linee di assemblaggio.
Scopri di più
Computer vision nel settore automobilistico

Computer vision nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La visione basata sull'IA migliora la sicurezza stradale, i sistemi di assistenza alla guida e l'automazione dei veicoli, per strade più intelligenti.
Scopri di più
Visione artificiale in agricoltura

Visione artificiale in agricoltura

Porta l'IA visiva nell'agricoltura intelligente con i modelli Ultralytics YOLO. Gestisci il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per ottenere raccolti più abbondanti e intelligenti.
Scopri di più

Costruiamo insieme il futuro dell'IA!

Inizia il tuo percorso verso il futuro del machine learning