Frquentemente, le immagini di una sequenza video hanno solo poche differenze l'una dall'altra, cioè sono altamente correlate. Si può allora ottenere un'alta compressione della sequenza codificando le immagini differenzialmente, e trasmettendo solo la differenza fra un immagine e l'altra. Le regioni inalterate possono essere copiate da un'immagine a quella successiva, riducendo considerevolmente le dimensioni del bitstream.
La tecnica utilizzata dall'MPEG per codificare differenzialmente le immagini è la Motion Estimation: si assume che, localmente, un immagine sia esprimibile come traslazione di un immagine precedente e/o successiva della sequenza video, dove per ``localmente'' si intende limitatamente a un singolo macroblocco.
Si considerino due immagini successive, IM1 e IM2, all'interno di una sequenza video, dove IM2 è l'immagine corrente e IM1 è l'immagine precedente, già decodificata. L'operazione di decodifica locale prevede diversi casi:
Questo è il caso di predizione unidirezionale, ma l'MPEG adotta, in aggiunta, una tecnica di predizione bidirezionale, in cui un singolo macroblocco viene codificato rispetto ad altri due distinti macroblocchi, uno dei quali appartenente a un'immagine precedente della sequenza video, e l'altro appartenente a un immagine successiva. Questa tecnica porta almeno due vantaggi: garantisce un alto grado di compressione e permette di mediare il rumore, diminuendone gli effetti.
Ogni macroblocco può quindi essere di tre tipi, che vengono chiamati I, P e B.
L'operazione di codifica dei macroblocchi I è detta di tipo ``intra'', mentre quella di codifica dei macroblocchi di tipo P o B è detta genericamente ``non-intra'' o ``inter''.
In analogia a questa classificazione dei macroblocchi, esistono tre tipi di immagini in una sequenza video MPEG 2.1
Le immagini di tipo I sono codificate indipendentemente da ogni altra immagine. Le immagini di tipo P ottengono predizioni da immagini di tipo I o P temporalmente precedenti nella sequenza. Le immagini di tipo B ottengono predizioni dalla più vicina immagine di tipo I o P precedente e/o successiva nella sequenza.
Una o più immagini successive formano un ``gruppo di immagini'', che può essere ``chiuso'' o ``aperto''. In un gruppo chiuso le predizioni che giungono a ogni immagine provengono solo da altre immagini che appartengano allo stesso gruppo, mentre i gruppi aperti non devono sottostare a questo vincolo.
La sequenza tipica delle immagini è, come mostrato in figura, del tipo I B B B P B B B I .... Le immagini I, essendo codificate indipendentemente, costituiscono punti di accesso casuale alla sequenza video MPEG. Le immagini non-intracodificate, d'altra parte, garantiscono una notevole riduzione della lunghezza del bitstream, ma causano anche propagazione degli errori: il problema è ovviato dalla presenza di più gruppi di immagini nella sequenza, indipendenti uno dall'altro.
|
Poiché le immagini tipo B possono ottenere predizioni da immagini successive della sequenza video, l'ordine di trasmissione delle immagini nel bitstream non può coincidere con l'ordine di visualizzazione. In generale, vengono prima trasmesse le immagini di tipo I, poi quelle di tipo P e infine quelle di tipo B, per ogni gruppo di immagini. Per la sequenza dell'esempio, l'ordine di trasmissione è I P B B B I B B B ... Questo implica che le immagini di tipo I e P, una volta decodificate, devono essere conservate in un buffer, fino al momento in cui vengono mostrate all'utente.