MPEG Motion Estimation Simulator

L'applet utilizza come sorgenti di fotogrammi dei mosaici di 16 fotogrammi consecutivi ottenuti con una macchina fotografica digitale Nikon Coolpix.
Ogni mosaico è di dimensione 512 x 284 pixels e ogni fotogramma 128 x 96 pixels (standard sub-QCIF).
L'unità di calcolo per gli algoritmi di Motion Estimation è un blocco di 16 x 16 pixels; in ogni fotogramma vi sono quindi 8 x 6 blocchi diversi.

Inizializzazione

Occorre quindi inizialmente caricare uno dei mosaici proposti o caricarne uno proprio di formato 512x384 pixels introducendone il nome corretto (dopo averlo copiato nella directory corretta). Cliccare poi su "Carica".
Successivamente per permettere l'estrazione dei fotogrammi dal mosaico bisogna cliccare su "Scomponi".
Al termine della scomposizione sarà possibile visualizzare separatamente i fotogrammi scegliendone il numero di sequenza dall'apposito menù a tendina.

Motion Estimation

Vi sono cinque parametri fondamentali per gli algoritmi di Motion Estimation che si possono impostare. Tre di essi fanno riferimento alle due funzioni errore qui di seguito descritte:

M.A.D. (Mean Absolute Distorsion)

dove Y(i,j), Z(i,j) sono le componenti di luminanza dei blocchi in considerazione, m=n=16;

Da osservazioni empiriche sono ragionevoli i seguenti intervalli di valori per l'errore normalizzato di 2 blocchi di immagini:

Tipo di blocchi
Intervallo dell'errore M.A.D.=Z
Blocchi stabili con sfondo uniforme:
2<Z<12
Blocchi stabili con sfondo ricco di dettagli
27<Z<50
Blocchi soggetti a spostamento/cambiamento oggetti
54<Z<140

 

M.S.E. (Mean Square Error)
scarto quadratico medio tra due blocchi:

dove Y(i,j), Z(i,j) sono le componenti di luminanza dei blocchi in considerazione, m=n=16;

Da osservazioni empiriche sono ragionevoli i seguenti intervalli di valori per l'errore normalizzato di 2 blocchi di immagini:

Tipo di blocchi
Intervallo dell'errore M.S.E.=M
Blocchi stabili con sfondo uniforme:
15<M<100
Blocchi stabili con sfondo ricco di dettagli
300<M<3000
Blocchi soggetti a spostamento/cambiamento oggetti
5000<M<30000

 

Soglia di Block Matching
Muovere il cursore della slider per cambiare valore e cliccare sullo stesso per visualizzarlo.
All'inizio del procedimento di Motion Estimation si calcola l'errore Z fra 2 blocchi corrispondenti di due fotogrammi per valutare se cercare o meno vettori di moto tramite l'algoritmo di Block Matching.
La soglia da scegliere indica il limite inferiore, normalizzato (/256), che l'errore puà assumere se si vuol eseguire l'algoritmo di Block Matching.
Si può modificare in un secondo momento dopo aver visualizzato nel log dell'applet i valori degli errori di ogni blocco (riportati alla voce "Z" ).

 

Decremento Matching Value
Indica se applicare o meno la modifica proposta all'algoritmo Full Search TM5 di Block Matching.
Per maggiori informazioni consultare la teoria.

Soglia M.S.E.
Indica la soglia dell'M.S.E., normalizzato(/256) per il Matching Value dell'algoritmo di Block Matching applicato ai B-Frames.
Se, durante le iterazioni dell'algoritmo di Block Matching, il valore del Matching Value scende sotto questa soglia, l'algoritmo si arresta restituendo il vettore di moto e il Matching Value trovati fino a quel momento.
Aumentando questa soglia si noterà una diminuzione del numero di iterazioni dell'algoritmo di Block Matching nel computo dei B-Frames anche in caso di larghe finestre di ricerca. Diminuirà tuttavia l'individuazione di ampi spostamenti.

