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.