BETA La rivista ipertestuale tecnica
BETA
BETA La rivista ipertestuale tecnicaBarra BETA
Barra Sito Beta.it

BETA 2299.5 - Multimedia: La codifica digitale MPEG - Parte 1 | Parte 2 | Parte 3 | Parte 4 | Parte 5  -  Indici | Guida

Clicca qui!

La codifica digitale MPEG

Andrea Lubrano, Fabrizio Gargano, Luciano Giustini
BETA

Parte 4: Flusso Video

Un video e' composto da un certo numero di fotogrammi al secondo dettato dallo standard televisivo. Ogni fotogramma e' un immagine trattata con l'algoritmo visto in precedenza. Si ha quindi un flusso di immagini che viene suddiviso in GOP (Group Of Pictures). Il GOP è la più piccola unità che può essere decodificata in maniera indipendente all'interno di una sequenza. È costituito da un header e da un certo numero, non necessariamente costante, di immagini.
  • Un GOP deve contenere almeno un'immagine di tipo I
  • La prima immagine del GOP deve essere di tipo I o B
  • L'ultima immagine del GOP deve essere di tipo I o P

Motion compensation


La maggior parte dei fotogrammi di una sequenza e' in genere molto simile, le differenze fra un fotogramma ed il successivo in genere sono dovute solo a traslazioni di parti di esso. Ha quindi senso pensare di evitare di trasmettere le parti che non sono cambiate e di trasmettere, per quelle che si sono spostate, solo il verso e l'entita' dello spostamento (motion vector).

Nello standard MPEG esistono tre tipi di fotogrammi : fotogrammi che vengono codificati singolarmente senza nessun riferimento ad altri (Intraframes o I frames), fotogrammi che vengono predetti sulla base di un frame di tipo I (Forward predicted frames o P frames), e fotogrammi che vengono ottenuti interpolando fra un frame I ed un frame P (Bidirectional frames o B frames). In MPEG quindi la predizione di un fotogramma puo' essere fatta considerando sia la storia passata (I frames) che quella futura (P frames), il processo e' schematizzato nella figura :

In sostanza come primo passo viene generato un frame I considerandolo come una singola immagine fissa. Per il calcolo del motion vector e la predizione del frame P si considerano i punti all'interno di blocchi 16x16 (macroblock) nel canale di luminanza Y e nei corrispondenti blocchi 8x8 nei canali di crominanza U e V. Per ognuno di questi blocchi si cerca quello che ad esso si avvicina di piu' nell'ultimo frame I o P inviato, il verso e la direzione fra questi due blocchi identificano il motion vector. Se si riesce ad individuare il motion vector, per specificare il blocco nel frame P che stiamo codificando bastera' indicare, oltre ovviamente al motion vector stesso, la differenza fra i punti dei due blocchi in esame. Una volta codificato un frame I ed uno P si possono codificare i frames B compresi fra essi.

Allora si esaminano i macroblocchi dei fotogrammi compresi fra il frame I e quello P cercando per ogni blocco quello a lui piu' simile nel frame I (quindi indietro nel tempo), quello piu' simile nel frame P (quindi avanti nel tempo) oppure cercando di fare una media fra il blocco piu' simile nel frame I e quello piu' simile nel frame P e sottraendo a questa il blocco da codificare.

Se con nessuno di questi tre procedimenti si ottiene un risultato soddisfacente si puo' sempre codificare il blocco come se facesse parte di un frame I ovvero senza riferimenti ai blocchi precedenti o futuri.

Quindi otteniamo logicamente una sequenza di frames del tipo:

         I B B P B B P B B P B B I B B P B B P B B P B B I ...
(tipica sequenza di codifica MPEG) in cui ci devono essere al massimo 12 frames fra un frame di tipo I ed il successivo (codifica SIF US), mentre la successione di frames P e B e' libera.

Questo permette di avere un accesso casuale al flusso di immagini ogni 1/30*12=0,4 sec e di fare in modo che le immagini codificate non divergano troppe da quelle reali.
Naturalmente, visto che per poter decodificare i frames B occorre conoscere gia' il frame P successivo, la sequenza dei frames che vengono inviati dopo la codifica e' diversa da quella logica ed e' come segue :

TIPO     I P B B P B B P B B P B B I B B P B B P B B P B B I ...
ISTANTE 1 1 1 1 1 1 1 1 1 2 1 2 2 2 2 2 ... 0 3 1 2 6 4 5 9 7 8 2 0 1 5 3 4 8 6 7 1 9 0 4 2 3 5 ...

Quindi le operazioni che si compiranno leggendo un flusso MPEG saranno sostanzialmente queste :

