Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduzione
Fin dagli albori dell'informatica e dell'elettronica digitale si è sentita l'esigenza di comprimere lo spazio occupato dalle
informazioni manipolate. In molte applicazioni infatti, la mole di dati è tale da rendere inpraticabile la manipolazione ai
fini dell'archiviazione, dell'elaborazione e della trasmissione.
Questa esigenza è molto forte soprattutto nei segnali multimediali audio-video che, non compressi, richiedono quantità
di memoria enormi e ampiezze di banda improponibili per la trasmissione. Per fortuna esistono tutta una serie di
circostanze che permettono una compressione efficace di immagini, suoni e filmati. Adottando approprieti algoritmi si
riesce infatti ad individuare e scartare le informazioni ridondanti ottenendo fattori di compressione anche molto spinti.
In questo articolo analizzeremo nel dettaglio le basi della compressione dei segnali video partendo dal primo standard
significativo (H.261) per arrivare al più recente stato dell'arte rappresentato dall' MPEG-4 Advanced Video Codec (alias
H.264).
Se il problema della compressione delle immagini si stava risolvendo con la definizione dello standard JPEG per la
compressione digitale dei flussi video ancora nel 1990 non si era trovata una soluzione soddisfacente. Ed il problema
non era certamente da poco.
Pensate infatti che un filmato full-pal è costituito da 25 fotogrammi al secondo ampi 704x576 pixel. In formato RGB a
24bit ciò significa 30Mbyte/s di flusso dati. Anche utilizzando una tecnica di sottocampionamento delle componenti
cromatiche, come una 4:2:2 o una 4:2:0, il flusso si mantiene ancora intorno ai 15-20 Mbyte/s, un valore enorme, non
praticabile neanche per l’archiviazione digitale dei flussi video che richiederebbe qualcosa come 72GB all’ora.
Essendo un flusso video composto da una successione di singoli fotogrammi, la cosa più naturale da fare in prima
istanza è comprimere singolarmente i singoli fotogrammi. Utilizzando ad esempio il JPEG si ottiene il noto formato
MotionJPEG, spesso utilizzato in schede di montaggio video ed acquisitori. Lo stesso principio di funzionamento dell’
M-JPEG si può ritenere alla base del formato DV tipico delle videocamere digitali (vedi appendice I).
Un tale approccio può portare ad una compressione di un fattore 5-10 con pochissima perdita di informazione
percepibile dall’occhio umano, in modo da ridurre la banda del flusso dagli originari 30MByte/s a circa 3MByte/s. Questi
valori sono chiaramente ancora eccessivi per ambiti quali l’archiviazione su supporti ottici e del tutto impossibili da
sostenere per effettuare video comunicazione uno a uno (video conferenza) o uno a molti (trasmissioni broadcast).
Anche riducendo la risoluzione a 352x288 (CIF) o 176x144(QCIF) per fare video conferenza, si avrebbe comunque un
consumo rispettivamente di 750Kbyte/s e 200Kbytes/s, valori ancora troppo elevati per comunicare su reti telefoniche o
su reti IP pubbliche.
Il video digitale viene ai nostri giorni adottato da una ampio ventaglio di applicazioni che vanno dalla video telefonia
(mobile e fissa), alla video conferenza, alla TV digitale terrestre o satellitare, al DVD, al video su PC e addirittura sul
cellulare.
L’adozione del video digitale in tanti ambiti è stata certamente spinta dallo sviluppo di sempre più efficaci standard di
codifica video. Questi standard forniscono le prestazioni necessarie per la trasmissione su specifici canali nonché la
possibilità di interoperare senza l’assillo della compatibilità.
L’ITU-T, International Telecommunication Union è una delle due organizzazioni in gradi di sviluppare ed approvare
standard di codifica video digitale. L’altro organismo è l’ISO/IEC JTC1.
Gli standard emanati dall’ITU sono spesso chiamati raccomandazioni e sono denotate dalla sigla H.26x
(H.261,H.262,H.263,H.264), mentre gli standard ISO/IEC vengono denotati con la sigla MPEG-x (MPEG-1,MPEG-
2,MPEG-4,etc…).
http://www.lithium.it/stampa_art.asp?code=59 25/07/2007
Le raccomandazioni ITU hanno un carattere più generale e nella maggior parte dei casi sono orientate alle applicazioni
real-time di comunicazione come la video conferenza. Gli standard H.26x si occupa esclusivamente della codifica
video, i G.7xx dell’audio e l’H.3xx della sincronizzazione audio-video. Gli standard MPEG vengono definiti invece per
necessità più ampie come lo storage (video CD prima, DVD successivamente), broadcast (cable, DSL, Satellite e
digitale terrestre) e per lo streaming multimediale (mpeg4).
Le due organizzazioni hanno lavorato per lo più separatamente eccetto per l’H.262 alias MPEG2 e più recentemente
per la messa a punto dell’H.264 noto anche come MPEG4 part 10 o MPEG4 AVC (Advanced Video Codec).
Nell’articolo ci concentreremo sulle raccomandazioni ITU-T che rappresentano le tecnologie di base per la
compressione video utilizzate anche, con opportune modifiche dagli standard MPEG. Gli MPEG involvono molte altre
considerazioni per gli specifici ambiti di utilizzo, oltre ad inglobare appropriate tecniche di compressione audio di cui
abbiamo già parlato in altri articoli.
H.261
H.261 fu specificatamente sviluppato per applicazioni di video comunicazione real-time (video conferenza). Lo sviluppo
iniziò da parte del CCITT nel 1988-1990 in seguito agli studi che portarono poi alla definizione del JPEG.
La tecnologia è pensata per la video conferenza su linee telefoniche ISDN e come tali si pone obiettivi di banda multipli
di 64Kbit (p x 64bit)
La tecnologia H.261 si basa su due tipi di compressione del flusso video: la compressione Intra-Frame (I) e la
compressione Inter-Frame (P), queste due tecniche vengono applicate a frame già compressi 1:2 grazie ad una sotto
quantizzazione delle componenti cromatiche di tipo YUV 4:2:0 (vedi articolo sul JPEG). Le risoluzioni ammesse sono 3:
CIF (352x288), QCIF (176x144) e 4CIF(704x576). Il numero di fotogrammi al secondo è tipicamente 25 (nel formato
NTSC le risoluzioni diventano 352x240 – 176x120 e 704 x 480, tutte a 30 Hz) ma può essere inferiore.
La tecnica Intra-frame è del tutto analoga al JPEG ed è sostanzialmente una tecnica psico-visiva di riduzione della
ridondanza spaziale, si eliminano cioè le informazioni non visibili o meno importanti per l’occhio umano che in genere
sono quelle a più alta frequenza spaziale.
In una sequenza video c’è però anche molta ridondanza di informazione “temporale” dovuta al fatto che gli elementi
visivi si trovano ripetuti (in quiete e/o in movimento) su fotogrammi successivi. E’ quindi necessario ridurre questo tipo
di ridondanza per comprimere ulteriormente il filmato.
La soluzione si chiama Block Based Motion Compensation Prediction (o semplicemente Motion Prediction), ed è
attuata nella compressione Inter-frame.
Quando si codifica un fotogramma si deve sempre cercare di recuperare più informazione possibile dal fotogramma
immediatamente precedente riducendo così il flusso netto di informazioni necessarie per ricostruire lo stream di
fotogrammi.
L’immagine viene così divisa preventivamente in macro blocchi (16 x 16 pixel). Ogni macro blocco può essere
compresso con semplice tecnica Intra-frame (DCT sottoposta a quantizzazione come nel JPEG), senza far riferimento
a nessun fotogramma precedente, oppure può essere compresso recuperando informazione dal fotogramma
precedente (tecnica Inter-frame).
Il modo più semplice ed immediato per recuperare informazione dal fotogramma precedente è quello di codificare solo il
segnale differenza tra il macroblocco in analisi ed il corrispondente del fotogramma precedente (motion compensation).
Siccome c’e’ elevata probabilità che nel passaggio da un fotogramma ad un altro ci sia una certa coerenza locale tra le
due immagini (se non addirittura una identità), il segnale differenza avrà certamente minore contenuto informativo del
macroblocco considerato a se stante.
http://www.lithium.it/stampa_art.asp?code=59 25/07/2007
Il segnale differenza può quindi essere successivamente e più efficacemente compresso con la stessa tecnica usata
per i blocchi Intra (DCT con quantizzazione). Ogni blocco può essere compresso in Intra o Inter coding, un flag ne
indica la natura. Inoltre, per permettere la sincronizzazione tra sorgente dello stream e destinatari, ogni N fotogrammi
se ne inserisce uno completamente compresso in Intra-coding e definito fotogramma chiave (keyframe).
I-P-P-P-P-I-P-P-P-P…
Una modalità opzionale nella prima review dell’H.261, ma largamente utilizzata in seguito, prevede di utilizzare il più
efficace motion-estimation.
Motion Estimation
Limitarsi a codificare il segnale differenza tra blocchi corrispondenti di fotogrammi successivi è efficace solo quando
l’area in esame varia pochissimo. Basta un semplice spostamento per perdere tutti i vantaggi.
Con il motion Estimation, ogni macroblocco del fotogramma in analisi viene confrontato con i dintorni dell’analoga
regione del fotogramma precedente alla ricerca di una porzione di pixel il più simile possibile al macroblocco in analisi.
Il prodotto di questa ricerca è un vettore, detto vettore di Motion Estimation che indica l’area del fotogramma
precedente utilizzata per recuperare l’informazione e ridurre le ridondanze.
La ricerca dei Motion Vector può estendersi massimo in una area da +15 a –15 pixel in orizzontale ed in verticale nel
fotogramma precedente. Trovata l’area che minimizza il segnale differenza con il blocco in analisi, si trasmette al
decodificatore solo il segnale differenza trasformato e quantizzato e il vettore di Motion Estimation. Il Decoder è quindi
in grado di ricostruire il blocco sapendo quale area andare a prendere del fotogramma precedente (gli viene indicata dal
motion vector) ed aggiungendovi il segnale differenza trasmessogli dal codificatore.
http://www.lithium.it/stampa_art.asp?code=59 25/07/2007
Ricerca dei Motion Vectors
Inultile dire che il compito più complesso nella compressione di un flusso video H.261 è rappresentato dalla ricerca dei
più adeguati motion vectors. Lo standard, come spesso in questi casi, non dice niente sul modo migliore per attuare
tale ricerca limitandosi a definire solo standard stringenti per il bit-format che il decodificatore dovrà sempre essere in
grado di interpretare.
Esistono quindi vari algoritmi a varie complessità: si va dalla ricerca esaustiva, a quella logaritmica fino a quella
gerarchica che usa versioni sotto dimensionate dei fotogrammi per eseguire indagini preliminari più veloci.
------------------------------------------------------------
Search Method Operation for 720x480 at 30 fps
p = 15 p=7
------------------------------------------------------------
------------------------------------------------------------
I blocchi così compressi vengono poi organizzati a strati fino a formare dei GOB o Raggruppamenti di Blocchi. Ad ogni
passaggio di aggregazione dei dati di quantizzazione, DCT e MV si cerca sempre di ridurre le ridondanze di
informazioni con codifiche entropiche VLC (Variable Lenght Encoding, es: Huffman). Le codifiche entropiche codificano
le informazioni trasmesse più di frequente con un basso numero di bit e le informazioni meno frequenti con un numero
http://www.lithium.it/stampa_art.asp?code=59 25/07/2007
elevato. In questo modo, il numero di bit medio utilizzato sarà molto inferiore.
H.263
La definizione del successore dell’ H.261 inizia nel Novembre del 1993 e si pone l’obbiettivo di migliorare le
performance del predecessore ed estenderne l’utilizzo a canali di comunicazione a banda stretta. I principi di
funzionamento sono gli stessi. Lo standard prese definitivamente forma nel 1995.
H.263 trae vantaggio anche dall’esperienza acquisita dall’ITU-T nella definizione dello standard congiunto H.262 –
MPEG2.
Si ottengono complessivamente circa 3-4dB di PSNR in più rispetto all’H.261 a data rate inferiori a 64kbit/s
E data-rate inferiori del 30% a parità di qualità e risoluzione rispetto al MPEG1.
H.263 non si ferma qui. Lo standard ammette 4 opzioni negoziabili tra sorgente e destinatario del flusso. Nel tempo
queste modalità sono praticamente divenute standard:
Frame di tipo PB
Eredità del MPEG2. I fotogrammi di tipo B (Bidirectional) hanno vettori di motion compensation che fanno
riferimento non solo al fotogramma che li precede ma anche al fotogramma che li segue. I fotogrammi B non
possono essere a loro volta utilizzati come riferimenti di motion compensation. Il fotogramma B viene in genere
accoppiato ad un fotogramma P che lo segue temporalmente. Si crea in tal modo una sequenza del tipo:
I-B-P-B-P-B-P…I-B-P-B-P…
I vantaggi della modalità PB sono: minore occupazione dei fotogrammi B, possibilità di scartare i fotogrammi B
senza problemi (non vengono mai referenziati in fotogrammi futuri) in modo da scalare verso valori di banda più
bassi. Come inconveniente abbiamo una maggiore potenza di calcolo necessaria ed un incremento della latenza
di algoritmo. Quest’ultimo fattore può risultare critico nella video conferenza a basso numero di fotogrammi.
http://www.lithium.it/stampa_art.asp?code=59 25/07/2007
una statistica dinamica dei codici usati al posto di una statistica statica usata dall’ LVC Si ottiene comunque una
compressione migliore del 5% a parità di qualità.
H.263+
H.263+ o H.263v2 prende forma a partire dal 1996 come revisione minore della raccomandazione H.263. Lo standard
sarà definitivamente varato nel 1998 e ad oggi viene in pratica indicata da tutti come l’H.263 correntemente in forze.
Tutto quanto visto nella versione base dell’H.263 rimane valido con nuove modalità negoziabili (ben 16 in totale). Tra
queste annoveriamo:
Altre modalità assicurano scalabilità SNR, spaziale e temporale, maggiore robustezza agli errori di trasmissione,
maggiore fedeltà dei colori e maggiore efficienza nel VLC.
Sull’ H.263 si basa in gran parte la codifica video del MPEG4 SP (Simple Profile). Anche le perstazioni finali sono molto
simili, con un modesto vantaggio dell’ MPEG4 a causa di un massiccio uso dei B-frame. I B-frame aumentano di molto
la latenza del flusso ma in applicazioni di streaming questo effetto è ininfluente.
Il principale obiettivo dietro il progetto H.264 è lo sviluppo di uno standard di codifica video di livello superiore e non un
semplice “upgrade”. L’ITU-T ha iniziato i lavori su questo standard già nel lontano 1997. Alla fine del 2001 viste le
superiori performance del nuovo standard rispetto al MPEG4 base, l’ISO/IEC MPEG si è unito all’ITU-T nello sviluppo di
un formato comune andando a formare il Joint Video Team (JVT). Dopo 5 anni di ricerche alla fine del 2003 H.264 è
stato finalmente approvato.
H.264 promette performance superiori del 50% rispetto a H.263+ e a MPEG4 simple profile, alta qualità del video,
resistenza agli errori di canale, risultando adatto sia per la video comunicazione real time che per il broadcast.
http://www.lithium.it/stampa_art.asp?code=59 25/07/2007
H.264 si pone l’obiettivo di fornire performance superiori a qualunque altro algoritmo presente sul mercato utilizzando
l’approccio già visto nei precedenti standard, vale a dire:
Gli elementi di novità risiedono nelle nuove modalità con le quali vengono portate a termine le 4 fasi sopra elencate:
Intra prediction
Il principio si basa sull’osservazione che blocchi adiacenti di immagine possono avere aspetto molto simile. Si
tenta allora di predire il blocco tramite l’analisi dei blocchi adiacenti. La differenza tra la predizione e il blocco
effettivo viene codificata.
Esistono 9 modi di predizione dei blocchi 4x4 e 4 modi di predizione di macroblocchi 16x16 per il luma, e altre 4
modalità per il croma. La predizione estende in pratica i valori del bordo dei blocchi adiacenti secondo direzioni
predefinite. La tecnica fornisce effettivamente riduzioni di bitrate dell’ordine del 20-25%.
http://www.lithium.it/stampa_art.asp?code=59 25/07/2007
Precisione estesa
¼ di pel di accuratezza porta ad un risparmio in bit-stream del 10% circa rispetto al ½ pel utilizzato nell’ H.263 o
un risparmio del 20% se comparato al vecchio H.261. E’ prevista anche una modalità speciale da 1/8 pel negli
annessi. Il range del vettore di compensazione del moto rimane ampio fino a +-256 pixel.
Riferimenti multipli
Si può riferirsi nel passato fino a 5 fotogrammi per individuare il miglior Motion Vector. Sono stati inoltre aggiunti i
fotogrammi SP. Il bit-stream si riduce grazie alle reference multiple del 5-10%. I riferimenti multipli sono utili
soprattutto nei repentini cambi di scena e nei movimenti che generano occlusioni di oggetti sullo schermo.
Predizione Weighted
Il codificatore si accorge se il blocco è sottoposto ad una generale trasformazione di intensità. Si migliorano le
performance nei casi di fade, flash, cambi di luminosità improvvisi etc… indicando il cambiamento con una
semplice fattore di scala.
Entropy Coding
Si può usare la Universal Variable Lengh Codes (UVLC) o la più sofisticata Context Adaptive Variable Lenght
Code (CAVLC) o ancora la Context-based Adaptive Binary Arithmetic Coding (CABAC). Le codifiche context-
based utilizzano approcci differenziati a seconda del grado di contenuto dei blocchi. Il CABAC crea un modello
statistico real-time sia sul codec che sul decoder in base al contenuto del video ed è la tecnica più avanzata.
L’uso del CABAC implica una riduzione del bitstream del 10%.
Compariamo infine le prestazioni dell’ H.264 con le prestazioni dell’ H.263+, MPEG4 e MPEG2.
http://www.lithium.it/stampa_art.asp?code=59 25/07/2007
Conclusioni
Come abbiamo potuto vedere le performance del nuovo formato 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.
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. Tale dispendio viene ripagato in performance superiori ma a dimostrazione della difficoltà del compito vi
basti sapere che attualmente non esistono codec software in grado di eseguire la compressione in tempo reale. A
questo punto però, baserà saper attendere...
http://www.lithium.it/stampa_art.asp?code=59 25/07/2007
MPEG sta per Motion Picture Expert Group, un gruppo di ricerca che ha creato gli omonimi standard per l’ISO e l’IEC.
MPEG1 fu pubblicato nel 1991. Ottimizzato per la risoluzione 352x288 (CIF o quarter PAL) a 25Hz (352x240 a 30Hz
per l’NTSC), fu definito per la creazione dei video CD. Il data rate obbiettivo massimo è di 1.5Mbit/s.
MPEG2 è stato invece rilasciato nel 1994 per un utilizzo molto più ampio: DVD, TV digitale, TV satellitare, HDTV. La
risoluzione tipica è il FullPAL Interlacciato. Si ha una codifica speciale per poter gestire l’interlacciamento. Il bit rate
target oscilla tipicamente tra 4 e 9Mbit/s.
MPEG1 parte dai risultati del’ H.261 ed introduce essenzialmente i frame di tipo B (Bidirectional).In questi frame la
predizione del moto avviene utilizzando come riferimento sia il primo fotogramma valido del passato che il primo nel
futuro. I fotogrammi B non sono validi, rimangono quindi i P e gli I. La predizione bidirezionale è ottima per ridurre il bit-
rate ma introduce la necessità di una maggiore potenza di calcolo in compressione e un aumento della latenza del
flusso video. Latenza che non crea problemi per un sistema di archiviazione o broadcast ma che può risultare
inaccettabile in video conferenza.
Con MPEG2, creato in congiunzione da ITU e ISO/IEC, si è di fatto creato lo standard più utilizzato nel video digitale.
MPEG2 usa massicciamente i fotogrammi B oltre ad una serie di migliorie nella direzione intrapresa succesivamente
dall’ H.263 (principalmente estensione del range di predizione ed accuratezza di mezzo pixel). MPEG2 usa anche i
formati colore 4:2:2 e 4:4:4 per una maggiore fedeltà d’immagine.
Dopo la definizione dell’H.263+, ISO/IEC ha finalizzato il formato MPEG4 utilizzando molte delle funzionalità tipiche
dell’H.263+ ed un massiccio uso dei B frame. C’e’ da dire che MPEG4 è un sistema complesso di specifiche che
annoverano molti altri elementi oltre agli algoritmi base di compressione video. L’MPEG4 sta riscontrando molto
successo per lo streaming multimediale su Internet; la tecnologia DivX ormai accettata anche nell’industria dei lettori di
DVD, si basa su MPEG4 ed anche la tecnologia Packet Video che porta i filmati digitali sui telefonini di 3° generazione
(3G).
Il formato DV è un formato digitale a basso fattore di compressione che genera stream da 25Mbit/s. L’immagine è una
Full-pal interlacciata in formato colore YUV 4:2:0. La codifica è principalmente Intra con un pizzico di Inter compression.
Siccome il formato è interlacciato, il video viene visto come sequenza di field (50Hz) invece che di frame. Il primo field
di un frame viene compresso con compressione Intra tramite classica DCT quantizzata. Il successivo field viene invece
codificato come differenza con il primo field.
Normalmente i field sono molto affini e la codifica del secondo field richiede molto meno informazione del primo. Se
avessi avuto compressione Intra per entrambi i field, questi si sarebbero dovuti dividere equamente a metà il Megabit
dedicato a ciascuno frame. In questo modo invece la ripartizione della banda può essere migliorata con un incremento
complessivo di qualità. Se l’allocazione dei dati tra primo e secondo field viene fatta in maniera statica (es:70% di dati
sul primo field e 30% sul secondo), possono apparire degli effetti di blocking leggero in presenza di scene molto
movimentate. L’effetto si riduce con algoritmi più intelligenti.
Copyright LITHIUM.IT - 2002, All rights Reserved.
http://www.lithium.it/stampa_art.asp?code=59 25/07/2007