Optical Flow
Esplora i fondamenti del flusso ottico nella computer vision. Scopri come i vettori di movimento favoriscono la comprensione dei video e migliorano il tracking in Ultralytics YOLO26.
Il flusso ottico è il modello di movimento apparente di oggetti, superfici e bordi in una scena visiva, causato dal movimento relativo tra un osservatore e una scena. Nel campo della visione artificiale, questo concetto è fondamentale per comprendere le dinamiche temporali all'interno delle sequenze video. Analizzando lo spostamento dei pixel tra due fotogrammi consecutivi, gli algoritmi di flusso ottico generano un campo vettoriale in cui ogni vettore rappresenta la direzione e l'entità del movimento di un punto specifico. Questo indizio visivo di basso livello consente ai sistemi di intelligenza artificiale di percepire non solo cosa è presente in un'immagine, ma anche come si sta muovendo, colmando il divario tra l'analisi di immagini statiche e la comprensione dei video dinamici.
Meccanismi fondamentali del flusso ottico#
Il calcolo del flusso ottico si basa generalmente sull'ipotesi di costanza della luminosità, secondo cui l'intensità di un pixel appartenente a un oggetto rimane costante da un fotogramma al successivo, anche quando l'oggetto si muove. Gli algoritmi sfruttano questo principio per calcolare i vettori di movimento utilizzando due approcci principali:
- Flusso ottico sparso: questo metodo calcola il vettore di movimento per un sottoinsieme specifico di caratteristiche distintive, come angoli o bordi, rilevate tramite l'estrazione delle caratteristiche. Algoritmi come il metodo Lucas-Kanade sono efficienti dal punto di vista computazionale e ideali per attività di inferenza in tempo reale in cui è sufficiente tracciare specifici punti di interesse.
- Flusso ottico denso: questo approccio calcola un vettore di movimento per ogni singolo pixel del fotogramma. Sebbene sia significativamente più oneroso dal punto di vista computazionale, fornisce una mappa completa del movimento, essenziale per attività dettagliate come la segmentazione delle immagini e l'analisi strutturale. Le moderne architetture di deep learning spesso superano i metodi matematici tradizionali nella stima del flusso denso, apprendendo schemi di movimento complessi da grandi dataset.
Flusso ottico e tracciamento degli oggetti a confronto#
Sebbene vengano spesso utilizzati insieme, è fondamentale distinguere il flusso ottico dal tracciamento degli oggetti. Il flusso ottico è un'operazione di basso livello che descrive il movimento istantaneo dei pixel; non comprende intrinsecamente l'identità o la persistenza degli oggetti.
Al contrario, il tracciamento degli oggetti è un'attività di alto livello che individua entità specifiche e assegna loro un ID coerente nel tempo. I tracker avanzati, come quelli integrati in Ultralytics YOLO26, eseguono in genere il rilevamento degli oggetti per individuare l'oggetto e utilizzano poi indizi di movimento, talvolta derivati dal flusso ottico, per associare i rilevamenti tra i fotogrammi. Il flusso ottico risponde alla domanda «a quale velocità si stanno muovendo questi pixel in questo momento?», mentre il tracciamento risponde alla domanda «dov'è finita l'auto n. 5?»
Applicazioni nel mondo reale#
La capacità di stimare il movimento a livello dei pixel alimenta un'ampia gamma di tecnologie sofisticate:
- Veicoli autonomi e robotica: il flusso ottico viene utilizzato per l'odometria visiva, consentendo a un robot o a un'auto di stimare il proprio movimento rispetto all'ambiente. Inoltre, contribuisce alla stima della profondità e all'evitamento degli ostacoli analizzando la velocità con cui gli oggetti nel campo visivo si espandono o si muovono.
- Stabilizzazione video: le fotocamere e i software di editing utilizzano i vettori di flusso per rilevare il tremolio involontario della fotocamera. Compensando questo movimento globale, i sistemi possono stabilizzare digitalmente le riprese. Questa è una funzionalità standard nei moderni dispositivi di elettronica di consumo, come smartphone e action camera.
- Riconoscimento delle azioni: nell'analisi sportiva e nella sicurezza, l'analisi del flusso temporale dei pixel aiuta i sistemi a identificare azioni umane complesse. Ad esempio, i modelli di stima della posa possono essere integrati con dati sul flusso per distinguere tra una persona che cammina e una che corre in base alla velocità del movimento degli arti.
- Compressione video: gli standard come la codifica video MPEG si basano ampiamente sulla stima del movimento. Invece di memorizzare ogni fotogramma completo, il codec memorizza il flusso ottico (i vettori di movimento) e la differenza (il residuo) tra i fotogrammi, riducendo significativamente le dimensioni dei file per lo streaming e l'archiviazione.
Esempio di implementazione#
L'esempio seguente mostra come calcolare il flusso ottico denso utilizzando la libreria OpenCV, uno strumento standard nell'ecosistema della visione artificiale. Questo frammento di codice utilizza l'algoritmo di Farneback per generare una mappa del flusso tra due fotogrammi consecutivi.
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")Per le applicazioni di alto livello che richiedono la persistenza degli oggetti anziché il movimento grezzo dei pixel, è consigliabile valutare le modalità di tracciamento disponibili in Ultralytics YOLO11 e YOLO26. Questi modelli astraggono la complessità dell'analisi del movimento, fornendo ID e traiettorie degli oggetti affidabili e pronti all'uso per attività che vanno dal monitoraggio del traffico all'analisi della vendita al dettaglio.









