Per evitare di tediarvi con un singolo mega articolo che probabilmente scoraggerebbe anche i più audaci, abbiamo deciso di suddividerlo in più “puntate”. Oggi introdurremo semplicemente il problema.
L’intento era quello di realizzare un sistema di stabilizzazione digitale video.
Quando si va a registrare un video attraverso una videocamera o uno smartphone, spesso accade che l’utente trasmetta al dispositivo di acquisizione un movimento involontario. Questa vibrazione persistente che poi produce degli sgradevoli effetti al momento della riproduzione del video, viene chiamata jitter.
Quindi l’obiettivo era quello di costruire un sistema che fosse in grado di rimuovere o almeno di ridurre notevolmente gli effetti della vibrazione della telecamera migliorando la qualità dei filmati.
Uno dei video su cui abbiamo fatto sperimentazione è il seguente. Useremo questo video esempio per la nostra trattazione.
Le tecniche che in generale mirano alla stabilizzazione video sono molteplici:
- Stabilizzazione Ottica che si basa su un sistema meccanico con giroscopio che muove le lenti del dispositivo di acquisizione assecondando i movimenti involontari della mano in modo da controbilanciare lo spostamento. Non tutti i dispositivi ne sono provvisti perché è un componente costoso.
- Stabilizzazione Elettronica nella quale ogni frame viene stabilizzato spostando l’area sensibile del CCD. Tuttavia i circuiti che impiega sono sofisticati e anch’essi costosi.
- Stabilizzazione Meccanica che consiste nell’impiego di giroscopi o supporti mobili a cui viene agganciata la videocamera. Questi supporti però sono spesso d’impaccio perché difficili da utilizzare e ingombranti.
- Stabilizzazione Digitale prevede l’utilizzo di informazioni che si possono estrarre dai frame che hanno come fine quello di aiutare a stimare il movimento del dispositivo. Questo procedimento è meno costoso economicamente e può avvenire sia in real-time che in post processing.
La struttura di uno stabilizzatore digitale può essere divisa in tre blocchi principali:
- Stima del movimento: valuta il movimento globale della telecamera tra frame consecutivi della sequenza.
- Calcolo della compensazione del moto: riceve i parametri della trasformazione dalla fase precedente e riconosce i movimenti involontari da correggere.
- Applicazione della compensazione sull’immagine: modifica il frame sulla base dei risultati della fase precedente stabilizzandolo.
Quindi quali sono le problematiche da affrontare?
Bisognerà necessariamente distinguere tre componenti di moto:
- La componente di moto involontaria della telecamera (jitter)
- La componente di moto volontaria della telecamera (pan e tilt)
- La componente di moto dovuta a oggetti in movimento all’interno della scena
Tra i possibili metodi implementativi per la stima del moto abbiamo scelto il Feature Based. Gli algoritmi FB si basano sullo stesso principio del modello Lucas-Kanade e sviluppano descrittori e detector più raffinati per la stima del moto tra un frame ed il precedente.
Una feature, come molti di voi già sapranno, è una caratteristica dell’immagine come ad esempio bordi, angoli ecc..
Gli algoritmi FB si basano sulla ricerca di feature all’interno dei frame e permettono, nel loro insieme, di stimare il moto rispetto ai frame precedenti.
Queste feature dunque avranno bisogno di alcune proprietà quali l’invarianza rispetto a trasformazioni dell’immagine come la scala, rotazione, traslazione, luminosità, la facile individuazione anche nei frame successivi, immunità al rumore ecc…
Il sistema da noi realizzato, che verrà presentato nel dettaglio nel prossimo articolo, si ispira a quello presentato nell’articolo “SIFT features tracking for video stabilization” di S. Battiato, G. Gallo, G. Puglisi, and S. Scellato.
A presto! 😉