1) Lettura e decodifica del frame I(t=0)
2) Lettura e decodifica del frame P(t=3), visualizzazione frame I(t=0)
3) Lettura e decodifica del frame B(t=1), visualizzazione frame B(t=1)
4) Lettura e decodifica del frame B(t=2), visualizzazione frame B(t=2)
5) Lettura e decodifica del frame P(t=6), visualizzazione frame P(t=3)
6) Lettura e decodifica del frame B(t=4), visualizzazione frame B(t=4)
7) Lettura e decodifica del frame B(t=5), visualizzazione frame B(t=5)
8) Lettura e decodifica del frame P(t=9), visualizzazione frame P(t=6)

          9) ...

Prestazioni

Partendo da immagini originariamente in formato SIF e convertendole in MPEG si ottiene un fattore di compressione di circa 30:1. La qualita' delle immagini che si ottengono e' sostanzialmente comparabile con quella delle immagini in ingresso. Viceversa se le immagini originarie sono di qualita' superiore, ad esempio CCIR-601 o immagini RGB ottenute da un computer che vengono convertite in SIF, il fattore di compressione globale e' molto piu' alto, anche 100:1, ma il degrado di qualita' delle immagini e' molto piu' marcato.

Ad esempio per memorizzare un filmato di 165 frames in formato RGB a 352x288 punti, dato che ogni fotogramma occupa  352*288*3=304128 bytes, occorrono circa 50 Mbytes. Lo stesso filmato, compresso in MPEG senza sacrificare troppo la qualita', occupa solo 1,1 Mbytes denotando quindi un rapporto di compressione di circa 50:1. La trasmissione di tale filmato, supponendo un data rate di 1 Mbit/sec, avrebbe comportato un tempo di 400 secondi mentre la versione compressa puo' essere trasmessa in poco meno di 9 secondi.

Uno dei punti piu' critici sta nel fatto che al codificatore e' lasciata una ampia liberta' di scelta sul tipo di frame da utilizzare e sul tipo di codifica da effettuare sui singoli macroblocchi. Pertanto a parita' di sequenza di immagini in ingresso, ma al variare dei parametri del codificatore, si possono ottenere un gran numero di sequenze diverse, sempre ripettanti lo standard MPEG, ognuna con un diverso valore di compressione e diversa qualita'. Oltretutto, benche' si stiano facendo molte ricerche in questo campo, vi e' un forte interesse da parte dei costruttori di hardware a mantenere riservati i risultati di queste per poter acquisire vantaggi competitivi nella fabbricazione di codificatori su singolo chip. Quindi, anche utilizzando codificatori software, il tuning dei vari parametri e' particolarmente critico e le prestazioni che si ottengono variano molto a seconda della configurazione o delle immagini in ingresso.

In generale, ottenendo un risultato di qualita' media, ci si puo' aspettare che i frames di tipo I vengano compressi di un fattore 10:1, quelli di tipo P di un fattore 30:1
e quelli di tipo B di 60:1. I filmati MPEG attualmente disponibili hanno rapporti di compressione variabili fra 30:1 sino a 100:1. 

Collegamento d'articolo
Parte 1 | Parte 2 | Parte 3 | Parte 4 | Parte 5

Parte 5 - Differenze tra Mpeg-1 e Mpeg-2 Video - DVB


Andrea Lubrano, Fabrizio Gargano e Luciano Giustini hanno collaborato insieme per la stesura di una tesina sui codici di compressione MPEG per il corso di laurea in Ingegneria Informatica all'Università di Roma Tre, docente prof.ssa G. Murciano. La tesina è stata progettata in funzione della pubblicazione su Web ed è stata quindi prodotta fin da subito in formato HTML. Coloro i quali fossero interessati ad una versione stampabile e più ''leggera'' della stessa possono richiederla all'indirizzo info@beta.it. Per i lettori abbonati le due versioni sono disponibili all'indirizzo BETA http://subs.betamag.com

Copyright © 1999 Andrea Lubrano, Fabrizio Gargano, Luciano Giustini, tutti i diritti sono riservati. Questo Articolo di BETA, insieme alla Rivista, è distribuito secondo i termini e le condizioni della Licenza Pubblica Beta, come specificato nel file LPB.


BETA 2299.5: Sommario | Indice del Numero | Redazione | Liste/Forum | Informazioni | Licenza Pubbl. Beta | Mirror ufficiali | Abbonati a BETA | Internet ID | Guida | Cerca | Stampa


Beta.it (http://www.beta.it)email info@beta.it
Barra Sito Beta.it

indice sito | mappa | contattaci | newsletter | pubbl./ad info | abbonamento | informazioni | shopping

Copyright © 1994-1999 BETA, tutti i diritti sono riservati - http://www.beta.it

Sommario Abbonamenti a BETA Redazione Liste/Forum Informazioni Indice del Numero Mirror ufficiali Beta Home Page Beta Home Page english Beta News BETA Rivista Articoli BETA Beta Edit, pubblicazioni Beta Logo, premi Beta Lpb, Licenza Pubblica e Articoli Lpb Beta Navigatore Beta Online Beta Library Beta Info Gruppo Beta BETA La rivista ipertestuale tecnica Collegamento al sito Web