Upload
daniele-tyson-addari
View
539
Download
1
Embed Size (px)
Citation preview
CADMO
Control Auto Configurable Data Network for MObiles
1
ALLEGATO SI-IES
NOTA TECNICA
ALGORITMI DI COMPRESSIONE AUDIO VIDEO
CADMO
Control Auto Configurable Data Network for MObiles
2
Sommario
1. INTRODUZIONE ........................................................................................................................... 4
2. DIFFERENZA TRA FLUSSI AUDIO E VIDEO .................................................................................... 5
2.1 Formato container .............................................................................................................. 6
3. COMPRESSIONE .......................................................................................................................... 8
4 TECNICHE DI COMPRESSIONE ................................................................................................... 13
4.1 Tecniche di compressione intra‐frame ............................................................................. 13
4.2 Tecniche di compressione intra‐frame: DPCM ................................................................. 13
4.3 Tecniche di compressione intra‐frame: tecniche a trasformata ....................................... 15
4.4 Tecniche di compressione inter‐frame ............................................................................. 19
4.5 Tecniche di compressione inter‐frame: motion compensation ........................................ 20
5 CODIFICA ................................................................................................................................... 22
5.1 Codifica dei vettori di spostamento: vector quantization ........................................................ 22
5.2 Qualità dei CODEC ............................................................................................................. 23
5.3 Algoritmi di Change Detection .......................................................................................... 25
5.3.1 Change detection: Full Frame Scene Change Detection (FDY e FDYUV) ................... 26
5.3.2 Change detection: Morphological Scene Change Detection .................................... 27
5.4 Il Codec adattivo e il decimatore di frame adattivo .......................................................... 30
5.5 Tag e ricerca intelligente ................................................................................................... 35
6 ALGORITMO JPEG ...................................................................................................................... 36
6.1 M‐JPEG .............................................................................................................................. 40
7 STANDARD DI CODIFICA: MPEG ................................................................................................ 42
7.1 Componenti dell'MPEG‐4 .................................................................................................. 49
8 STANDARD ITU H.263 ............................................................................................................... 52
8.1 Stima e compensazione del moto ..................................................................................... 55
CADMO
Control Auto Configurable Data Network for MObiles
3
8.2 L’Entropy coding................................................................................................................ 57
8.3 Controllo della codifica ..................................................................................................... 58
8.4 Il decoder .......................................................................................................................... 58
9. STANDARD H.264 ...................................................................................................................... 60
10. ANALISI DEI CODEC ................................................................................................................... 67
10.1 Codec Lossless analizzati: .................................................................................................. 67
10.2 Codec Lossy analizzati ....................................................................................................... 70
10.2.1 MPEG‐4 AVC .............................................................................................................. 70
10.2.2 MPEG‐4 ASP .............................................................................................................. 71
10.2.3 non‐MPEG‐4 .............................................................................................................. 72
11 VALUTAZIONE ........................................................................................................................... 75
11.1 Codec Lossless ................................................................................................................... 75
11.2 Codec Lossy ....................................................................................................................... 76
CADMO
Control Auto Configurable Data Network for MObiles
4
1. INTRODUZIONE
Negli ultimi anni è decisamente cresciuto l’interesse che i nuovi settori della tecnologia
hanno rivolto alle tematiche di codifica video digitale.
Questo fatto è dovuto alla recente nascita di applicazioni come le videoconferenze e la
videotelefonia, oltre che alla necessità di immagazzinare e trasportare informazione di
tipo video su supporti elettronici.
Questi ultimi, pur crescendo in continuazione in dimensioni e prestazioni, sono comunque
sovente insufficienti per la grande mole di dati che si vuole trattare.
Volendo avere un’idea dell’ordine di grandezza delle quantità in questione, si pensi al
problema di voler trasmettere un filmato in forma digitale senza compressione di
dimensioni 720 x 576 (quelle dello standard PAL).
Lo stream sarà quindi così composto: 8 bit per ogni campione delle componenti che
rappresentano il colore, 3 componenti di colore (R,G,B) per ogni pixel, 414 720 pixel (720
x 576) per ogni frame, 25 frame/s come frequenza di ripetizione delle immagini. Si ottiene
una banda necessaria di 248832000 bit = 250Mbit/s circa, che certamente rappresenta un
valore decisamente elevato.
I canali di telecomunicazione hanno un’intrinseca limitatezza in termini di capacità di
trasportare dati: un risparmio di banda comporta quindi inevitabilmente una diminuzione
dei costi nel realizzare i sistemi e la possibilità di sfruttare al meglio le risorse a
disposizione.
Il bisogno di trattare informazioni sempre meno ridondanti e ridurre la quantità effettiva
di bit usati è quindi particolarmente sentito in tutte le applicazioni multimediali.
In questa direzione si muovono numerosi gruppi di ricerca sia nel mondo dell’industria sia
in quello accademico, ed è in questa ottica che è stato sviluppato il sistema di codifica
H.263.
Si tratta di uno standard reso tale dalla International Telecommunication Union (ITU), e
che fa parte di un insieme numeroso di algoritmi per il trattamento di dati audio e video.
CADMO
Control Auto Configurable Data Network for MObiles
5
2. DIFFERENZA TRA FLUSSI AUDIO E VIDEO
Quando si vuole comprimere un video ci si trova a dover fare i conti con diversi parametri
di configurazione, qualsiasi codec si utilizzi. Facendo alcuni esperimenti si nota subito
come un piccolo cambiamento nel settaggio della codifica video influisca molto sul file‐
size finale, mentre cambiando i parametri per l'audio non si ottengono variazioni
significative. E' importante a questo punto capire la differenza, in termini di spazio
occupato, tra differenti tipi di dato multimediale. Un flusso audio è in un certo senso
bidimensionale: un suono ha bisogno di un solo numero per la sua rappresentazione (il
valore di ampiezza del segnale), tipicamente 16 o 24 bit (al massimo 32). Questo valore
viene registrato un certo numero di volte in un determinato intervallo di tempo (di solito
un secondo), in relazione alla frequenza desiderata. Campionare un suono a 32 Khz
significa registrare la variazione del segnale di ampiezza 32.000 volte al secondo. Quindi
un flusso audio campionato tipicamente a 16 bit e 44.1 Khz (qualità cd) occuperà
16 x 44.100 = 705.600 bit/s = 86,13 KB/s
Per un'ora di audio stereo (a 2 canali, quindi si registrano 2 flussi audio) non compresso
saranno quindi necessari 2 x 16 x 44.100 x 60 x 60 = 5.080.320.000 bit = 605,62 MB.
Un dato video, o pixel, ha bisogno tipicamente anch'esso di 24‐bit per essere
rappresentato correttamente ma questo valore va moltiplicato per il numero di linee
orizzontali e verticali dell'immagine. E' quindi un valore a 4 dimensioni in cui i fattori sono:
valore del pixel, larghezza, altezza e tempo. Come già detto nell’introduzione per un
immagine PAL 720x576 occorreranno circa 30MB/s.
Un minuto di audio stereo non compresso pesa 10 MB, un ora 605 MB. Un minuto di
video non compresso pesa 1780 MB, un'ora 106.800 MB. Abbiamo quindi un rapporto di
178:1, ovvero i dati video non compressi pesano 178 volte più di quelli audio (stereo). Si
conclude che lo spazio richiesto per memorizzare un flusso video non compresso è
enormemente maggiore di quello richiesto per memorizzare un flusso audio. Pertanto
una corretta e bilanciata codifica di un documento audiovisivo avrà sempre un audio di
ottima qualità, anche se la qualità video sarà scarsa.
Nei codec lossy però il rapporto di compressione (ovvero lo spazio di memorizzazione
richiesto dal file compresso comparato a quello richiesto dal file non compresso) su dati
CADMO
Control Auto Configurable Data Network for MObiles
6
di tipo video è quasi sempre largamente superiore rispetto a quello su dati di tipo audio.
L'audio può essere compresso a 10:1 senza perdita di qualità percettibile, il video può
essere compresso anche oltre 300:1 senza che l'occhio umano scorga le differenze.
Questo di fatto attenua un po' la forbice tra audio e video.
2.1 Formato container
Un formato container è un formato di file che può contenere vari tipi di dati multimediali.
Si potrebbe dire che il container sia un sottoinsieme del concetto di formato, specializzato
per i dati multimediali. Conoscendo le specifiche del container il programma dedicato è in
grado di identificare e interpretare i differenti tipi di dato e di farne l'interleaving (ad
esempio individuare e settare un valore che stabilisce quanto spesso i flussi audio e video
sono sincronizzati). I formati container più semplici possono contenere un solo tipo di
audio o video codificato, mentre i più avanzati (e flessibili) sono in grado di raggruppare
audio, video, sottotitoli, capitoli e meta‐dati (tags), insieme con le informazioni necessarie
per riprodurre i vari flussi sincronizzati. Ad esempio WAV è un container audio semplice
mentre mp4 è un container flessibile che può gestire al suo interno molti tipi di audio e
video. L'estensione di un file caratterizza il tipo di container: per esempio “prova.mkv” è
un formato container Matroska, “prova.rm” è un formato container Real Media. Da
notare che il termine “formato container” viene spesso abbreviato solo in “container”
oppure direttamente in “formato” creando così una certa confusione terminologica. Le
differenze tra i vari container risiedono in cinque principali punti:
1. Popolarità: quanto largamente è diffuso e supportato un container. AVI è ancora il
container più popolare sebbene ormai sia obsoleto, perché è stato lo standard
adottato nei sistemi Microsoft
2. Sovra‐spazio: è la differenza in MB tra due file con lo stesso contenuto ma due
container diversi. Un film di due ore in AVI può occupare fino a 3 MB in più dello
stesso film in Matroska.
3. Supporto per funzionalità avanzate dei codec. I container più vecchi come AVI non
supportano nuove funzionalità come B‐Frames, VBR audio, VFR nativo, sebbene
possano essere "truccati" per aggiungere il supporto, ma creando così problemi di
incompatibilità
CADMO
Control Auto Configurable Data Network for MObiles
7
4. Supporto per contenuto avanzato, come capitoli, sottotitoli, meta‐tags, user‐data.
5. Supporto per lo streaming.
Confronto tra i container più diffusi: Matroska è il formato container di dominio pubblico: è sicuramente il migliore e il più flessibile.
CADMO
Control Auto Configurable Data Network for MObiles
8
3. COMPRESSIONE
Per il trasferimento d'immagini, vista la grossa mole di dati che compone i file audio/video
è necessario ricorrere a strumenti di compressione.
Il vantaggio che si ottiene con questi strumenti è una riduzione dei dati da trasferire, ma
per contro un'altra compressione comporta anche un alto degrado dell'immagine.
La compressione e la gestione della stessa è demandata alle telecamere digitali che,
essendo dotate di una CPU, hanno la capacità di calcolo sufficiente per questa
operazione.
Il termine “compressione” viene solitamente associato all’operazione che implica la
modifica della forma di un oggetto reale affinché occupi un volume inferiore rispetto a
quello occupato nella forma originale. Si osservi tuttavia che la compressione di un
oggetto reale non comporta in alcun modo una diminuzione del peso, ma solo una
diminuzione del volume; inoltre la natura stessa dell’oggetto compresso non cambia.
Il concetto di compressione, si riflette nel mondo informatico con significati simili alla
compressione fisica. Gli oggetti da comprimere sono in questo caso rappresentati dai file,
di qualsiasi natura essi siano e il volume occupato prima e dopo la compressione è
associabile allo spazio occupato dal file sul supporto di memorizzazione; in tal caso l’unita
di misura dello spazio occupato non saranno i metri cubi ma i byte.
La differenza fra compressione fisica e informatica riguarda la natura degli oggetti da
comprimere: un file è una sequenza di numeri binari, che rappresentano l’ informazione;
non è possibile comprimere i bit avvicinandoli come si farebbe con un qualsiasi oggetto
fisico; l’unico modo per far occupare meno spazio ad un file è eliminare alcuni bit,
modificando l’informazione in esso contenuta. Modificare l’informazione, è equivalente
però a cambiare la natura dell’oggetto, è come se una bottiglia di plastica schiacciata non
fosse più una bottiglia di plastica, ma una tazza. Il file sarebbe praticamente inutilizzabile.
Per capire meglio cosa comporta la compressione di un file, supponiamo di avere una
stringa di 30 locazioni nella quale abbiamo memorizzato la frase: “Domani potrebbe
piovere”, che occupa 23 locazioni. Supponiamo di rimuovere le vocali, l’informazione
risultante sarà: “Dmn ptrbb pvr”.
CADMO
Control Auto Configurable Data Network for MObiles
9
La frase compressa, occupa uno spazio di 13 locazioni, sono disponibili in totale 17
locazioni per memorizzare altre informazioni rispetto alle 7 disponibili prima della
compressione. Se ora volessimo sapere che tempo farà domani e andassimo a leggere il
contenuto della stringa, non riusciremmo però a capirne il senso e pertanto
l’informazione compressa è inutilizzabile se usata in tale forma.
Riassumendo, l’unico modo per comprimere un file è modificare l’informazione in esso
contenuta rimuovendo parte degli elementi costituenti, ma tale processo lo rende
inutilizzabile. Il problema da porsi quando si progetta un algoritmo di compressione, è
quindi il modo in cui sarà compresso il file, per poterne in seguito recuperare il contenuto
nella sua interezza o in casi specifici, il modo in cui deve essere costruita una sua buona
approssimazione, più economica in termini di spazio occupato.
I dati compressi presentano altri vantaggi oltre quello di recuperare spazio sui supporti di
memorizzazione: dati di dimensioni ridotte possono essere recuperati più facilmente dai
database, mentre i file video e audio, generalmente molto capienti, possono essere
scaricati da un terminale remoto più velocemente. Di seguito si descriveranno le tecniche
di compressione sulle quali si basano i principali algoritmi.
Le tecniche di compressione sono due ed entrambe si basano proprio sulla ripetizione di
elementi costituenti l'informazione: compressione statistica e compressione mediante
sostituzione di testo o con dizionario.
La compressione statistica, come suggerito dal nome, si basa sullo studio statistico dei
dati da comprimere. Un esempio è rappresentato dall’algoritmo di Huffman. In linea di
principio, l’algoritmo è usato per la compressione dei testi e richiede lo studio della
frequenza con la quale ciascun carattere compare nelle parole.
Esso si basa sull’analisi statistica del dato da comprimere, in particolare sulla frequenza
con la quale si ripetono i suoi elementi. Consideriamo un file di testo, il principio di
funzionamento è molto semplice: ad ogni carattere codificato con un codice a 8 bit, è
sostituito un codice di lunghezza inferiore, di almeno 1 bit. Si supponga per esempio di
voler comprimere la frase “ciao mamma”: tenendo conto del carattere “spazio” (‘ ‘) la
CADMO
Control Auto Configurable Data Network for MObiles
10
frase è lunga 10 caratteri, quindi la codifica richiede 80 bit (8 bit x 10 char = 80 bit).
Applicando l’algoritmo di Huffman, il processo di compressione avviene in quattro fasi.
Nella prima fase viene esaminato il testo contando le ricorrenze di ciascun
carattere e fornendo in output le associazioni “carattere:ricorrenza”. Nel nostro
caso i caratteri “C”, “I”, “O”, “ ‘ ‘ “ si ripetono una volta, i caratteri “A” ed “M” si
ripetono tre volte, quindi le associazioni sono: C:1, I:1, A:3, O:1, ’ ’:1, M:3.
Nella seconda fase viene generato un albero detto albero di Huffman. Il processo
avviene in 3 momenti:
1. viene generata una lista di nodi raggruppati in ordine di ricorrenza, ciascun
nodo rappresenta un carattere;
2. si cercano i due nodi con ricorrenza inferiore e viene generato un nuovo
nodo etichettandolo con la somma delle ricorrenze di ciascun carattere nel
testo. I nodi‐foglia diventano figli del nodo generato;
3. il nuovo nodo viene aggiunto alla lista dei nodi.
Il secondo e il terzo passo vengono iterati finché non rimane un solo nodo.
Nella seguente figura è possibile osservare come viene modificata la lista ad ogni
iterazione. Il risultato dell’elaborazione è mostrato nel riquadro 5. L’ultimo nodo della
lista, etichettato con il valore 10, rappresenta ovviamente la radice dell’albero di Huffman
le cui foglie sono i caratteri che compaiono nel testo da comprimere.
Il processo si conclude etichettando gli archi a sinistra con zero e quelli a destra con 1.
La codifica di ciascun carattere, si ottiene percorrendo l’albero di Huffman dalla radice
alla foglia corrispondente al carattere da codificare e concatenando le etichette associate
agli archi percorsi. Nel nostro caso si ottiene la seguente codifica: C = 000; I = 001; O =
010; ‘ ’ = 011; A = 10; M =11.
CADMO
Control Auto Configurable Data Network for MObiles
11
Sul risultato ottenuto possono essere fatte importanti osservazioni, che sottolineano
l’importanza dell’algoritmo di Huffman per la compressione dei file e quanto sia in realtà
complessa la logica alla base.
La necessità di conoscere le proprietà del file da comprimere fa spesso preferire alla
compressione statistica, la compressione mediante sostituzione. La tecnica si compone di
due fasi: nella prima fase, vengono cercate le stringhe di caratteri che si ripetono nel testo
e viene definito un dizionario nel quale memorizzarle; a tutte è associato un indice.
Nella seconda fase, si cercano nel testo le stringhe ripetute e viene sostituito ad ognuna
un puntatore alla locazione occupata nel dizionario. Il principio di compressione si basa
sul presupposto che un puntatore occupa meno spazio di una stringa di caratteri, inoltre
quanto maggiori saranno le ricorrenze di stringhe identiche, tanto maggiore sarà la
compressione del file. Per capire meglio i vantaggi offerti dalla tecnica di compressione
mediante sostituzione, supponiamo di voler comprimere il seguente testo: “Sara indossa
un maglione giallo. Luisa, la sorella di Sara, indossa un maglione verde. Luisa e Sara,
usciranno questa sera.”
Il dizionario risultante dalla scansione è il seguente:
1. Sara
2. Indossa
3. Un
4. Maglione
5. Luisa
Si è associato a ciascuna parola un indice in relazione all’ordine con il quale le parole sono
state memorizzate nel dizionario. Il testo risultante dalla compressione, ottenuta
sostituendo alle parole del dizionario che compaiono nella frase, l'indice, è in definitiva:
“1 2 3 4 giallo.
5, la sorella di 1, 2 3 4 verde.
5 e 1, usciranno questa sera.”
CADMO
Control Auto Configurable Data Network for MObiles
12
La compressione mediante sostituzione ha un ulteriore vantaggio: la possibilità di
ricostruire facilmente il testo originale sostituendo ai puntatori le stringhe corrispondenti
e preservando quindi la natura stessa dell’informazione contenuta nel file. In altri termini,
vengono conservate le caratteristiche originali dei dati, ed è possibile usare tali
informazioni nel passaggio dalla forma compressa a quella non compressa per ricostruire
il file originale.
Gli algoritmi di compressione si basano tutti sul tali tecniche, ovviamente ciascuna tecnica
di adatta particolarmente alla compressione di specifici tipi di file.
La codifica di Huffmann permette di fare una compressione loss‐less e si basa sul fatto
che i simboli (in questo caso, i livelli di grigio o di colore) non sono equiprobabili, e quindi
non occorre usare parole di uguale lunghezza per rappresentarli. La codifica di Huffmann
usa un bit‐rate variabile (VBR), cioè assegna meno bit (quindi parole più corte) ai simboli
più probabili, e più bit ai
simboli meno probabili, riducendo così il bit‐rate medio. Il problema sta nel determinare
quali sono i livelli di grigio più probabili nell’insieme di tutte le scene possibili; i
codificatori di Huffmann utilizzati dai compressori video si basano su statistiche effettuate
su un gruppo di immagini campione, dalle quali vengono estrapolati i simboli più
probabili.
CADMO
Control Auto Configurable Data Network for MObiles
13
4 TECNICHE DI COMPRESSIONE
4.1 Tecniche di compressione intra‐frame
Osservando una qualunque immagine si osserva che questa è divisibile in tante regioni
che hanno valori di luminanza e crominanza molto simili: i pixel di ciascuna di queste
regioni quindi sono molto correlati spazialmente. Si potrebbe quindi pensare di
trasmettere solo il primo pixel per intero, e i successivi come differenza del precedente;
ma sottrarre, in matematica discreta, significa derivare, e cioè amplificare il rumore
deteriorando così l’immagine. Per ovviare a questo basta predire il pixel attuale con quelli
adiacenti pesati, in modo tale che il rumore, modellizzato come AWGN, si autoelmini
come nel caso dell’utilizzo della tecnica DPCM.
Altre codifiche intra‐frame si basano su test psicovisivi fatti sull’occhio umano che
descrivono la sua sensibilità a certe componenti frequenziali: l’occhio umano non
percepisce le componenti ad alte frequenze spaziali, mentre è molto sensibile a quelle a
basse frequenze. Si può comprimere quindi tagliando le componenti ridondanti (a cui
l’occhio non è sensibile) con filtri numerici, ricordando che molti segnali possono essere
rappresentati come somma pesata di sinusoidi:
I coefficienti αi e βi possono essere organizzati in una matrice, che rappresenta
l’immagine digitale trasformata nel dominio della frequenza.
4.2 Tecniche di compressione intra‐frame: DPCM
La codifica DPCM è la via più semplice per eliminare la ridondanza spaziale, e parte dal
presupposto che un pixel è correlato sempre con quelli adiacenti, e che quindi porta
informazioni su se e sugli altri.
Σi[αi sen(ωi) + βi(ωi)]
CADMO
Control Auto Configurable Data Network for MObiles
14
Quindi tramite i pixel adiacenti (logicamente quelli passati) viene predetta parte
dell’informazione del pixel attuale tramite un predittore. Il predittore esegue una
combinazione lineare dei pixel adiacenti pesati con dei coefficienti ci, scelti in modo da
minimizzare l’errore quadratico medio tra la predizione e il pixel attuale su una vasta
gamma di immagini (addestramento del predittore). In questo modo, togliendo al pixel
attuale l’informazione predetta, verrà acquisita solo l’informazione, cioè la reale
informazione contenuta in quello. A prima vista questo processo sembra loss‐less, ma non
lo è: il predittore potrebbe produrre un valore non intero, così che l’informazione debba
essere quantizzata, cioè arrotondata, ottenendo così in ricezione un’immagine diversa da
quella reale. Tuttavia, poiché ogni pixel dipende da quelli adiacenti, l’errore si propagherà
e aumenterà (poiché la quantizzazione introdurrà altri errori) fino a distruggere
l’immagine. Per evitare questo occorre ricostruire l’immagine a trasmettitore, e predirre i
pixel successivi dai pixel adiacenti già compressi, così da ridurre notevolmente la
propagazione dell’errore.
CADMO
Control Auto Configurable Data Network for MObiles
15
4.3 Tecniche di compressione intra‐frame: tecniche a trasformata
Un’immagine digitale equivale a una matrice Q (N×N), che posso trasformare nel dominio
della frequenza tramite la matrice dei coefficienti W. La trasformata di Q è quindi:
Un’immagine trasformata si presenta come un insieme di punti concentrati per lo più
lungo le assi x e y delle frequenze spaziali che rappresentano le transizioni di livello di
grigio; i punti con alte frequenze orizzontali e verticali rappresentano i vertici.
Qf =W-1 Q W
CADMO
Control Auto Configurable Data Network for MObiles
16
Poiché l’occhio umano vede solo i contorni e le macchie di colore, ma non distingue i
vertici, possiamo considerare quest’ultimi come componenti ridondanti sotto l’aspetto
psicovisivo. Quindi è possibile comprimere un’immagine in maniera lossy filtrando via le
componenti psicovisive ridondanti.
Una trasformata possibile è la DFT ( Discrete Fourier Transform): per fare questa occorre
replicare infinite volte l’immagine lungo le 2 dimensioni
L’unico inconveniente della DFT è che produce valori complessi, e questo è dovuto alla
discontinuità delle repliche dell’immagine; infatti se trasformo tramite la DFT una matrice
pari, otterrò una matrice trasformata a valori reali: questo equivale a applicare la DCT
(Discrete Cosine Tranform). Occorre quindi trovare il modo di replicare la nostra
immagine in modo da trasformarla in un segnale periodico pari.
CADMO
Control Auto Configurable Data Network for MObiles
17
Quindi, tramite l’immagine di warping, posso effettuare la DCT ricavando così una matrice
trasformata a valori reali. A questo punto devo filtrare la matrice trasformata in modo da
tagliare via le componenti ridondanti: questo sarà fatto tramite una matrice delle stesse
dimensioni della matrice di warping detta Zonal Coding Mask, che vale 1 se l’elemento è
da tenere, 0 se l’elemento è da filtrare via. Il numero di bit usati per quantizzare gli
elementi della matrice filtrata sono scritti in un’altra matrice detta Bit‐Allocation Map.
CADMO
Control Auto Configurable Data Network for MObiles
18
Il problema fondamentale dei codificatori ibridi DPCM/DCT sono le distorsioni, che
generano 2 tipi di artefatti:
1. Gli artefatti di tipo blocking (chiamati anche macroblocchi...) che derivano dalla
decomposizione in blocchi: quando il bit‐rate scende, la maggior parte dei bit
viene spesa per la codifica dei vettori di moto piuttosto che per la codifica del
residuo, utilizzando una quantizzazione piuttosto grezza che porta alla perdita del
dettaglio più fine rendendo estremamente visibile la struttura a blocchi
dell'immagine ricostruita.
CADMO
Control Auto Configurable Data Network for MObiles
19
2. Gli artefatti di tipo Ringing , cioè quella serie di aloni che si possono notare sui
contorni principali delle immagini decodificate.
4.4 Tecniche di compressione inter‐frame
Consideriamo 2 frame consecutivi di un video: se gli oggetti o la telecamera si muovono
lentamente le 2 scene sono altamente correlate temporalmente; è possibile quindi fare la
differenza tra il secondo frame ed il primo e trasmettere questa, usando la prima
immagine come predizione della seconda: in questo modo si invierebbe solo una piccola
quantità d’informazione
avendo eliminato la ridondanza temporale.
Tuttavia se c’è un movimento più veloce (sia della telecamera, sia dell’oggetto), i due
frame non risultano più correlati e quindi il metodo esposto prima non sarebbe così
efficiente; riuscendo invece a predire il movimento di un oggetto nel frame successivo, il
frame verrebbe compresso
in maniera molto efficiente; questo è dovuto al fatto che l’intertempo tra due frame
consecutivi è piccolo, per cui è possibile apprezzare solo il movimento traslatorio, e
trascurare quello rotatorio: questa tecnica è detta compensazione del movimento o
motion compensation (MC) ed è un potente strumento per ridurre la ridondanza
temporale tra due frame.
CADMO
Control Auto Configurable Data Network for MObiles
20
4.5 Tecniche di compressione inter‐frame: motion compensation
Considerando 2 frame consecutivi n‐1 e n e dividendoli in blocchi quadrati di 8×8 pixel
(blocchi da 64 pixel).
Supponiamo che tutti i pixel dello stesso blocco facciano lo stesso movimento e che ogni
blocco presente nell’immagine n provenga dall’immagine n‐1; supponiamo inoltre che
nessun blocco possa superare una certa velocità limite di traslazione: conoscendo quindi
la durata di ciascun frame, posso definire una regione limitata nell’immagine n‐1,
chiamata target window, in cui il blocco può essersi spostato.
All’interno della target window, nell’immagine n‐1, individuiamo tutti i blocchi da 64 pixel
possibili: 2 blocchi contigui sono quelli che differiscono di 1 riga/colonna di pixel.
Considerando quindi un blocco 8×8 dell’immagine n, viene ricercato nel frame n‐1 il
blocco più simile nella target window: il criterio di similitudine si basa sulla
minimizzazione di una funzione MAD. Trovato il blocco più simile, si ricava il vettore di
spostamento. Dopo aver applicato questa operazione al frame n‐1, questo viene moto‐
compensato, cioè vengono spostati opportunamente i pixel dei blocchi secondo il vettore
CADMO
Control Auto Configurable Data Network for MObiles
21
di moto ricavato e quindi viene sottratto dal frame corrente creando quello che si chiama
residuo o errore di predizione. A questo punto anziché codificare il frame corrente
vengono codificati i vettori di moto e i coefficienti DTC del residuo che sarà più facilmente
comprimibile. Questa tecnica di MC si chiama block matching proprio perché confronta
blocco a blocco.
CADMO
Control Auto Configurable Data Network for MObiles
22
5 CODIFICA
5.1 Codifica dei vettori di spostamento: vector quantization
Supponiamo di voler codificare un vettore 2D: necessitano 2 componenti, e se quantizzo a
8 bit occorreranno 16 bit; si vuole trovare una tecnica che mi comprima la
rappresentazione dei vettori.
La codifica più semplice si chiama SIMINI che permette di comprimere i vettori del 50%:
non si inviano più due componenti, ma una sola, introducendo dei piccoli errori. Vediamo
come funziona: usando il block matching si osserva che gruppi di blocchi 8×8 si muovono
più o meno nella stessa direzione e con la stessa velocità (poiché rappresentano il
medesimo oggetto in movimento). Quindi, se rappresentiamo in un grafico i possibili
spostamenti dei blocchi, otteniamo sottoinsiemi di punti raggruppati.
Un computer riesce ad individuare gruppi di oggetti e a contarli; supponiamo che siano
stati contati N gruppi, allora dispongo sulla diagonale principale N nodi (tanti quanti il
numero dei gruppi), e viene associato ad ognuno di essi un gruppo in base alla vicinanza.
CADMO
Control Auto Configurable Data Network for MObiles
23
Quindi viene spostato ogni nodo nel baricentro del gruppo assegnatogli e divido lo spazio
2D in N regioni, ognuna delle quali sarà identificata dal vettore che ne individuerà il
baricentro.
Si definisce code‐book lo strumento che associa ad ogni classe (zona) un vettore che
individua il suo baricentro. È chiaro il fatto che più alto è N e più è alta l’accuratezza.
5.2 Qualità dei CODEC
I metodi d’analisi scelti per confrontare i codec sono 2: un approccio parametrico e un
approccio psicovisuale. L’analisi parametrica consiste nella ricerca del codec ottimo per le
necessità del sistema esaminando un insieme di parametri numerici, quali:
• La distanza euclidea (RMSE) tra i frame originali e quelli elaborati, che esprime la
somiglianza tra i 2 stream, enfatizzando gli errori più grossolani rispetto a quelli
CADMO
Control Auto Configurable Data Network for MObiles
24
più piccoli; visto che la distanza euclidea è una misura dell’errore, piccoli valori
rappresentano maggiore fedeltà.
• Il rapporto segnale‐rumore di picco (PSNR), che è definito come:
dove MSE è il quadrato della distanza euclidea.
• Il rapporto segnale – rumore (SNR), che è definito come:
ed è misurato in decibel. A differenza della distanza euclidea, SNR enfatizza i
piccoli errori rispetto a quelli grossolani. Più alto è SNR e maggiore è la fedeltà.
• Il bit‐rate all’uscita dell’encoder; occorrerà stare all’interno di un certo range per
soddisfare le specifiche dei sistemi di comunicazione usati; questo perché alla
trasmissione video non sarà dedicata una rete, ma lo stream utilizzerà la stessa
rete usata anche per altri servizi. Le valutazioni verranno fatte in media.
• L’utilizzo della CPU durante la processazione dei dati, in modo da scegliere un
codec che non oberi troppo la CPU.
• Il numero di bit in uscita dell’encoder per valutare le dimensioni dei frame e
quindi il rapporto di compressione.
L’analisi psicovisuale consiste nel raffronto visivo tra lo stream originale e quello
compresso‐decompresso; questa analisi permette di valutare, tramite il confronto visivo
tra lo stream originale e quello elaborato, gli aspetti sensibili che la distanza e lo SNR tra
frame non riescono a estrarre. Dalla distanza e dallo SNR, infatti, non si riescono a capire :
a) gli effetti del rumore;
b) le componenti frequenziali che li determinano; un codec con una distanza
alta, dovuta a componenti frequenziali spaziali alte (poco rilevanti per
PSNR(framei) = 10 log (255)2⁄MSE
CADMO
Control Auto Configurable Data Network for MObiles
25
l’occhio umano), può essere migliore di un codec con una distanza più
piccola, ma influenzata da frequenze più basse e quindi più rilevanti per
l’occhio.
5.3 Algoritmi di Change Detection
I sistemi di video sorveglianza hanno il compito di controllare ambienti e usualmente
contengono moduli che permettono il rilevamento le variazioni significative del luogo
vigilato: insomma questi moduli misurano la dissimilarità tra l’immagine attuale e quella
di riferimento, e inoltre controllano se questa dissimilarità sia significativa oppure no. Tali
variazioni significative si chiamano cambi di scena, e gli algoritmi che permettono questo
sono detti di Change Detection. Un cambio di scena per esempio potrebbe essere
l’ingresso di un uomo in una stanza prima vuota. Le tecniche di change detection
presentate in letteratura sono sostanzialmente due:
1. Algoritmi pixel‐based: che elaborano l’output analizzando e confrontando pixel a
pixel l’immagine attuale e quella di riferimento. Questo sistema presenta il
vantaggio di essere semplice e utilizzabile facilmente nelle applicazioni real‐time,
ma è poco robusto nei confronti del rumore.
2. Algoritmi region‐based: comparano regioni di pixel di un’immagine con
corrispondenti regioni dell’immagine di riferimento. Questo sistema è molto
robusto al rumore ma poco efficiente in real‐time.
In realtà esisterebbe un altro algoritmo basato sull’ edge‐comparison, che però ha un alto
costo computazionale e quindi non è indicato per sistemi con richieste temporali
stringenti come il real‐time.
Gli algoritmi di change detection sono oltre caratterizzati da una metrica, introdotta per
quantificare la differenza tra pixel/regioni e per mettere una soglia che permette di
decidere se il pixel/la regione analizzata è cambiata rispetto a quella di riferimento.
La scelta degli algoritmi di change‐detection per le specifiche del progetto in questione si
basano su constatazioni riguardo al maggiore o minore contenuto significativo delle
singole immagini. In un sistema di video sorveglianza per interni come quello in questione
sarà data maggiore importanza al rilevamento di “nuovi oggetti” o “blob” all’interno del
frame attuale rispetto a quello precedente, come per esempio l’ingresso di una persona
CADMO
Control Auto Configurable Data Network for MObiles
26
nella scena fino ad allora immobile, o al rilevamento di rapide variazioni dei valori di
luminanza e crominanza, come nel caso di un incendio. Per questo sono stati scelti 2
algoritmi che rispettino queste necessità:
1. Morphological Scene Change Detection, per il rilevamento dei blob.
2. Full Frame Scene Change Detection (FDY e FDYUV), per il rilevamento delle
variazioni di luminanza e crominanza.
5.3.1 Change detection: Full Frame Scene Change Detection (FDY e FDYUV)
L’algoritmo di Full Frame Scene Change Detection (FDY e FDYUV) è un metodo pixel‐
based e basa la misura della dissimilarità sul confronto tra gli istogrammi di luminanza;
dati gli istogrammi Hr (dell’immagine di riferimento) e Hj (dell’immagine attuale), e
sapendo che ognuno presenta n livelli di grigio, definisco indice di similitudine
normalizzato il valore:
È facile vedere che la somma al denominatore è il numero totale di pixel per frame. A
questo punto è possibile definire l’indice di dissimilarità di 2 immagini come:
Chiamiamo questo algoritmo FDY (full decompression with luminance histogram scene
detection algorithm). Allo stesso modo è possibile realizzare questo algoritmo in modo
tale che tenga conto anche delle informazioni di crominanza: sarà chiamato FDYUV (full
decompression luminance and crominance histogram scene detection algorithm). L’unica
differenza tra FDY e FDYUV è che viene considerata l’informazione colore quantizzando il
vettore Y, U, V in un solo byte con una distribuzione di bit del genere: Y : U : V = 2 : 3 : 3,
cioè vengono assegnati a Y, U, V rispettivamente 4, 8, 8 livelli. La ragione per cui si
CADMO
Control Auto Configurable Data Network for MObiles
27
assegnano meno bit alla componente Y è per ridurre la probabilità di falsi allarmi causati
da cambi di illuminazione, che avvengono frequentemente.
5.3.2 Change detection: Morphological Scene Change Detection
L’algoritmo del Morphological Scene Change Detection è un ibrido tra il pixel‐based e il
region‐based, poiché presenta i vantaggi di ambedue: si ottiene questo usando un filtro
binario morfologico che ad ogni pixel di input associa un pixel di output che dipende sia
da se stesso che da quelli vicini. Per definire un operatore morfologico occorre scegliere
uno Structuring Element (SE) B, e definire il comportamento delle 2 funzioni elementari:
• Dilatazione, che genera un aumento di dimensioni dell’oggetto considerato.
• Erosione, che genera una diminuzione di dimensioni dell’oggetto considerato.
Un SE può essere visto come una filtering mask, che mi individua i pixel adiacenti a quello
attuale e sui quali effettuare le 2 operazioni elementari.
È possibile rappresentare un SE centrato sul pixel i‐esimo come un gruppo di pixel
adiacenti; le forme più comuni di SE sono:
La composizione degli operatori di dilatazione ed erosione da vita a filtri più complessi,
come quello di opening (erosion + dilation) e quello di closing (dilation + erosion). In
questo progetto verrà considerato un SE quadrato.
In letteratura è possibile trovare 4 tipi di operatori morfologici, dei quali 2 deterministici
(mathematical morphology and soft morphology) e 2 stocastici (statistical morphology
and statistical soft morphology). Per la semplicità, per il basso costo computazionale e per
la maggiore efficienza rispetto al mathematical morphology viene utilizzato il
mathematical soft morphology.
Nel metodo mathematical soft morphology con dati binari, lo SE Bi centrato nel pixel i‐
esimo viene diviso in 2 regioni disgiunte, A (hard structuring element o HSE) e Bi/A (soft
CADMO
Control Auto Configurable Data Network for MObiles
28
structuring element o SSE), e viene scelto un parametro di peso r che da maggiore
importanza ai pixel dello HSE.
Quindi viene definita la dilatazione come:
Hi= 1 if r*MAi1 +MBi\Ai
1> r
Hi= 0 otherwise
E l’erosione come:
Hi= 1 if r*MAi0 +MBi\Ai
0 > r
Hi= 0 otherwise
dove MAi1, MAi
0 rappresentano rispettivamente il numero di bit pari a “1” all’interno dello
HSE Ai e il numero di bit pari a “0” all’interno dello HSE Ai, mentre M1Bi/Ai, M
0Bi/Ai
rappresentano rispettivamente il numero di bit pari a “1” all’interno dello SSE Bi/Ai e il
numero di bit pari a “0” all’interno dello SSE Bi/Ai. Al peso r viene assegnato un valore
leggermente minore del numero di pixel dello HSE, in particolare:
r = HSE2‐ HSE/2
Quindi un sistema di change detection basato su operatori morfologici binari presenta la
seguente architettura:
CADMO
Control Auto Configurable Data Network for MObiles
29
Il primo passo è quello di confrontare l’immagine di riferimento o background B = {B(i)|i =
1… N} (N è il numero totale di pixel di un frame), che rappresenta o l’ambiente controllato
o maglio ancora un frame poco precedente, e l’immagine attuale It = {It(i)|i = 1… N}; per
fare questo viene eseguita una binarize difference, che consiste nell’effettuare la
sottrazione pixel a pixel tra il background e l’immagine attuale e fissando il valore di
output per il pixel in questione a “1”, se questa differenza è maggiore di un valore di
soglia th. La soglia th indica la minima differenza di illuminazione per considerare 2 pixel
differenti; nel caso ideale, questa distanza è uguale a un livello di grigio, ma a causa del
rumore introdotto dai dispositivi di acquisizione, l’operazione sarà più robusta se sarà
fissata una soglia più alta (una soglia reale è compresa tra i 10 e i 25 livelli di grigio).
Quando le immagini processate assumono una forma vettoriale, per esempio nel formato
RGB, allora l’operazione di binarize difference viene applicata a ogni canale
dell’immagine, e i risultati binari saranno ottenuti effettuando l’OR logico tra gli output di
ogni canale.
CADMO
Control Auto Configurable Data Network for MObiles
30
Dopo la differenza binaria, viene utilizzato il morphological processing per eliminare i
pixel isolati e dovuti al rumore e compattarli nelle regioni in cui è avvenuto veramente un
cambio: per fare questo si usa l’algoritmo di opening, che, tramite l’erosione, rimuove i
pixel isolati, e, tramite la dilatazione, ricompone le regioni divise dall’erosione.
A questo punto calcolo il valore percentuale dei pixel “bianchi”, che chiamerò indice di
dissimilarità.
5.4 Il Codec adattivo e il decimatore di frame adattivo
Codec adattivo significa un codec che si adegua a delle circostanze in modo tale da
soddisfare certe specifiche; in questo studio il codec si “adatterà” allo stream video in
base ai cambi di scena, in modo tale da far variare il livello di qualità della compressione a
ogni variazione dell’indice di dissimilitudine dell’immagine attuale rispetto a quella di
riferimento. I coefficienti di dissimilarità, generati dagli algoritmi di change detection,
confrontatati con soglie, produrranno un fattore di qualità (qf, che può assumere valori
che vanno da 0 a 6), e che andrà a pilotare il livello di qualità del compressore: a ogni
valore di qf corrisponderà un livello di qualità. I parametri presi in considerazione per
variare la qualità sono:
1. I “VOP” flags, che fissano i parametri per la generazione dei vettori di spostamento
dei VOP;
2. I “motion” flags, che fissano l’algoritmo di ME (Motion Estimation);
3. Il quant member che fissa il valore del quantizzatore della DCT; può assumere
valori che vanno da 1 (massima qualità) a 31 (minima qualità). Verrà utilizzato il
CADMO
Control Auto Configurable Data Network for MObiles
31
range di valori [10, 25], in modo che, da un lato, non si ottengano frame troppo
grossi e si rallenti la velocità di processazione, e, dall’altro, non si abbia una qualità
troppo bassa.
Gli algoritmi di change detection utilizzati sono quelli menzionati precedentemente: Full
Frame Scene Change Detection (FDY e FDYUV), poiché più sensibile alle variazioni dei
livelli di luminanza e crominanza, e il Morphological Scene Change Detection, in
particolare il mathematical morphology, più sensibile al movimento.
Il codec adattivo sarà composto essenzialmente da 2 oggetti:
Un grabber che recupererà l’immagine non compressa e farà partire gli algoritmi
di change detection, avendo come immagine di riferimento quella precedente. È
da notare che non verranno recuperati tutti i frames, ma solo alcuni distanti
temporalmente un certo intervallo ΔT variabile da utente.
L’ encoder, il cui livello di qualità sarà controllato dalle oscillazioni dei parametri
logici introdotti dagli algoritmi di change detection.
CODEC ADATTIVO
Un’altra strada parallela per diminuire il bit‐rate medio è quella di agire sul frame‐rate;
utilizzando infatti la relazione che lega il frame‐rate istantaneo col bit‐rate istantaneo
fr = br\n
CADMO
Control Auto Configurable Data Network for MObiles
32
fr= Frame Rare br= Bit Rate n= Numero di Bit per Frame
e considerando il fatto che frame adiacenti hanno più o meno lo stesso contenuto
informativo, posso scartare frame riducendo il bit‐rate medio senza perdere informazioni
significative; per realizzare questo è viene progettato un filtro decimatore, che elimina
frame equidistanziati in modo da ridurre il frame rate a un valore voluto. Il filtro
decimatore è pilotato in maniera adattiva:
1. dai valori di qf : a ogni valore di qf è associato un valore di frame‐rate;
2. dal valore massimo di bit‐rate medio richiesto da utente utilizzando al relazione
precedente.
Per valori bassi di qf (< 2, quindi per valori non significativi di change detection, che
equivale a un frame con basso contenuto informativo) il framerate è il minore tra i 2
proposti; altrimenti, per qf ≥ 2, viene utilizzato il valore di frame‐rate associato al valore di
qf, cercando di perdere il meno possibile frame con alto contenuto informativo.
Il decimatore adattivo sarà composto essenzialmente da 3 oggetti:
Il decimatore di frame, che imposterà un frame‐rate che dipenderà, come detto
dal valore di qf e dalla soglia di bit‐rate medio
Un grabber che recupererà l’immagine non compressa e farà partire gli algoritmi
di change detection, avendo come immagine di riferimento quella precedente.
Un grabber che permetterà il calcolo del bit‐rate medio fino a quel momento e
quindi del frame rate necessario a stare sotto‐soglia.
CADMO
Control Auto Configurable Data Network for MObiles
33
L’ultima cosa da analizzare è la generazione del fattore di qualità qf in funzione degli
indici di dissimilarità calcolati dai 2 algoritmi di change detection. Innanzi tutto sono
possibili 3 configurazioni per la scelta dell’indice di dissimilarità da utilizzare:
1. L’utilizzo l’indice di dissimilarità prodotto dall’algoritmo di Morphological Scene
Change Detection
2. L’utilizzo l’indice di dissimilarità prodotto dall’algoritmo di Full Frame Scene
Change Detection (FDY e FDYUV)
3. L’utilizzo del valore massimo dei due indici
Quindi occorre definire una politica di generatore di soglie con cui confrontare l’indice
scelto.
Vengono proposte 2 strade per la generazione della soglia:
Lineare: le soglie sono equispaziate di un valore percentuale di 14, visto che sono
contemplati 7 livelli di qf
CADMO
Control Auto Configurable Data Network for MObiles
34
Esponenziale: l’andamento delle soglie segue un andamento logaritmico secondo
la legge
Tuttavia così facendo il livello di qualità “0”, e in generale i livelli più bassi, sarebbero
superati troppo velocemente con frame con contenuti informativi troppo bassi,
rischiando di sprecare banda. Quindi la legge è stata modificata allargando il livello “0”:
CADMO
Control Auto Configurable Data Network for MObiles
35
A questo punto è possibile creare una relazione univoca che lega il valore dell’indice di
dissimilarità con il livello di qualità.
5.5 Tag e ricerca intelligente
Gli algoritmi di change detection, oltre che permettere la realizzazione del codec adattivo,
sono uno strumento che mi permette di catalogare lo stream video in gruppi di frames,
pari al numero di immagini per ogni intervallo di tempo di scansione ΔT, o suoi multipli.
Quindi ad ogni frame analizzato col change detection verranno associati dei tag che
esprimeranno il livello di dissimilarità tra l’immagine in considerazione e quella
precedente. Inserendo, quindi, dei valori di soglia da utente, sarà possibile individuare
spezzoni di video che hanno tag maggiori uguali di queste soglie e vederli in playback.
CADMO
Control Auto Configurable Data Network for MObiles
36
6 ALGORITMO JPEG
Si è già accennato alla descrizione del formato di compressione JPEG (Joint Photographic
Expert Group), che fa parte degli algoritmi di compressione di tipo lossy. La proposta
come standard venne presentata e approvata nel 1991 e nel 1992 e il JPEG è diventato
ufficialmente uno standard ISO. Spesso capita di sentir parlare del JPEG come di un
formato di compressione non distruttivo, ma a tale proposito occorre fare una precisione.
Le specifiche JPEG descrivono tra l’altro un formato di compressione non distruttivo, non
più usato a causa della sua ridotta efficienza rispetto alla versione “distruttiva”. JPEG è
uno dei formati più usati in assoluto e non solo dalla comunità informatica, il motivo di
tanto successo è facilmente comprensibile: osservando attentamente un’immagine nel
suo formato standard e la stessa immagine compressa in formato JPEG, esse risulteranno
apparentemente identiche, eppure lo spazio occupato risulta notevolmente inferiore nel
caso dell’immagine JPEG.
Il merito di questo risultato sorprendente è da ricercarsi negli studi sulla percezione
dell’occhio umano, condotti per progettare l’algoritmo usato per la compressione. Si è
notato anzitutto che le immagini, nello specifico le fotografie, presentano delle variazioni
di colore e luminosità graduali con differenze infinitesimali tra pixel adiacenti. Tali
differenze sono praticamente invisibili all’occhio umano nel complesso dell’immagine. In
secondo luogo, la sperimentazione ha portato alla conclusione che l’occhio umano è
molto più sensibile alla luminosità di quanto non lo sia al colore delle immagini.
A riprova di quanto detto è sufficiente osservare che in condizioni di luce ridotta, l’occhio
si abitua a tale condizione, ma perde la percezione del colore, riuscendo a distinguere
solo immagini in bianco e nero. In altre parole i colori sono percepiti solo in condizioni
appropriate di luminosità.
Questi due importati risultati della ricerca hanno portato alla progettazione di un
algoritmo di compressione JPEG che si sviluppa in sei fasi. Di queste, i primi 3 passi
sfruttano i risultati ottenuti dalla ricerca.
il primo passo implica la trasformazione dell’immagine dalla modalità RGB alla
modalità YUV;
il secondo passo implica l’applicazione della Trasformata Coseno Discreta (DCT);
CADMO
Control Auto Configurable Data Network for MObiles
37
il terzo passo implica la rimozione degli elementi non percepibili dell’immagine.
E’ risaputo che numerosi formati di immagine rappresentano ciascun pixel con la triade di
colori Red Green Blue (RGB). La somma dei contributi di ciascun elemento della triade
consente di creare qualsiasi sfumatura di colore; tuttavia, per quanto detto non tutti i
colori sono percepibili dall’occhio umano. La ricerca e gli studi condotti sulla percezione
delle immagini hanno portato alla conclusione che la luminosità è molto più rilevante del
colore. Queste differenze sono alla base dell’idea che ha portato alla definizione dello
standard YUV.
La Y rappresenta la componente di luminanza, la U e la V sono dette invece componenti
differenza e rappresentano la crominanza; tali componenti possono anche essere indicate
rispettivamente come Componente differenza del blue (Cb) e Componente differenza del
rosso (Cr).
Il primo passo dell’algoritmo di compressione JPEG implica la trasformazione
dell’immagine dalla modalità di rappresentazione del colore RGB, alla modalità YUV (o
YCbCr).
E’ evidente che la trasformazione non implica una riduzione di spazio: se sono infatti
necessari 8 bit per rappresentare ciascuna componente RGB, cioè 24 bit (3 x 8 bit) per
ciascun pixel dell’immagine, saranno necessari altrettanti bit per rappresentare un pixel
con la triade YUV; inoltre tale processo non è irreversibile. Per ridurre lo spazio occupato
si ricorre ad una tecnica, che sfrutta le caratteristiche percettive dell’occhio umano.
L’immagine viene divisa in gruppi di pixel e per ogni gruppo si memorizza la luminanza di
ciascun pixel per intero, mentre si sceglie un campione di informazioni sulla crominanza
per ciascun gruppo.
Un esempio è la rappresentazione YUV 4:2:2 che consente di rappresentare per ciascun
pixel, la luminanza con 1 byte e la crominanza con 1/2 byte per un totale di 2 byte per
pixel contro i 3 byte della rappresentazione RGB e YUV standard, con un risparmio di circa
il 33%. Gli effetti della compressione JPEG sono quindi evidenti dal primo passo
dell’algoritmo ed è da subito chiara l’irreversibilità del processo.
Il primo passo della compressione JPEG implica la conversione dell’immagine dalla
rappresentazione RGB in quella YUV. Il processo di conversione richiede l’applicazione di
CADMO
Control Auto Configurable Data Network for MObiles
38
un semplice sistema lineare e di una tecnica per consentire una compressione iniziale, che
sfrutti la caratteristica dell’occhio umano di percezione della crominanza e della
luminanza.
Altre rappresentazioni YUV sono: YUV 4:4:4 (come la YUV standard), YUV 4:4:0 (guadagno
di circa il 50%). E’ evidente che la tecnica descritta comporta una perdita di informazione
e quindi è irreversibile; completata la fase di conversione, si procede poi con il secondo
passo per la compressione JPEG.
Per sfruttare meglio la ridondanza di pixel e semplificare i calcoli, le immagini sono divise
in piani che a loro volta sono suddivisi in blocchi di 8 X 8 pixel (secondo passo di
compressione). Ogni piano subisce un’elaborazione differente, che meglio si adatta alle
caratteristiche dei pixel che lo compongono.
Come anticipato il terzo passo di compressione implica l’applicazione dell’algoritmo della
Trasformata Coseno Discreta (DCT). Ogni blocco di 8 X 8 pixel, può essere visto come un
vettore nello spazio a 64 dimensioni, a tal proposito si consideri il concetto di matrice
multidimensionale in C; i blocchi rappresentano una base detta base canonica per le
immagini.
La DCT trasforma la base canonica in una nuova base più adatta alla compressione, in
particolare trasforma il blocco di 8 X 8pixel nel dominio dello spazio, in un blocco di 8 X 8
coefficienti nel dominio delle frequenze. In termini più elementari, dopo l’applicazione
dell’algoritmo, ogni blocco trasformato sarà rappresentato da uno spettro di frequenza
dell’immagine costituita da un raggruppamento di pixel bianchi e neri.
Le aree bianche di uno spettro di frequenza, sono indicative di una maggiore
concentrazione di energia, in queste zone l’intensità del contrasto è maggiore. Il
vantaggio della conversione in frequenza delle immagini risiede nella possibilità di
individuare con maggiore semplicità e precisione le aree di poco interesse. Queste aree
sono rappresentate da alti valori di frequenze non percepibili dall’occhio umano e
rappresentano sezioni dell’immagine sacrificabili.
In generale, il blocco rappresentato nel dominio della frequenza rappresenterà valori di
frequenza crescente dal coefficiente in alto a sinistra al coefficiente in basso a destra. Il
CADMO
Control Auto Configurable Data Network for MObiles
39
primo coefficiente del blocco in alto a sinistra rappresenta la media dei valori del blocco
nel dominio dello spazio ed è detto Componente Continua (DC). Il passo successivo è
strettamente legato ai risultati ottenuti dall’applicazione dell’algoritmo DCT ed è
significativo nel processo di compressione, apportando un contributo rilevante allo scopo.
L’algoritmo DCT, tramite il processo di trasformazione descritto trasforma i blocchi di 64
pixel dell’immagine da comprimere, rappresentati nel dominio dello spazio, in blocchi di
64 coefficienti, rappresentati nel dominio della frequenza. Questo processo come detto,
consente di individuare facilmente le zone “sacrificabili” dell’immagine o meglio le aree
da tagliare per ridurne le dimensioni. Il quarto passo dell’algoritmo di compressione JPEG,
è detto di quantizzazione ed esegue l’eliminazione fisica di tali aree.
Il processo implica la moltiplicazione del blocco/matrice di 8 X 8 coefficienti con i
corrispondenti valori contenuti in una tabella detta “tabella di quantizzazione”.
Questi valori, detti “coefficienti di quantizzazione”, sono tutti compresi tra 0 e 1. I valori
più bassi sono forniti in corrispondenza delle alte frequenze, quelli più alti in
corrispondenza delle basse frequenze. Il processo implica l’arrotondamento all’intero più
vicino. La quantizzazione comporterà l’azzeramento di molti coefficienti del blocco in
corrispondenza di valori di frequenza elevati (valori poco rilevanti). In generale, data
l’organizzazione di tali valori all’interno di un blocco, si avrà una piccola concentrazione di
elementi diversi da zero in alto a sinistra del blocco, tutti gli altri in basso a destra saranno
azzerati.
La scelta di un fattore di compressione delle immagini JPEG implica in definitiva la scelta
di un valore di scala della tabella di quantizzazione. Ovviamente valori bassi
implicheranno un maggior numero di coefficienti azzerati con una più evidente
granulosità a favore di una maggiore compressione. I coefficienti vengono infine
organizzati in modo sequenziale favorendo una lettura a zig‐zag. Questa disposizione
favorisce la lettura sequenziale di elementi simili tra loro, consentendo una maggiore
efficienza degli algoritmi di compressione applicati.
Il fattore di compressione all’immagine così approssimata viene infatti ulteriormente
migliorato nel quinto passo, procedendo con l’applicazione di un algoritmo di
compressione non distruttivo. Quest’ultimo è generalmente l’algoritmo di Huffman già
descritto in modo esaustivo nel paragrafo sulla compressione dei file.
CADMO
Control Auto Configurable Data Network for MObiles
40
La compressione vera e propria è ora conclusa ed è chiaro che la serie di interventi
eseguiti sull’immagine non consentirà più di risalire al suo formato originario. Per
consentire una certa portabilità dell’immagine o meglio, per consentire di variarne il
formato di rappresentazione in base agli usi che se ne faranno successivamente, nel sesto
e ultimo passo del processo di compressione vengono aggiunti al file JPEG così ottenuto la
tabella di quantizzazione e il vocabolario risultante dalla compressione con Huffman.
Le informazioni sono tali da poter risalire ad una rappresentazione dell’immagine che
consenta all’utente di sceglierne la qualità, potendo se necessario optare per un fattore di
compressione superiore o inferiore. Il processo di decompressione è l’esatto opposto di
quello di compressione.
6.1 M‐JPEG
Il Motion JPEG o M‐JPEG è forse il più usato tra gli algoritmi di compressione video. Le
telecamere digitali effettuano acquisizioni di singoli fotogrammi e ne effettuano la
compressione in formato JPEG. A compressione avvenuta la telecamera genera una
trasmissione in flusso continuo di max. 30 immagini al secondo (30fps). Nel caso di una
trasmissione superiore ai 16fps le immagini vengono percepite dall'occhio umano come
CADMO
Control Auto Configurable Data Network for MObiles
41
un movimento fluido. Questo algoritmo di compressione prende il nome di Motion JPEG
perché di fatto vengono trasmesse tante immagini complete con lo stesso livello di
compressione/qualità in formato JPEG.
Uno dei vantaggi dello standard Motion JPEG risiede nel fatto che le varie immagini di una
sequenza video possono avere la stessa qualità, che varia a seconda del livello di
compressione scelto per la telecamera di rete o per il codificatore video. Maggiore è il
livello di compressione, minore è la qualità delle immagini e la dimensione file. In alcune
condizioni, ad esempio di scarsa illuminazione o quando una ripresa diventa complessa, le
dimensioni del file immagine possono diventare piuttosto grandi e utilizzare una
larghezza di banda e uno spazio di memorizzazione maggiori. Per impedire l'aumento
della larghezza di banda e dello spazio di memorizzazione utilizzati, i prodotti con
tecnologia video di rete consentono all'utente di impostare un limite massimo di
dimensione file per un fotogramma immagine.
Poiché non esistono legami tra i fotogrammi in formato Motion JPEG, il video Motion
JPEG è "solido", nel senso che se durante la trasmissione si perde un fotogramma, il resto
del video non verrà compromesso.
Il formato Motion JPEG è uno standard caratterizzato da un'ampia compatibilità ed è
diffuso in applicazioni in cui sono necessari singoli fotogrammi di una sequenza video (ad
esempio, per l'analisi) e in cui vengono utilizzate velocità di trasmissione ridotte, di solito
5 fotogrammi al secondo o meno. Lo standard Motion JPEG può essere utile anche per
applicazioni che richiedono l'integrazione con sistemi che supportano solo Motion JPEG.
Lo svantaggio principale dello standard Motion JPEG è rappresentato dal fatto che non
utilizza tecniche di compressione video per ridurre i dati, poiché consiste in una serie di
immagini fisse e complete. Il risultato è una velocità di trasmissione in bit relativamente
alta o un rapporto di compressione basso per la qualità offerta rispetto agli standard di
compressione video MPEG‐4 e H.264.
CADMO
Control Auto Configurable Data Network for MObiles
42
7 STANDARD DI CODIFICA: MPEG
MPEG è l'acronimo di "Moving Pictures Experts Group", ed è il soprannome attribuito all'
ISO/IEC JTC1 SC29 WG11:
• ISO: International Organization for Standardization
• IEC: International Electrotechnical Committee
• JTC1: Joint Technical Commitee 1
• SC29: Sub‐committee 29
• WG11: Working Group 11
MPEG è quindi un gruppo di lavoro internazionale che stabilisce degli standard dei sistemi
di compressione per immagini in movimento con audio associato. La metodologia
adottata suddivide il lavoro in tre fasi, che riguardano i Requisiti (requisiti degli obiettivi
che si desidera raggiungere), la Competitività (realizzare standard il più duraturi possibili)
e la Convergenza (integrare in un'unica soluzione le proposte promettenti e valide).
MPEG è nato nel 1988 e da allora ha prodotto diverse versioni dello standard.
MPEG‐1: Utilizzato nei Video CD è un formato a bassa qualità (analoga al sistema
VHS). Definito a livello di standard nel 1992, questo formato è stato progettato
per la codifica di immagini in movimento e per l'audio ad esse associato con
bitrate fino a circa 1,15 Mbit/s per il video e dai 384 ai 192 Kbit/s per l'audio.
MPEG‐2 E' stato sviluppato a partire dall'MPEG‐1 ma progettato per una varietà
più ampia di applicazioni. Esiste dal 1994. L'applicazione primaria è la trasmissione
a qualità televisiva CCIR 601 con un bitrate tra 3 e 10 Mbit/s, ma è efficiente anche
per applicazioni con bitrate superiori come HDTV. E' utilizzato nelle trasmissioni
satellitari digitali, nei DVD e nel digitale terrestre. La sua caratteristica principale è
la scalabilità, cioè la possibilità di creare soluzioni di codifica e decodifica più o
meno complesse in base al tipo di prodotto da realizzare.
MPEG‐3 Inizialmente sviluppato per HDTV in seguito si è scoperto che l'MPEG‐2
era sufficiente per HDTV e quindi questo nuovo standard venne abbandonato
MPEG‐4 Sviluppato dal 1993 al 1998, è stato progettato per la codifica audiovisiva
a bassissimo bitrate. Tale formato può essere considerato un'evoluzione
dell'MPEG‐2 nella gestione di immagini provenienti dalla televisione digitale, dalle
applicazioni grafiche interattive, nella distribuzione e nell'accesso di
CADMO
Control Auto Configurable Data Network for MObiles
43
multimedialità in rete. La principale caratteristica è la capacità di gestire la codifica
di singoli oggetti: audio, video, sottotitoli sono considerati indipendenti. lo
standard supporta anche caratteristiche specificate da terze parti come una
particolare gestione dei Digital Rights Management o una gestioneinterattiva dei
contenuti. A livello qualitativo lo standard non offre miglioramenti evidenti come
nel passaggio da MPEG‐1 a MPEG‐2, ma a livello di bitrate il risparmio è
significativo. Per la codifica video è stabilito lo standard H .264.
MPEG‐7 Un sistema formale per descrivere i contenuti multimediali
MPEG‐21 Gruppo nato per sviluppare una piattaforma comune per le future
applicazioni multimediali
Quello che ci interessa maggiormente è l'MPEG‐4 in quanto è lo standard che
attualmente si è affermato in quasi tutti i campi della codifica video digitale. Nonostante
le sue specifiche siano ormai "vecchie", si sono diffusi sul mercato prodotti hardware e
software che implementano questo standard. Nel corso degli anni sono state aggiunte ed
elaborate delle altre parti ed alcune di queste sono tutt'ora in evoluzione.
lo standard di codifica MPEG utilizza le seguenti tecniche di compressione:
• Motion compensation con block matching su blocchi 8×8 o 16×16 in modo da
eliminare la ridondanza temporale
• DCT e zonal masking per eliminare la ridondanza spaziale Il compressore MPEG
prende delle decisioni, cioè non tratta tutti i blocchi allo stesso modo:
o Se un blocco non si è mosso, non viene inviato niente, e ci si riferisce
all’immagine precedente;
o Se un blocco si è mosso con un vettore ben definito, allora si applica la
motion compensation;
o Se un blocco si è mosso, ma il vettore non è ben definito allora il blocco
viene codificato solo intraframe.
CADMO
Control Auto Configurable Data Network for MObiles
44
Lo standard MPEG‐1 non prevede la struttura interallacciata e invia 3 matrici: 1 di
luminanza e 2 di crominanza sottocampionate di un fattore 2 sia verticalmente che
orizzontalmente (4:2:2).
Un filmato MPEG‐1 è un insieme i tanti GOP (group of pictures) e il codec lavora GOP a
GOP: in questo modo viene introdotto un ritardo iniziale dovuto all’elaborazione del
primo GOP; tuttavia nei successivi, mentre uno viene trasmesso, l’altro viene codificato.
L’elaborazione a GOP facilita l’accesso random ai frame: mentre un video che ha come
unità costitutiva il frame, per passare dalla posizione 0 alla N‐esima deve elaborare tutte
le immagini ivi comprese, con la tecnica GOP occorre decodificare solo la prima immagine
del gruppo fino ad arrivare a quella più vicina ad N; a questo punto basterà elaborare
pochi frame (al massimo la lunghezza del GOP) per raggiungere l’immagine voluta. Questa
caratteristica permette anche il fast forward/fast reverse e l’editing all’interno di ciascun
GOP. Il GOP è costituito da frame di 3 tipi:
1. Intra‐picture (I‐picture), immagini codificate solo intra‐frame, con l’utilizzo della
DCT, della zonal masking e della codifica di Huffmann; il fattore di compressione
non è quindi elevatissimo
2. Predicted‐picture (P‐picture), immagini codificate anche interframe (motion
compensation con block matching su blocchi di 8×8 o 16×16 pixel) con predizione
forward o backward da una I‐picture o da un’altra P‐picture; il fattore di
compressione è elevato
3. Bidirectional‐Interpolated‐picture (B‐picture), immagini codificate anche inter‐
frame (motion compensation con block matching su blocchi di 8×8 o 16×16 pixel)
con predizione forward, backward o in modo bi‐interpolato (predetta
CADMO
Control Auto Configurable Data Network for MObiles
45
dall’interpolazione di un immagine precedente e successiva) da parte delle I‐
picture e P‐picture; il fattore di compressione è elevatissimo
N.B. Nelle P‐picture e B‐picture, nel caso in cui nel frame di riferimento non si trova una
buona predizione inter‐frame del blocco, questo viene codificato intra‐frame come una I‐
picture.
Un GOP inizia sempre con una I‐picture e finisce con la I‐picture del GOP successivo.
L’utilizzo delle I‐picture come primo frame del GOP è necessario, oltre che per dare la
possibilità di un accesso random, per evitare la propagazione eccessiva degli errori di
quantizzazione: in questo modo l’errore di quantizzazione si propaga al massimo fino alla
successiva I‐picture. Per comodità si tende a dare una struttura regolare al GOP che viene
mantenuta costante durante tutta la codifica del filmato.
Il GOP viene specificato mediante 2 parametri che sono:
1. La lunghezza del GOP (N)
2. La distanza tra una I‐picture e una P‐picture, o tra una P‐picture e un’altra (M);
identifica quindi il numero di B‐picture tra una I‐picture una P‐picture o una P‐
picture e un’altra (M‐1)
All’interno del GOP non è detto che venga mantenuto l’ordine dei frame, poiché non è
detto che il frame precedente dia la miglior predizione del successivo: l’ordine di codifica
(coding order) può essere diverso dall’ordine di visualizzazione (display order). Esempio
CADMO
Control Auto Configurable Data Network for MObiles
46
Quindi notiamo che, per rendere possibile la codifica con predizione, occorre che sia
l’encoder che il decoder abbiano un buffer dove tenere le immagini già decompresse, ma
che servono come riferimento. Occorre inoltre che, nel display order, le B‐picture
compaiano sempre dopo i propri frame di riferimento, in modo tale che, al momento
della decodifica, questi siano già stati elaborati e si trovino nel buffer.
Lo standard MPEG‐2 si differenzia dal precedente per 2 fattori principali:
1. prevede 3 diverse configurazioni delle matrici di luminanza e crominanza (4:2:2,
4:4:2, 4:4:4)
2. accetta sia video interallacciati che progressivi MPEG‐2 prevede quindi 2
configurazioni di frame:
• Interlaced Frame Picture, in cui i semiquadri pari e dispari vengono
trasmessi fusi insieme, formando un frame;
CADMO
Control Auto Configurable Data Network for MObiles
47
• Interlaced Bottom and Top Field Picture, in cui i semiquadri sono inviati
separatamente.
Quindi nei GOP possono essere presenti:
• I‐frame picture, P‐frame picture, B‐frame picture, per video progressivi
• I‐frame picture, P‐frame picture, B‐frame picture e/o I‐field picture, P‐field picture,
B‐field picture, per video interallacciati.
Esistono quindi 2 tipi di predizione per la compensazione del moto:
• Simple Field Prediction, cioè è possibile predire il field attuale usando come
riferimento uno o più field precedenti. Un top field può essere predetto sia dal
CADMO
Control Auto Configurable Data Network for MObiles
48
precedente top field che dal precedente bottom field; un bottom field può essere
predetto solamente dal top field appartenente alla stessa immagine.
• Simple Frame Prediction, cioè è possibile predire un frame riferendosi a uno o più
frame precedenti
NB. Le field picture possono avere delle predizioni di tipo simple field prediction, mente le
frame picture possono avere predizioni sia di tipo simple field prediction che di tipo
simple frame prediction.
MPEG‐2 è un compressore che permette la scalabilità, cioè la possibilità di variare la
risoluzione del video in base alle richieste dell’utente; prevede tre profili: il più basso
(base layer) contiene le informazioni relative alla risoluzione e alla qualità più bassa; i
livelli successivi (enhancement layer) contengono le informazioni aggiuntive che
permettono di avere una risoluzione e una qualità maggiore. Esistono quindi tre diversi
schemi di codifica scalabile: SNR scalability, spatial scalability, temporal scalabilità adatti
alle diverse che si possono avere in differenti applicazioni.
Lo standard MPEG‐4 risulta molto più flessibile rispetto ai precedenti compressori, in
modo da soddisfare meglio le necessità richieste dai moderni sistemi multimediali. Come
impostazione è molto simile allo standard MPEG‐2, ma differisce da questo in modo
decisivo poiché la sua unità di misura non è più il frame, ma il concetto di oggetto: il
punto centrale dello standard MPEG‐4 è il Video Object picture (VOP), cioè un’entità
omogenea sulla quale viene eseguita la compressione e la codifica (per esempio un VOP
potrebbe essere un uomo, oppure il background immobile di un frame); posso quindi
considerare un frame come un insieme di tanti VOP.
Ciascun VOP è caratterizzato da proprietà caratteristiche, come la forma, la tessitura, il
movimento: quindi possiamo vedere i VOP come elementi autonomi, e quindi
estrapolabili dalla scena in cui compaiono; non considereremo più, quindi, i GOP e i suoi 3
differenti tipi di picture, ma useremo i GOV (Group Of VOP) e i suoi 3 differenti tipi di VOP
(I‐VOP, P‐VOP, B‐VOP).
CADMO
Control Auto Configurable Data Network for MObiles
49
I VOP possono essere creati in vari modi (tramite segmentazione o l’utilizzo di descrizioni
parametriche usate in computer graphics), ma, in sistemi dove l’unica necessità è la
compressione, posso considerare un gruppo di immagini rettangolari come VOP.
Anche MPEG‐4 prevede formati scalabili come MPEG‐2, ma con la differenza che questi
sono applicabili ai singoli VOP: in uno stesso frame posso avere oggetti con differenti
gradi di scalabilità.
7.1 Componenti dell'MPEG‐4
Ecco la lista dei diversi sotto‐standard divisi in Part (parti), quelli evidenziati sono di
maggiore interesse per i nostri scopi:
Part Tipo Descrizione
1 Systems Descrive la sincronizzazione e il multiplexing di video e audio
2 Visual Codec per dati visivi (video, still textures, synthetic images ecc). Uno
dei molti "profili" in Part 2 è l'Advanced Simple Profile (ASP)
3 Audio Codec per la compressione di segnali audio
4 Conformance Descrive le procedure per testare la conformità delle altre part
5 Reference Software Fornisce software per mostrare e chiarire le altre part
6 Delivery Multimedia Interfaccia tra l'applicazione e il trasporto
CADMO
Control Auto Configurable Data Network for MObiles
50
Integration
Framework(DMIF)
7 Optimized Reference
Software
Fornisce esempi di come fare al meglio le implementazioni (è in
relazione con la part 5)
8 Carriage on IP
networks
Specifica un metodo per trasportare il contenuto MPEG‐4 su reti IP
9 Reference Hardware Fornisce disegni hardware per mostrare come implementare le altre
part
10 Advanced Video
Coding (AVC)
Codec per segnali video. E' tecnicamente identico allo standard ITU‐T
H.264
11 Scene description
and Application
engine (BIFS)
Può essere usato per contenuto 3D o sottotitoli
12 ISO Base Media File
Format
Formato file per memorizzare contenuto multimediale
13 Intellectual Property
Management and
Protection (IPMP)
Extension
Gestisce i diritti d'autore
14 MPEG‐4 File Format Il formato file designato come container, che è basato sulla part 12
15 AVC File Format Per la memorizzazione di video AVC (basato sulla part 12)
16 Animation
Framework
eXtension (AFX)
Gestisce le animazioni
17 Timed Text subtitle
format
Gestisce i sottotitoli
L'MPEG è molto usato nello streaming audio/video, di solito si fa riferimento allo standard
MPEG‐4 Parte 2, noto anche come MPEG‐4 Visual (evidenziato in tabella). L'MPEG nel
CADMO
Control Auto Configurable Data Network for MObiles
51
corso degli anni è stato migliorato ed attualmente l’MPEG‐4 riesce a superare i limiti dei
25/30fps delle prime versioni mantenendo un bit rate relativamente basso. Anche lo
standard MPEG‐4 Part 10‐AVC ha caratteristiche che ben si adattano ad applicazioni
richiedono immagini di alta qualità e con larghezza di banda virtualmente limitata.
CADMO
Control Auto Configurable Data Network for MObiles
52
8 STANDARD ITU H.263
Lo standard di codifica H.263 rappresenta ad oggi un diretto discendente della
metodologia di compressione DCT di tipo “motion compensated”, oltretutto prevalente in
diversi standard esistenti quali ad esempio l’H.261, MPEG‐1 e MPEG‐2.
La loro primaria applicazione riguarda la compressione di dati audio e video sia a basso bit
rate per la telefonia mobile sia ad alta qualità per le applicazioni HDTV.
Resta comunque il fatto che l’algoritmo di compressione H.263 è stato introdotto come
elevato standard di compressione non specificatamente incentrato su bit – rate molto
bassi.
I miglioramenti apportati con tale algoritmo, rispetto al precedente H.261, riguardano
essenzialmente lo schema “motion compensated”.
A 64 kbps, il guadagno di performance dell’H.263, rispetto al precedente, è valutato
intorno ai 2 dB in termini di PSNR (Peak Signal to Noise Ratio), ovvero il fattore che
rappresenta la misura della distorsione introdotta comprimendo l'immagine.
Le caratteristiche avanzate dell’algoritmo, la cui implementazione nell’algoritmo di base è
certamente opzionale e basate, oltretutto, su sistemi avanzati di tipo “prediction mode”,
riuscirebbero ad indurre un’ulteriore guadagno sulla qualità della compressione valutabile
pari a circa 1 dB.
Un’ulteriore funzionalità introdotta con l’algoritmo H.263 è il sistema “advanced picture
mode” che utilizza quattro vettori per la stima del moto su un blocco 8 x 8 invece di un
singolo vettore 16 x 16, migliorando sensibilmente la qualità dell’immagine processata.
La risoluzione del dato elaborato è stata oltretutto incrementata rispetto all’algoritmo
H.261 riuscendo a raggiungere una stima del moto con un’accuratezza pari a ½ pixel.
Infine, è stato implementato nell’algoritmo un nuovo tipo di frame chiamato PB‐frame
(bidirectional prediction frame) che consiste in un normale P‐frame e un nuovo frame
predittivo bi‐direzionale.
Tale soluzione dovrebbe essere in grado di accrescere la risoluzione temporale con un
impegno minimo in fase di riproduzione video.
Dalle considerazioni fatte finora, emerge che l’introduzione del codec ITU H.263
renderebbe possibile buoni guadagni in fase di codifica, potendo da un lato ridurre il bit –
CADMO
Control Auto Configurable Data Network for MObiles
53
rate di uscita della codifica e dall’altro aumentare il fattore di qualità delle immagini
compresse a spese di un lieve accrescimento della complessità computazionale.
H.263 può ricevere 5 formati di immagini standardizzati come ingresso:
- sub‐QCIF (88x72)
- QCIF (176x144)
- CIF (352x288)
- 4CIF (704x576)
- 16 CIF (1408x1152)
Per tutti i formati vale il fatto che la componente di luminanza ha risoluzione doppia
rispetto a quelle di crominanza, quindi anche dimensioni doppie.
Vedendo un’immagine come una matrice di pixel di dimensioni dx * dy , la tabella
seguente riassume le caratteristiche dei formati supportati.
Le immagini campionate, quindi, posseggono una maggiore informazione per quanto
riguarda la componente di luminanza, cioè l’informazione in bianco e nero; questo è
dovuto al fatto che tale componente è quella che contiene la maggior parte
dell’informazione, e per questo motivo l’occhio umano non risente di un eventuale
sottocampionamento.
L’immagine intera è strutturata a diversi livelli in unità sempre più elementari per poter
essere trattata dal codificatore in modo ordinato ed efficiente.
Tabella. Elenco dei formati supportati da H.263
Il componente di luminanza dell’immagine è campionato a quelle risoluzione di frame,
mentre le componenti di crominanza, Cb e Cr, sono campionate secondo entrambe le
direzioni orizzontale e verticale.
CADMO
Control Auto Configurable Data Network for MObiles
54
Ogni immagine nella sequenza video di input è divisa in macroblocchi, che consistono a
loro volta di quattro blocchi di luminanza di 8 pixel x 8 linee seguite da un blocco Cb ed un
blocco Cr, ognuno costituito da 8 pixel x 8 linee.
Un gruppo di blocchi (GOB) è definito come un numero intero di macroblocchi riga, un
numero che è dipendente dalla risoluzione dell’immagine.
Per esempio, un GOB consiste di un singolo macroblocco riga alla risoluzione QCIF.
La codifica video mira a fornire una rappresentazione compatta dell’informazione nei
frame video rimuovendo le ridondanze spaziali che esistono dentro i frame stessi ed
anche le ridondanze temporale tra frame successivi.
Come nel caso dell’H.261 standard, l’H.263 standard è basato sull’uso della DCT, ovvero la
trasformata “Discrete Cosine Transform”, per la rimozione delle ridondanze spaziali e
l’uso della stima e compensazione del moto per la rimozione delle ridondanze temporali.
Quando un frame risorsa è codificato con l’utilizzo della DCT, l’encoder si dice che opera
in modalità intracoding e il frame codificato corrispondente viene chiamato I‐picture.
Nel caso in cui viene utilizzata la predizione temporale, l’encoder si dice che opera in
modalità intercoding e il frame corrispondente viene denominato P‐picture.
Un diagramma a blocchi di un tipico encoder è riportato nella figura seguente.
CADMO
Control Auto Configurable Data Network for MObiles
55
8.1 Stima e compensazione del moto
Spesso accade che i frame video contigui nel tempo siano anche simili fra di loro.
In tal senso sarebbe certamente più funzionale rielaborare il frame in esame sulla base
delle informazioni ricevute dal frame immediatamente precedente in modo da snellire il
flusso dati.
Un primo approccio per la realizzazione di tale logica operativa consiste semplicemente in
un’analisi differenziale tra il frame corrente ed il precedente di riferimento.
È ovvio che quando i due frame risultano molto similari tra di loro sarà certamente più
conveniente processare le differenze che il frame originale rendendo così il frame
precedente come uno strumento di stima del frame successivo.
Un approccio certamente più sofisticato per incrementare l’efficienza della codifica
consisterebbe nel lavorare il frame corrente a livello di macro‐blocchi, invece di lavorarlo
nella sua completezza come descritto precedentemente.
CADMO
Control Auto Configurable Data Network for MObiles
56
Il processo descritto prende il nome di “motion compensation” o, più precisamente,
predizione a compensazione di moto ed è basata sul principio che nella maggior parte del
moto complessivo si registrano nei macro‐blocchi moti tendenzialmente di tipo traslatori.
Questo approccio si propone di trovare, per ogni blocco 16 x 16 di luminanza di un macro‐
blocco nel frame corrente, il miglior blocco di matching nel frame precedente.
Per la realizzazione di tale logica, solitamente si provvede a definire una finestra di ricerca
all’interno dell’algoritmo dell’encoder all’interno della quale viene implementata la
funzione di ricerca del miglior blocco di accoppiamento.
Il moto di un blocco 16 x 16 di un macroblocco viene rappresentato attraverso un vettore
di moto che ha due componenti in cui la prima componente indica la disposizione
orizzontale mentre la seconda indica la disposizione verticale.
Per la valutazione delle similitudini possono essere definiti più criteri tra i quali il più
diffuso è il SAD, ovvero Sum of Absolute Differences.
In virtù di tale criterio, la fase di ricerca del migliore accostamento consiste nella
valutazione del SAD per ogni locazione di pixel con dentro la finestra di ricerca specifica.
Questo approccio è denominato full search o anche exhaustive search ed è, solitamente,
dispendiosa dal punto di vista computazionale ma, tuttavia, garantisce una buona resa di
matching.
Un approccio più efficiente da questo punto di vista consiste nel restringere la ricerca a
pochi punti solamente in un’intera area di ricerca, ovvero dove c’è più probabilità di
trovare un buon matching.
Questi punti di ricerca sono definiti attraverso la definizione di vettori di predizione del
moto (prediction motion vectors) il cui calcolo è basato su vettori di moto di macroblocchi
precedentemente codificati.
L’identificazione dei macroblocchi di confronto viene quindi utilizzata per la costruzione
del frame di predizione che viene quindi utilizzato per il confronto con il frame in esame
per la produzione di un frame residuo da codificare.
Nell’algoritmo H.263 di base, la quantizzazione è implementata utilizzando lo stessa
ampiezza di step all’interno di un macroblocco, lavorando sempre con una matrice di
quantizzazione uniforme.
CADMO
Control Auto Configurable Data Network for MObiles
57
Eccetto per il primo coefficiente di un intra blocco che viene codificato utilizzando uno
step di 8, sono ammessi livelli di quantizzazione in un range compreso tra 2 e 62.
L’uso di Annex T in alcuni dei profili H.263 rende possibile utilizzare un range esteso della
DCT ed un’ampiezza di step modificata per la crominanza.
Dalle considerazioni e dalle funzionalità esposte della DCT emerge che, parallelamente ad
una maggiore flessibilità per quanto riguarda l’encoder, si riesce ad incrementare anche la
fedeltà sulla crominanza.
8.2 L’Entropy coding
L’entropy coding è implementata attraverso codici di lunghezza variabile (VLC “Variable
Length Codes) ed è usato per rappresentare efficientemente i vettori stimati di moto ed i
coefficienti quantizzati della DCT.
I vettori di moto sono prima predetti settando i valori dei loro componenti sul valor
medio di quelli vicini già trasmessi.
I vettori di moto di differenza sono i VLC codificati.
Come per i coefficienti quantizzati della DCT, essi vengono prima convertiti in una stringa
monodimensionale per l’entropy encoding attraverso un’operazione di scansione a
zigzag.
La stringa risultante contiene un numero di entrate non nulle e probabilmente molte
entrate nulle.
Questa riorganizzazione colloca per primo il coefficiente DC nella stringa ed i restanti
coefficienti AC sono ordinati dalla bassa verso l’alta frequenza.
Quindi, la stringa può essere rappresentata come un numero di segmenti cuciti insieme,
dove ogni segmento contiene uno o più (o nessuno) zeri seguiti da coefficienti non nulli.
Per codificare efficientemente l’intera stringa, ad ogni segmento è assegnata una parola
chiave, che per i segmenti più frequenti ha un numero minimo di bit, mentre per i
segmenti meno frequenti ha un numero più alto di bit.
La parola chiave è generata in base a tre parametri (LAST, RUN, LEVEL).
Il simbolo RUN è definita come la distanza tra due coefficienti non nulli nella stringa (per
esempio, i numeri di zeri in un segmento).
Il simbolo LEVEL è il valore non nullo immediatamente seguente una sequenza di zeri.
CADMO
Control Auto Configurable Data Network for MObiles
58
Il simbolo LAST, quando impostato a 1, è usato per indicare l’ultimo segmento nella
stringa.
8.3 Controllo della codifica
La funzionalità di controllo della codifica consente lo switching, a livello del macroblocco,
tra le modalità inter e intracoding.
L’H.263 standard non specifica come eseguire il controllo della codifica.
Il criterio usato per decidere la modalità di codifica è spesso il valore SAD per un dato
macroblocco, precedentemente descritto.
Se il macroblocco non cambia significativamente rispetto all’immagine di riferimento,
allora l’encoder può saltare la codifica per quel macroblocco e il decoder ripeterà
semplicemente il macroblocco collocato nell’allocazione spaziale del macroblocco
soggetto nell’immagine di riferimento.
8.4 Il decoder
Un diagramma a blocchi di un decoder tipico è mostrato nella figura seguente.
Nel caso di un macroblocco intracoded, l’encoder esegue solamente la quantizzazione
inversa e le operazioni inverse di trasformazione DCT per ricostruire il macroblocco
originale.
Il macroblocco originale è, allora, usato nel frame ricostruito.
Nel caso di un macroblocco intercoded, il decoder opera esegue la quantizzazione inversa
e le operazioni inverse di trasformazione DCT sulla base dei coefficienti DCT
corrispondenti alla predizione residua.
Il decoder utilizza anche l’informazione nei vettori di moto per trovare il miglior
macroblocco di matching nel frame precedentemente ricostruito.
Quest’ultimo è successivamente aggiunto al residuo per ricostruire il macroblocco
originale.
Una volta ricostruito, il frame completo viene quindi immagazzinato per un suo utilizzo
nella decodifica del frame immediatamente seguente.
CADMO
Control Auto Configurable Data Network for MObiles
59
CADMO
Control Auto Configurable Data Network for MObiles
60
9. STANDARD H.264
La codifica delle informazioni video è oggetto di studio dei gruppi di normalizzazione
ISO/IEC (MPEG, Motion Picture Expert Group) e ITU (VCEG, Video Coding Experts Group),
il cui lavoro portò alla definizione della parte 2 di MPEG‐2 e allo standard ITU‐T H.262 nel
1995. L'ITU sviluppò indipendentemente l'H.263 e due estensioni (pubblicate sotto forma
di annessi) denominate H.263+ e H.263++. Nel frattempo in MPEG si procedeva allo
sviluppo della parte 2 relativa alla codifica video dello standard MPEG‐4, partendo come
base da H.263.
Nel 2001 fu deciso, per evitare divergenze nello sviluppo ed i problemi di sincronizzazione
fra i due organismi di standardizzazione, di stabilire un gruppo congiunto, il JVT (Joint
Video Team) per portare a termine il lavoro di definizione di un unico sistema di codifica
video. Nella riunione MPEG‐4 del marzo 2003 a Pattaya venne approvato il nuovo sistema
di codifica, AVC (Advanced Video Coding), come parte 10 dello standard MPEG‐4 ISO/IEC
14496‐10. In ambito ITU lo standard, inizialmente indicato provvisoriamente come H.26L,
sarà pubblicato come ITU‐T H.264. H.264 e MPEG‐4 part 10 sono quindi tecnicamente
identici.
CADMO
Control Auto Configurable Data Network for MObiles
61
L'H.264 fa parte di un nuova generazione di algoritmi di compressione in via di sviluppo il
cui scopo è quello di ottenere elevata compressione dei dati mantenendo un'alta qualità
delle immagini ed avendo inoltre un bit rate inferiore agli standard precedenti. Lo
standard H.264, noto anche come MPEG‐4 Parte 10/AVC, dove AVC è l'acronimo di
Advanced Video Coding, è lo standard MPEG più recente per la codifica video. È
sicuramente destinato a diventare lo standard video più diffuso in futuro. Un codificatore
che supporta lo standard H.264 è infatti in grado di ridurre le dimensioni dei file video
digitali di oltre l'80% rispetto al formato Motion JPEG e fino al 50% rispetto allo standard
MPEG‐4, senza compromessi in termini di qualità delle immagini. Ciò significa che per la
gestione dei file video sono necessari meno spazio di memorizzazione e larghezza di
banda, ovvero che è possibile ottenere immagini di qualità più elevata a parità di velocità
di trasmissione in bit.
Nel settore della videosorveglianza, è altamente probabile che lo standard di
compressione H.264 venga rapidamente adottato per applicazioni che richiedono
risoluzioni e velocità di trasmissione elevate, ad esempio per la sorveglianza di
autostrade, aeroporti e casinò, dove l'uso di 30/25 fotogrammi (NTSC/PAL) al secondo
rappresenta la norma. Questi ultimi sono infatti gli ambiti in cui la riduzione della
larghezza di banda e dello spazio di memorizzazione necessario può offrire i vantaggi più
significativi.
Lo standard H.264 è destinato probabilmente anche ad accelerare la diffusione delle
telecamere di rete con risoluzione megapixel poiché questa tecnologia di compressione
ultra‐efficiente è in grado di ridurre le dimensioni dei file grandi e la velocità di
trasmissione in bit senza compromettere la qualità delle immagini. Il nuovo standard
presenta tuttavia anche degli svantaggi. Benché offra vantaggi significativi in termini di
larghezza di banda e spazio di memorizzazione, questo standard richiede
l'implementazione di telecamere di rete e stazioni di monitoraggio ad alte prestazioni.
Lo standard AVC, così, come avviene nel caso di MPEG‐1 e MPEG‐2, non definisce un
CODEC, bensì la sintassi del flusso dati (stream syntax) e il metodo di decodificarlo.
CADMO
Control Auto Configurable Data Network for MObiles
62
I tool, cioè gli algoritmi, adottati sono sostanzialmente quelli conosciuti in letteratura : la
maggiore efficienza di codifica è dovuta alla cura dei dettagli di ciascun elemento
funzionale. La tabella illustra le differenze, a livello di algoritmi usati, tra i vari standard,
tra cui MPEG‐4 ASP e MPEG‐4 AVC (sono due standard diversi, uno rispetta le specifiche
della part‐2, più datate, l'altro le specifiche della part‐10, più recenti). Lo standard
supporta la codifica del video nel formato 4:2:0, interlacciato o progressivo.
In MPEG‐4 H.264/AVC sono previsti differenti profili, indirizzati ad applicazioni differenti:
‐ Baseline Profile (BP): destinato ad applicazioni in cui si richieda un ridotto ritardo
dovuto alla codifica/decodifica, ad esempio videotelefonia.
‐ Main Profile (MP): per applicazioni diffusive o generiche, anche con video
interlacciato.
‐ Extended Profile (XP): per applicazioni mobili e streaming.
CADMO
Control Auto Configurable Data Network for MObiles
63
‐ High Profile (HiP): per applicazioni broadcasting e di disc storage, in particolare per
le applicazioni televisive HD (è il profilo adottato in HD‐DVD e Blu‐ray).
‐ High 10 Profile (Hi10P): andando oltre le capacità dei prodotti consumer di oggi,
questo profilo è superiore all'High Profile, aggiungendo il supporto fino a 10 bit
per campione di precisione dell'immagine decodificata.
‐ High 4:2:2 Profile (Hi422P): principalmente orientato alle applicazioni professionali
che usano video interlacciato, si pone al di sopra dello standard Hi10P,
aggiungendo il supporto per il formato di campionamento colori 4:2:2 oltre ai 10
bit già citati per Hi10P.
Per ciascun elemento funzionale i miglioramenti apportati in AVC, rispetto ad MPEG‐2,
possono essere sintetizzati in:
• applicazione della trasformata su blocchi più piccoli
• miglioramenti relativi alla valutazione e alla compensazione del movimento
• filtro di ricostruzione nel loop di decodifica per ridurre l'effetto di
blocchettizzazione
• miglioramento della codifica entropica.
I miglioramenti di H‐264 rispetto all’MPEG2 sono riportati nella seguente tabella:
CADMO
Control Auto Configurable Data Network for MObiles
64
Sono definiti diversi livelli in AVC (che si trovano per esempio nei parametri di
settaggio):
Schema dei livelli per H.264/AVC
CADMO
Control Auto Configurable Data Network for MObiles
65
Compariamo infine le prestazioni dell’ H.264 con le prestazioni dell’ H.263+, MPEG4 e
MPEG2.
Come si può vedere le performance del formato H‐264 sono eccellenti. A parità di qualità,
si ottiene un risparmio di bistream di quasi il 40% rispetto all' MPEG4 e di oltre il 60%
rispetto all'MPEG2.
CADMO
Control Auto Configurable Data Network for MObiles
66
H.264 si pone quindi come il futuro della compressione video sia per applicazioni di
broadcasting e storage (DVD del futuro e TV digitali del futuro su linee xDSL), sia per
applicazioni di comunicazione real time a banda media (video conferenza), stretta (web
conferencing) e ultra‐stretta (cellulari 2.5G e 3G).
Attualmente i vari vendor stanno mettendo a punto i propri codec per le varie
applicazioni. Il compito non è semplice perchè la fase di compressione di uno stream
H.264 può richiedere risorse superiori del 300% rispetto ad un codec MPEG4 SP.
CADMO
Control Auto Configurable Data Network for MObiles
67
10. ANALISI DEI CODEC
Cercheremo ora di valutare nella pratica il comportamento dei più recenti codec di
compressione video sia lossless che lossy. La scelta dei codec è stata determinata da
diversi fattori, tra i quali: popolarità, efficienza già comprovata (escludendo quindi quei
codec le cui performance sono molto al di sotto della media) e disponibilità (free, trial
versions, ecc.). Si valuteranno i risultati di test effettuati a differenti bitrate e su differenti
video, cercando di ottenere risultati scientificamente validi, basati su criteri affidabili. Nel
confronto dei codec lossless, non essendoci variazioni di qualità visiva, verranno premiati:
• Velocità
• rapporto di compressione
• versatilità
Nei codec lossy invece verranno premiati:
• velocità
• compressione
• qualità visiva
• versatilità
10.1 Codec Lossless analizzati:
Alpary v2.0 build 957.040607 (12/04/2005)
Creato dalla società Alparysoft, supporta compressione lossless in RGB, YUY2 e YV12. Non
supporta il codec instance.
AVIzlib v2.2.3
E' un codec lossless per Video For Windows. E' indicato dagli autori come l'ideale per
animazione digitale o l'animazione in 3DCGs. Contiene due tipi di codec a seconda
dell'uso. Può essere usato come input solo un segnale RGB. Comunque il codec permette
di convertirlo in YUV (i.e. YUV2 o YV12) senza perdita visibile all'occhio umano.
CamStudio Lossless codec 1.0 (13/03/2003)
Codec molto veloce ottimizzato per le applicazioni di screen capture.
CADMO
Control Auto Configurable Data Network for MObiles
68
‐ Opera in RGB ed è in grado di comprimere a 16,24 o 32‐bit RGB bitmaps.
‐ Supporta la compressione temporale
‐ Può comprimere utilizzando 2 algoritmi diversi di compressione: LZO o GZIP. LZO è
molto veloce ed è usato per lo screen capturing. GZIP è molto utile quando si
converte/ricomprime un file AVI già compresso con CamStudio. Il piccolo file size
prodotto con l'algoritmo GZIP lo rende ideale per scopi di archivio.
CorePNG v0.8.2
Essenzialmente, ogni frame è compresso come un'immagine PNG quindi ciò che fa il PNG
lo fa anche questo codec. Ha inoltre l'abilità di scrivere P‐frames e di auto‐decidere
quando farlo. Il Pframe prende la differenza tra il frame precedente e il frame corrente e
la codifica come un PNG. CorePNG è stato inizialmente sviluppato per l'uso con i
sottotitoli, comprime i cartoni animati e le animazioni in CG molto bene e in molti casi
meglio di HuffYUV e Loco.
FFV1, fddshow (29/11/2005)
fddshow è un codec DirectShow e VFW per codificare/decodificare molti formati audio e
video, inclusi filmati DivX e XviD, usando libavcodec, xvid e altre librerie opensource, con
un ricco set di filtri postprocessing. FFV1 è un codec lossless semplice ma efficacie incluso
nel software.
HuffYUV 2.1.1 (18/05/2004)
Scritto da Ben Rudiak‐Gould (università di Berkeley, California), HuffYUV è un codec
lossless per WIN32 molto veloce. L'output del decompressor è identico bit a bit con
l'input originale. E' ritenuto da tutti come uno dei migliori e per questo si propone di
rimpiazzare il formato video di cattura uncompressed YUV. E' abbastanza veloce da
comprimere in real‐time a piena risoluzione un video CCIR 601 (720 x 480 x 30fps) su un
misero Celeron a 416Mhz. Supporta anche la compressione lossless di dati RGB, quindi è
molto versatile ed in più è free software.
Lagarith v1.3.8 (12/03/2006)
Si tratta di un codec opensource scritto da Ben Greenwood. E' stato disegnato con pochi
ma chiari obiettivi in testa:
‐ Velocità: lo stesso creatore riconosce che non è veloce come il codec Huffyuv, ma
la velocità di encoding è comparabile a quella di molti altri codec lossless, anche se
CADMO
Control Auto Configurable Data Network for MObiles
69
la velocità di decoding potrebbe essere inferiore. Supporta il parallelizing nei
sistemi multi‐processore.
‐ Supporto color‐space: le conversioni color‐space possono causare errori di
arrotondamento, introducendo perdita di dati, contrariamente all'ideale di una
compressione lossless. Lagarith cerca di evitare questo problema supportando
direttamente i colorspace YV12, YUY2, RGB e RGBA
‐ keyframes: non permettere l'inter‐prediction significa che ogni frame è codificato
separatamente. Ciò rende il cutting, il joining e il seeking più veloci.
Queste tre cose, unite al fatto che è più potente di Huffyuv, rendono Lagarith un
codec utile per lo stadio di editing video.
LZOcodec v0.3 (01/05/2006)
Può essere usato come capture codec ma l'uso principale potrebbe essere quello di
comprimere video generati dal computer o film di animazione. Può convertire per
esempio un file SWF (Flash) o un Power Point in un file AVI.
MindVid 1.0 Beta 1 (06/06/2006)
Semplicità e facile utilizzazione è ciò che è alla base di questo codec. Le recensioni
indicano che raggiunge alti livelli di compressione usando lo stesso tempo di coding e
decoding.
MSU lossless video codec v0.6 (25/09/2005)
Sicuramente uno dei migliori, sviluppato direttamente dal team di Compression Project,
gruppo di ricerca autorevole nel campo della compressione video. Vanta di essere
assolutamente lossless, evvero uguale bit a bit al file sorgente. E accetta in input RGB,
YUY2 e YV12 e restituisce l'output nello stesso formato, seppur permettendo la
conversione tra un formato e l'altro. Ha inoltre una funzionalità chiamata "denoising" che
dovrebbe aumentare addirittura la qualità dell'immagine sorgente e
contemporaneamente il livello di compressione.
PICVideo Lossless JPEG codec v3 (25/02/2003)
Ottimizzato da Pegasus Imaging Corporation, è sia un codec Video for Windows che un
filtro di trasformazione DirectShow. Disegnato per l'editing professionale e per
applicazioni di video mediche, comprime RGB a 24‐bit usando Predictor 1 lossless JPEG.
CADMO
Control Auto Configurable Data Network for MObiles
70
10.2 Codec Lossy analizzati
Suddividiamo tali codec in
a) MPEG‐4 AVC: codec conforme alle specifiche MPEG‐4 part 10
b) MPEG‐4 ASP: codec conforme alle specifiche MPEG‐4 part 2
c) non‐MPEG‐4: codec non conforme alle specifiche MPEG‐4
10.2.1 MPEG‐4 AVC
Mainconcept H.264/AVC v2 / Elecard
E' un programma stand alone molto completo. Il codec è sviluppato da una collaborazione
tra Elecard e Mainconcept e deve essere usato all'interno dell'applicazione apposita.
Mainconcept è stata leader nei codec MPEG‐2 e rappresenta sicuramente un punto di
riferimento nel mercato professionale. Supporta 1pass (CBR/VBR/fixed Quants), P‐Frame
Reorder, CABAC, Loop, Multiple B‐Vops, Multiple Ref, 4x4 P‐Frame Sizes, PAR, RDO
Mpegable
Sviluppato dalla DIGAS, è stato utilizzato attraverso il software X4Live. supporta 1pass
(fixed quants) uses P‐Frames only, 8x8 P‐Frame Blocksizes, CAVLC only, Loop. Non
consente la modalità 2‐pass
Nero AVC
Co‐sviluppato da Nero AG e Ateme, include un encoder e un decoder. L'encoding va fatto
tramite il software apposito. Supporta 2pass, CABAC, (adaptive) Loop, multiple B‐Frames,
mulitple Reference Frames, weighted prediction, 8x8 P‐Frame Blocksizes, 16x16 B‐Frame
Blocksizes, Adaptive Quant.
Quicktime 7.1
Il celebre pacchetto Apple per l'audio/video. Leader nella creazione di multimedia nel
mondo Macintosh, è disponibile anche per piattaforma Windows. Supporta 2pass, max 1
B‐frame, Loop (0,0), P8x8,B8x8,I4x4, Adapt. Quant, 5 Slices, no CABAC, no Weighted
Pred., no multi Ref.
Sorenson AVC Pro
Utilizzato attraverso il software Sqeeze 4.3.
CADMO
Control Auto Configurable Data Network for MObiles
71
Vss H.264 v2.3
Sviluppato dalla Vsofts, è utilizzabile in VirtualDub.
x264 v352 (12/06/2006)
Si tratta del video codec opensource, che dopo mesi di gavetta arriva finalmente a
produrre delle versioni sempre più stabili, sebbene ancora nuove versioni vengano
rilasciate con cadenza quasi settimanale. Il nuovo codec rappresenta una validissima
alternativa ad i codec attuali sia per prestazioni che per qualità, ed è sicuramente una
delle più importanti promesse che appare oggi sullo scenario del digitale. E' l'unica
implementazione opensource e free‐software dello standard H.264/AVC. Supporta 2‐
pass, CABAC, Loop, multiple B‐Frames, B‐References, multiple Reference Frames, 4x4 P‐
Frame, 8x8 B‐Frame Blocksizes, segnale anamorfico e High Profile: 8x8 dct e intra
prediction, matrici di quantizzazione lossless e custom.
10.2.2 MPEG‐4 ASP
3ivx 4.5.1
Nella sua semplicità (manca compressione con B‐frames, rate distortion, ecc..)
rappresenta un po' i codec del passato, per intendersi Divx 3, 4, le prime versioni di XviD o
al massimo le prime versioni del codec DivX 5. Impostazioni: default + MPEG Quantizer
(ASP) + Adaptive Quantization.
DivX v6.2.5 (15/06/2006)
E' sicuramente il codec più popolare ma forse non è il più performante. E' stato
sottoposto a molti test dalle comunità di sviluppo del video digitale e le sue prestazioni
sono risultate abbastanza deludenti rispetto agli avversari. Però è facile da usare e per
ragioni storiche e commerciali è sicuramente il più compatibile, e questo è un punto
molto grosso a suo favore. Non è un codec H.264. Impostazioni: default + Quantization:
H.263 optimized.
Fdd_H.264 (ovvero l'H.264 di libavcodec)
Compare nella lista dei codec disponibili quando si installano le librerie libavcodec.
Libavcodec fa parte del pacchetto ffdshow, che contiene tutti i codificatori e
decodificatori audio/video di Ffmpeg (DirectShow e VFW). FFmpeg è una collezione di
free‐software che raccoglie al suo interno molti dei progetti opensource legati alla
CADMO
Control Auto Configurable Data Network for MObiles
72
codifica audio/video. Il progetto è partito da Gerard Lantau, un alter‐ego di Fabrice
Bellard ma è attualmente gestito da Michael Niedermayer. Molti sviluppatori di Ffmpeg
fanno parte di altri progetti quali Mplayer, xine e VideoLan. Output: RGB24. Non
permette la modalità 2‐pass.
HDX4 1.5.4.419 (19/04/2006)
E' stato ufficialmente rilasciato nel 2005 da Jomigo Visual Technology GmbH, Germany.
Sul sito ufficiale si presenta come il codec H.264 più veloce sul mercato e i primi test
effettuati effettivamente confermano questa ipotesi.
XviD v1.1.0 (30/12/2005)
Il codec più popolare nel mondo opensource. L'installazione fornisce numerosi tools per
l'analisi, la gestione e il debugging del codec. Ho usato la build compilata per windows 32‐
bit da Koepi, che è una delle migliori. Si attende con ansia il rilascio della versione AVC,
che è ancora in versione beta ma non è disponibile al pubblico.
10.2.3 non‐MPEG‐4
FLV1 (libavcodec)
Un altro dei codec video di libavcodec. Non si sa molto sulla sua provenienza ma è
abbastanza performante.
Indeo 5.11
Originariamente sviluppato da Intel e poi passato nelle mani della società Ligos, è stato
usato per molti anni per la codifica lossy . E' stato scelto perchè rappresenta uno dei
codec più usati della vecchia generazione. Non permette la modalità 2‐pass.
Mianconcept MPEG‐2 v1.5 (2005)
L'implementazione MPEG‐2 di Mainconcept è universalmente riconosciuta come la
migliore sul mercato, pertanto è stata utilizzata come referenza per il confronto con il
"vecchio" codec MPEG‐2.
RealVideo 10
E' il celebre codec maggiormente usato negli ultimi anni per lo streaming su Internet e
infatti viene utilizzato con un software prettamente orientato al broadcasting e allo
streaming.
CADMO
Control Auto Configurable Data Network for MObiles
73
Theora 1.0 alpha6 (30/05/2006)
Si tratta di un altro interessante codec non‐MPEG‐4 freeware facente parte di ffdshow.
Sviluppato dalla fondazione Xiph.org come parte del loro progetto Ogg (un progetto che
mira ad integrare il codec video VP3, il codec audio Vorbis e il container Ogg per
competere con MPEG‐4). Theora è derivato direttamente dal codec VP3 di On2 (società
che poi ha continuato il suo sviluppo fino ad ottenere l'attuale VP7)
VP7
True Motion VP7 (VP70) è sviluppato da On2 Technologies come successore dei codec
VP3, VP5 e TrueMotion VP6. Ha il supporto sia VFW che DirectShow e sembra abbia la
migliore compressione nella famiglia di codec MPEG‐4 e H.264.
Windows Media Video 9 (Wmv9)
Windows Media Video è il nome generico per una serie di tecnologie proprietarie
sviluppate da Microsoft per lo streaming di file video. Fa parte della piattaforma Windows
Media. A partire dalla versione 7 (WMV1), Microsoft ha usato una sua versione
modificata dello standard MPEG‐4. Lo stream video è spesso abbinato a quello audio di
Windows Media Audio. Microsoft ha sottoposto alla Society of Motion Picture and
Television Engineers (SMPTE) lo standard VC‐1 per l'approvazione come standard
internazionale e poco tempo fa è stato approvato, diventando quindi ufficialmente il
maggior rivale di MPEG‐4. Windows Media Video 9 è una implementazione di questo
standard. Questo codec è usato anche per la diffusione della televisione ad alta
definizione su DVD in un formato che Microsoft commercializza col marchio WMV HD.
Questo formato può essere riprodotto anche su computer o lettori DVD compatibili.
CADMO
Control Auto Configurable Data Network for MObiles
74
Prezzi e containers dei codec
CADMO
Control Auto Configurable Data Network for MObiles
75
11 VALUTAZIONE
11.1 Codec Lossless
I risultati ottenuti (per frame/s, risoluzione, tipo di filmato, ...) sono risultati quasi del
tutto identici. Utilizzando il principio di induzione si potrebbe quindi pensare che i risultati
siano simili per qualsiasi video venga compresso. Diamo una valutazione per ogni codec:
• Alpary: E' risultato il codec più veloce e comprime piuttosto efficacemente in tutti
gli spazi colore. Una buona scelta per la compressione real‐time.
• Avizlib: E' il fanalino di coda per quanto riguarda la compressione. Restituisce un
file dalle dimensioni quasi identiche a quello del video non compresso e funziona
solo con RGB. Praticamente inutile.
• Camvideo: Come Avizlib, funziona solo in RGB e produce un file poco compresso.
Però ha il vantaggio di poter scegliere tra due tipi di compressione diversi e se si
utilizza l'algoritmo lzo si può fare sufficientemente bene acquisizioni in real‐time.
• CorePNG: E' un codec dalle prestazioni mediocri, ma si ha la sicurezza che funzioni
dappertutto.
• Ffv1: La scelta migliore per la compressione nello spazio YV12 in quanto è veloce
ed efficace senza necessità di nessun settaggio. Si installa col pacchetto fddshow
quindi è facile da utilizzare. Il fatto che funzioni solo in YV12 riflette una certa
tendenza dell'opensource di creare solo cose “intelligenti” e utili (come abbiamo
visto i vantaggi di comprimere in YV12 sono molti). Peccato però che in molti
ambiti professionali si utilizzi solo RGB o YUY2,quindi escludendoli si “autolimita”
l'utilizzo e la diffusione.
• Huffyuv: Lo standard de facto nel mondo dei codec lossless ma dai test non è
risultato il migliore in assoluto e inoltre ha il grosso difetto di non comprimere in
YV12, che lo penalizza parecchio. Comunque è un buon codec.
• Lagarith: Se si pensa che questo codec è stato creato da un matematico per usi
personali, la cosa sembra incredibile. Nei test è risultato senz'altro il miglior codec
lossless disponibile: veloce, efficace e molto versatile (funziona in tutti gli spazi
colore con ottime prestazioni).
CADMO
Control Auto Configurable Data Network for MObiles
76
• Lzo: Funziona solo in YV12. Anche questo codec, come Camvideo, ha la facoltà di
utilizzare 2 algoritmi diversi per la compressione: gzip o lzo. Gzip è meglio non
considerarlo nemmeno. Lzo invece è molto veloce ma non è efficace come Ffv1.
• Mindvid: E' ancora in versione beta ma già, se non si registra il prodotto, inserisce
una frase di disturbo nel video. E' un codec dalle prestazioni mediocri che funziona
solo in RGB.
• MSU lossless: Veniva annunciato come il miglior codec lossless nei risultati dei test
di confronto fatti dallo stesso team scientifico russo che l'ha sviluppato. In effetti
MSU è il codec che riesce a comprimere con un'efficienza migliore di tutti gli altri
in tutti gli spazi colore e questo conferma quanto pubblicato sul sito. Però le loro
analisi non prendevano in considerazione il fattore velocità, che infatti risulta un
grosso tallone d'Achille di questo codec (è lentissimo). Se il tempo non è un
problema e si ha una macchina potente, è la scelta obbligata.
• Picvideo: E' molto veloce ma comprime poco e funziona solo in RGB. Nel
complesso: scarso
E' difficile determinare quale sia in assoluto il codec più veloce o quello con migliore
compressione, perché come abbiamo visto non tutti i codec supportano tutti gli spazi
colore. Dividendo in categorie e facendo una media tra miglior velocità, miglior
compressione e miglior bilanciamento il codec lossless migliore risulta essere il Lagarith.
11.2 Codec Lossy
E' difficile trarre delle conclusioni assolute in quanto i codec hanno caratteristiche diverse
tra di loro e le loro prestazioni variano a seconda del video e della risoluzione. Una cosa
abbastanza certa è che se un codec ha delle buone prestazioni per un certo bitrate, ce le
avrà anche per tutti i bitrate; se invece va male andrà male in tutti i bitrate. Da ciò si
deduce che per testare i codec sarebbe più opportuno fare molti test su molti video
diversi tra loro ma a pochi bitrate precisi. Nel trarre le valutazioni ci baseremo sui risultati,
sicuramente autorevoli, di alcune comunità scientifiche riconosciute a livello mondiale.
Una di queste è il CS MSU Graphics&Media Lab Video Group, che ha effettuato dei test su
alcuni dei codec che si sono presi in analisi (con più di 3000 grafici e numerosissimi test su
tutti i bitrate).
CADMO
Control Auto Configurable Data Network for MObiles
77
Sebbene i codec VFW (Video For Windows) siano ancorati ad AVI e non sfruttino le
potenzialità dei nuovi container, sono ancora quelli che garantiscono maggior
compatibilità. A parte i software di misurazione oggettiva, che in teoria, senza
frameserving, accetterebbero solo AVI in input, c'è tutta una serie di applicazioni per
l'editing e la visione degli AVI che è sicuramente più vasta e intercompatibile rispetto ad
mp4.
In definitiva, tra i codec AVC più versatili c'è sicuramente x.264: permette il settaggio
manuale di molti parametri, può scegliere vari formati di output ed essendo ancora in via
di sviluppo potrà solo migliorare le sue funzionalità. Il più maneggevole e facile da usare è
sicuramente Nero Digital, che fornisce un'ottima piattaforma click'n go, stand‐alone e
senza bisogno di nessuna configurazione o conoscenza particolare. I codec più veloci sono
DivX e HDX4 ma tra i due è preferibile il primo perché alla stessa velocità si ottiene
maggior qualità dell'immagine.
I codec con migliore qualità visiva mi sono sembrati x.264 e VP7 ma qui l'incertezza è
molta considerato che la qualità varia a seconda del filmato. Molti addetti ai lavori sono
comunque d'accordo e ritengono questi due codec tra i migliori.
x.264 è un codec H.264/AVC di ultimissima generazione, è gratuito e opensource e questo
è un grosso punto a suo favore. VP7 non è AVC ma si è rivelato un'alternativa molto
valida all'MPEG‐4 ed è gratuito.
Quicktime 7 è il codec di Mac OSX, dell'I‐pod, di tutto ciò che circonda il mondo Apple.
Molti utenti Macintosh conoscono solo questo codec e si trovano comunque bene.
Sicuramente non è male, ma la pecca di Quicktime è la lentezza.
Il codec Microsoft Wmv9 ha prestazioni velocistiche scandalose. Visivamente il codec di
casa Redmond è molto valido alle basse risoluzioni, ma ciò non ne giustifica l'utilizzo se
paragonato ad alternative gratuite e più performanti. Real Video 10 è una di queste, con
un ottimo livello qualitativo dell'immagine ma poiché utilizza container e standard
proprietari ne limita la diffusione tra la massa.
Sorenson AVC Pro è un codec AVC senza grandi pretese ma con un software di utilizzo
intuitivo e funzionale. Il costo della licenza non corrisponde alle prestazioni reali: è lento
e tende a “spalmare” l'immagine eliminando molti dettagli.
CADMO
Control Auto Configurable Data Network for MObiles
78
VSS sta un po' nel mezzo, è sicuramente un buon codec AVC ma considerando che non è
gratuito forse è meglio preferire altri.
3ivx è un po' vecchio ma dice ancora la sua se comparato con i nuovi codec.
I codec di ffdshow Flv1 e ffd_H.264 sono indubbiamente validi ma hanno poca, come dire,
“personalità”.
Theora è interessante ma non da molta sicurezza per il futuro, come compare nel
messaggio bene in vista sull'interfaccia “Usare solo per scopi sperimentali, il codec
potrebbe diventare incompatibile in futuro”.
La battaglia tra DivX e Xvid si chiude in un sostanziale pareggio. I due codec si
comportano in modo simile ed è inutile insistere sul confronto tra questi due. DivX 6.5
sembra apportare dei miglioramenti significativi rispetto alle versioni passate, ed è
comunque ancora un buon punto di riferimento per i codec non‐AVC.
XviD, prima dell'avvento del recentissimo x264, era il miglior codec video opensource
disponibile. E' molto simile a DivX nelle prestazioni, quindi in generale buono, ma
visivamente non all'altezza dei codec H.264. Possiamo concludere che tra DivX e XviD è
sicuramente preferibile il secondo, considerato che è gratuito e opensource, mentre la
licenza di DivX è a pagamento.
Tenendo conto di tutto, il miglior codec lossy è, secondo noi, l’ x.264.