Soglia M.A.D.
Indica la soglia dell'M.A.D., normalizzato(/256) per il Matching Value dell'algoritmo di Block Matching applicato ai P-Frames.
Se, durante le iterazioni dell'algoritmo di Block Matching, il valore del Matching Value scende sotto questa soglia, l'algoritmo si arresta restituendo il vettore di moto e il Matching Value trovati fino a quel momento.
Aumentando questa soglia si noterà una diminuzione del numero di iterazioni dell'algoritmo di Block Matching nel computo dei P-Frames anche in caso di larghe finestre di ricerca. Diminuirà tuttavia l'individuazione di ampi spostamenti.

Finestra di ricerca
In base alla dimensione della finestra di ricerca si determina l'area di ricerca in cui ricercare eventuali oggetti spostati e quindi su cui determinare i vettori di moto ("Motion vectors")..
Ve ne sono di dimensioni diverse, quadrate e non. Sono espresse in numero di pixel che aggirano il blocco.
Quindi una finestra di " -7 | +7 " produrrà un'area di ricerca attorno ad un blocco centrale di 7+16+7=30 pixel in orizzontale e 30 in verticale.

Tipo di finestra di ricerca
Dimensione area di ricerca
-7 | +7
30 x 30 pixels
-3 | +3
22 x 22 pixels
-15 | +15
46 x 46 pixels
-15 | +15 H , -7 | +7 V
46 x 30 pixels
-21 | +21 H , -11 | +11 V
58 x 38 pixels
-31 | +31 H , -15 | +15 V
78 x 46 pixels
-7 | +7 H , -15 | +15 V
30 x 46 pixels
-11 | +11 H , -21 | +21 V
38 x 58 pixels
-15 | +15 H , -31 | +31 V
46 x 78 pixels

Più è grande l'area di ricerca, più la complessità aumenta (aumenta il numero di errori e confronti da valutare) e più l'applet risulterà lenta.

Per individuare un moto prevalente lungo la direzione orizzontale si sceglie una finestra più larga che alta, viceversa per movimenti verticali.
Dato che la maggior parte dei movimenti in una sequenza video avviene orizzontalmente, i codificatori MPEG utilizzano solitamente una finestra -15 | +15 H , -7 | +7 V .

 

Esecuzione algoritmi e osservazione dati

Cliccando sul bottone "Calcola" verrano eseguiti gli algoritmi. Al termine dell'esecuzione verrà visualizzata la sequenza dei Frames (I, P o B) in entrata ad un codificatore MPEG.
Per visualizzare invece la sequenza come risulterà in uscita dal codificatore MPEG cliccare su "Riordina" (questa operazione non modifica il contenuto dei frames, già calcolato precedentemente, ma solo l'ordine degli stessi).

Cliccando su uno qualunque dei frames della sequenza, questo sarà visualizzato. Nell'immagine in alto a sinistra verrà riportato il fotogramma corrispondente.
Nel caso di P-Frame sarà visualizzato il P-Frame ricostruito, il P/I-Frame usato per la predizione e il P-Frame come è stato codificato (con blocchi che saranno o vettori di moto (anche nulli) o blocchi Intra del frame corrispondente).
Nel caso di B-Frame sarà visualizzato il B-Frame ricostruito, il B-Frame codificato (con blocchi che saranno o vettori di moto (anche nulli) o blocchi Intra del frame usato per la predizione in avanti o indietro), il P/I-Frame predetto in avanti ricostruito, il P/I-Frame predetto in indietro ricostruito.

Bisogna tenere conto del fatto che i frame ricostruiti appariranno "degradati" rispetto al fotogramma originale. Infatti tutto dipende dai parametri che sono stati scelti. Bisogna tuttavia considerare che una sequenza video prodotta utilizzando la sequenza dei frame ricostruiti verrebbe visualizzata in un lasso di tempo di circa 3s, periodo in cui i 16 frame si susseguono ogni circa 15ms.
L'effetto globale sarebbe più gradevole alla vista, tanto più quanto la compressione raggiunta è bassa.

Sotto ai frames viene riportato il corrispondente dettaglio contenente informazioni sulla compressione stimata raggiunta, sui singoli blocchi, sul loro contenuto e su come sono stati determinati.
Il significato dei simboli è riportato nella nota-legenda successiva.

Per maggiori informazioni e chiarimenti consultare la teoria.

 


Istruzioni | Teoria | Applet | Info | Homepage