Stabilizzazione Video Video Digitali
Stabilizzazione video
STABILIZZARE:assicurare il mantenimento di una condizione di equilibrio constante,generalmente identificabile nell'assenza di oscillazioni o variazioni sensibili [dizionario della lingua italiana Devoto Oli]
Stabilizzazione video È l'atto di stabilizzare la posizione della telecamera rispetto agli oggetti inquadrati (def. informale)
Perché stabilizzare i video? (1) Negli ultimi 10 anni vi è stata la diffusione di: Videocamere Palmari Cellulari Fare video stabili con questi dispositivi non è facile a causa delle MANI NON FERME DELL'UTENTE! Camere che lavorano all'esterno sono soggette a: Vento Vibrazioni di macchine passanti vicino ad esse
Perché stabilizzare i video? (2) Per eliminare i movimenti della videocamera indesiderati Migliorare la qualità del video Se il video è stabilizzato si può ottenere: Un elevato bit rate di compressione rispetto a un video non stabilizzato!
Stabilizzazione video
Stabilizzazione video digitali È una tecnica che: Usa le informazioni derivanti dall'analisi video Per stimare i movimenti fisici della telecamera Non usa apparati meccanici addizionali(es.giroscopio) Può essere implementata facilmente In sistemi real time (ovvero mentre si acquisisce il video) In sistemi post-processing (dopo aver acquisito il video)
Stabilizzazione video digitali (esempio)
Algoritmi di stabilizzazione video digitale Generalmente si compongono di tre fasi: Stima del movimento Applicazione di un filtro di movimento Deformazione dell'immagine originale
Possibili movimenti della videocamera
Stabilizzazione video
Fase di stima del movimento (intro) In questa fase si cercano di trovare le trasformazioni che si sono verificate nei fotogrammi adiacenti come: Traslazione Similarità Rotazione
Approcci per stimare il movimento Generalmente si usano 2 approcci: Metodi diretti Cercano di recuperare i parametri di trasformazione attraverso criteri di minimizzazione globali basate su informazioni dell'immagine diretta es.algoritmo di block matching Metodi basati su features
Stabilizzazione video
Stabilizzazione video
Stima del movimento(block matching)(1) Le sue caratteristiche sono : Immagine suddivisa in blocchi quadrati Ricercare solo la traslazione di ciascun blocco sui frame successivi La corrispondenza dei blocchi viene fatta all'interno di una finestra di ricerca Le stime dei parametri traslazionali sono guidate da un criterio di matching(nei nostri esempi supporremo che il criterio di matching sia il SAD)
Stima del movimento(block matching)(2) Come si ottiene il SAD?? siano N e M due immagini della stessa dimensione,il SAD si calcola in questo modo: Si prende la differenza in valore assoluto di ogni pixel di N con il corrispondente pixel di M Queste differenze vengono sommate tra di loro e si ottiene il SAD vediamolo con un esempio!
Stima del movimento(block matching)(3) Calcolo del SAD esempio 4 5 6 0 1 2 1 4 7 0 3 15 13 9 9 4 2 1 SAD= 4-0 + 5-1 + 6-2 + 1-0 + 4-3 + 7-15 + 13-4 + 9-2 + 9-1 =4+4+4+1+1+8+9+7+8=46
Stima del movimento(block matching)(4) Un esempio di block matching
Stabilizzazione video
Stima del movimento (block matching three step search)(1) Si articola in 3 fasi: Definizione degli 8 blocchi a distanza R dal punto Dimezzamento di R Il centro del nuovo blocco viene spostato verso il punto con il minore errore e si riparte dalla prima fase se la grandezza dell'immagine è NXN, inizialmente R=N/2, le fasi si alterneranno fin quando R=1,a questo punto l'algoritmo finirà N.B. Se il punto si sposta di poco perdiamo tempo!!
Stima del movimento (block matching three step search)(2) La sua complessità è: O(log2(R0)+1)* SAD R0 è il valore iniziale di R SAD=Sum of Absolute Difference (nel nostro caso questo sarà il criterio di matching )
Stabilizzazione video
Stima del movimento (block matching full search)(1) Sia NXN la grandezza del framecorrente: Consideriamo : Un blocco di MXM(M<<N: N mod M=0) Un valore R che sarà il nostro criterio di ricerca Come algoritmo di matching utilizziamo il SAD Facciamo scorrere la finestra di dimensione (M+2R)X(M+2R) su tutto il frame successivo Per ogni blocco calcoliamo il SAD e faremo matching con il blocco che avrà il SAD minore la complessità di questo algoritmo è O(N2(2R+1)2)
Stima del movimento (block matching full search)(2) Facciamo un esempio andando a vedere i frame come insieme di blocchi Per semplicità di esposizione assegniamo a ogni blocco un numero In questo caso il SAD non sarà altro che il valore assoluto della differenza tra i due blocchi in questione! Ovviamente questo sarà un esempio semplificato, l'algoritmo reale avrà dei piccoli accorgimenti per individuare esattamente il moto del blocco
Stabilizzazione video
Stima del movimento (feature matching)(1) Questi algoritmi vengono usati per: Riconoscimento di oggetti Recupero di immagini Localizzazione nei robot Cercano di trovare un compromesso tra accuratezza e velocità
Stima del movimento (feature matching)(2) Per poter funzionare correttamente: I punti rilevati devono essere affidabili cioè: Resistenti a: Rotazione Traslazione Cambio di punto di vista Questi punti sono in genere rilevati con significativi cambiamenti nelle 2 intensità dimensionali
Stima del movimento (feature matching)(3) Individuati i punti: La struttura dell'immagine locale viene rappresentata con descrittori che devono essere resistenti a : Trasformazioni geometriche (es.traslazione,rotazione) Trasformazioni fotometriche (es. incupimento) questi algoritmi lavorano male se nel video vi è presente lo zooming
Stima del movimento (feature matching)(4) MATLAB!!!
Stabilizzazione video
Filtraggio del movimento (intro) Discrimina Movimento intenzionale (panning) Movimento indesiderato (jitter, un segnale ad alta frequenza) I tre filtri di cui parleremo sono: Motion Vector Integration (MVI) Frame Position Smoothing (FPS) Kalman Filtering
Stabilizzazione video
Filtraggio del movimento(mvi) (1) É un meccanismo adattativo che: Osserva il movimento stimato nei fotogrammi passati Capisce se sta avvenendo un moto intenzionale(non fa nulla) NON intenzionale (stabilizza l'immagine!)
Filtraggio del movimento(mvi) (2) Calcola il GMV(il vettore che stabilizzerà la sequenza di frame) in questo modo: GMVt=IMVt-δ*IMVt-1 δ è un parametro tale che 0<δ<1 così impostato: Se nel video c'è un movimento regolare viene messo a un valore alto(movimento indesiderato,jitter) Altrimenti verrà considerato come movimento intenzionale(padding) e δ sarà prossimo a 0
Stabilizzazione video
Filtraggio del movimento(fps) Si lavora nel dominio delle frequenze La curva di spostamento assoluto è smussata usando un filtro passa-basso(es.gaussiano) Il vettore di correzione è dato dalla differenza tra l'originale e la curva smussata Richiede l'elaborazione offline Dunque non è adatto per applicazioni real-time
Stabilizzazione video
Filtraggio del movimento (filtro kalman)(1) Questo algoritmo cerca di: Stimare lo stato di un sistema dinamico Eliminando il rumore delle misure Per costruire delle stime Utilizza queste 2 equazioni xk=fxk-1+wk zk=hxk-1+vk F è il modello di transizione di stato, wk è il processo di rumore;h è il modello di osservazione; vkè il rumore di osservazione;xk-1è il modello al frame precedente, z è la stima del modello k
Filtraggio del movimento (filtro kalman)(2) Tipicamente si usa un modello: A velocità costante per il movimento intenzionale Tutti gli altri modelli vengono considerati RUMORE
Filtraggio del movimento (filtro kalman)(3) MATLAB!! object_tracking predizione_oggetto
Stabilizzazione video
Deformazione dell'immagine(intro) Consiste in: Ricostruzione dell'immagine stabilizzata Attraverso una corretta deformazione Per fare ciò la dimensione dei frame del video originale deve essere maggiore di quelli del video stabilizzato!!
Stabilizzazione video
Stabilizzazione dell'immagine(1) Serve a ridurre l'effetto movimento dovuto a Movimento relativo tra la telecamera e la scena durante l'esposizione nel tempo Utile in condizioni di scarsa illuminazione Cercheremo di stabilizzare l'immagine considerando solo informazioni relative alle immagini acquisite
Stabilizzazione dell'immagine(2) Nota la PSF(Point Spread Function) possiamo stabilizzare l'immagine molto velocemente utilizzando degli algoritmi di deconvoluzione dell'immagine Ma nei casi reali la PSF non è nota Utilizzeremo degli algoritmi più lenti che anche non conoscendo la PSF riescono ad ottenere l'immagine stabilizzata! N.B la PSF è la distribuzione d'intensità luminosa nell'immagine
Stabilizzazione dell'immagine (in pratica) Nella pratica per avere un buon trade-off tra qualità e risorse impiegate (tempo,denaro) Si usano algoritmi che usano 2 sole immagini: Una sottoesposta (senza sfocatura ma elevata rumorosità) L'altra sovraesposta (con alta sfocatura ma bassa rumorosità) N.B.in questo caso facciamo riferimento all'esposizione dell'immagine in termini di tempo(per quanti secondi compare la stessa immagine nel video)
Stabilizzazione dell'immagine(esempi) sottoesposta sovraesposta stabilizzata