Stabilizzazione

Un sistema di stabilizzazione dell’immagine ha come scopo quello di attenuare i movimento della camera da una sequenza di immagini:

  • Padding: movimenti intenzionali, da mantenere nel video;
  • Jitter: movimenti non intenzionali, da eliminare.   Esistono dei sistemi di stabilizzazione analogici, come accelerometri, giroscopi, ammortizzatori meccanici, etc… 

Noi analizziamo sistemi di stabilizzazione digitali.

Sistemi di Stabilizzazione Digitale

Un esempio, dove la linea rettilinea indica che la sequenza di frame è stabile, mentre quella curva indica una sequenza stabile:

  • Individuo la tipologia di jitter presente nella sequenza di frame scegliendo un punto di riferimento.
  • “Sposto” il video in maniera opposta al jitter, in modo da contrastarlo.
  • Questo processo mi farà perdere dettagli sui bordi (indicato dalle bande nere nell’esempio), quindi poi eseguo un crop al video, ed infine un’interpolazione.  

I sistemi di Digital Image Stabilization possono essere real-time, o post-processing (offline).   Abbiamo tre fasi:

Fase 1: Stima del Movimento

Si esegue dapprima la stima del movimento, usando algoritmi di block matching o features extraction. 

Fase 2: Filtraggio del Movimento

Filtraggio, o correzione. 

L’idea di base è di usare i metodi della fase 1 per stimare dei motion vector locali (LMV) affidabili, per ogni blocco. 

Dato che è la camera che ‘jittera’, torna utile calcolare il motion vector globale (GMV).

  • Il GMV può essere calcolato a partire dai LMV;
  • Chiamiamo il GMV dell’Anchor Frame .

Se si suppone che la camera debba restare immobile la stabilizzazione risulta piuttosto semplice: infatti, si possono tracciare uno o più punti e applicare le trasformazioni inverse al GMV in modo che tali punti (e tutti gli altri) vengano riportati sempre nella stessa posizione. 

Se invece la camera si muove, dobbiamo distinguere i movimenti intenzionali (padding) da quelli casuali o involontari (jitter). 

Vediamo tre algoritmi:

  • FPS: Frame Position Smoothing, un algoritmo offline;
  • MVI: Motion Vector Integration, un algoritmo online;
  • Filtro Kalman: Riesce a predire dove un oggetto sarà arrivato avendo l’inizio, utile per gestire occlusioni. Di fatto è un filtro ricorsivo che valuta lo stato di un sistema dinamico a partire da una serie di misure soggette a rumore.

Frame Position Smoothing (FPS)

Idea di base per calcolare il MV correttore: 

  • posizione in cui si trova il punto di interesse al frame , cioè la posizione effettiva (actual);
  • posizione corretta (stimata), ottenuta:
    • Usando la trasformata di Fourier sul segnale costituito dalla variazione delle coordinate di un punto rispetto al tempo;
    • applicando un filtro passa basso, e infine;
    • tornando al dominio temporale.
    • Di fatto dove sarebbe stato il frame senza il movimento involontario.

Passare dal dominio temporale al dominio delle frequenze ha lo svantaggio di richiedere un’elaborazione offline. 

FPS può essere utilizzato online, a patto che venga introdotto un buffer di delay. La formula, ad esempio, diventa:

Motion Vector Integration (MVI)

Tecnica di stabilizzazione real time, l’idea è di “integrare”, cioè stimare un Motion Vector che rappresenterà la variazione di movimento rispetto al target frame.

    • è il damping factor, ossia il fattore di smorzamento, pesa il grado di casualità del movimento presente (valori comuni: );
    • è il motion vector che vogliamo stimare al frame n;
    • è il vettore che indica il movimento del punto di interesse tra il frame e .

Un indica che tutti i movimenti sono involontari. non varia durante l’esecuzione dell’algoritmo.

MVI si basa sulle seguenti relazioni:

  • Ridefiniamo rispetto al punto X:
  • Rispetto alla posizione iniziale, X dovrebbe trovarsi nella posizione corretta:
    • nell’anchor-frame;
    • nel target frame;
  • Infine, definiamo il vettore di correzione:

Il vettore di correzione corregge il movimento, mentre i vettori di integrazione correggono la posizione. 

Le potrebbero essere errate, dato che stiamo analizzando un video con jitter.

Esempio

Filtro di Kalman (Cenni)

Strumento molto potente che:

  • Prende in input una serie di misure osservate nel tempo;
  • Tiene conto di un eventuale rumore casuale;
  • Predizione: fissato un tempo si stima la misura
  • Correzione: osservata una misura può correggerla, eventualmente basandosi su una predizione.

In pratica si costruisce un modello di movimento, basata su due equazioni differenziali stocastiche (lineari):

  • Nel processo stocastico, lo stato è dato da:
  • La misura (stima) di è data da:

Dove:

  • : istante di tempo;
  • sono modelli transazionali;
  • rappresentano rumore gaussiano, a noi sconosciuto (solo stimabile);
  • è il controllo utente.

Affiancando il filtro di Kalman ad un tracciatore Bayesiano possiamo stimare le probabilità:

  • Predizione:
  • Correzione (update):

Lo stato dipende quindi dal controllo utente (), che provoca un esito, il quale si trova in B. 

Ma lo stato al tempo dipende anche dagli stati precedenti ()

Fase 3: Post-Processing

Una fase di post-processing dei frame è necessaria perché il crop dei frame fa perdere informazioni. Lo scopo principale è migliorare la qualità dei frame. 

Si può agire anche sui valori di intensità nei pixel, qualora l’esposizione del video non sia uniforme (in questo caso si parla di stabilizzazione cromatica).