2009-02-27 42 views
18

Qualcuno può spiegare in modo semplice e chiaro come funziona MPEG4 per comprimere i dati. Sono principalmente interessato al video. So che ci sono diversi standard o parti. Sto solo cercando il metodo di compressione generale predominante, se ce n'è uno con MPEG4.Come funziona la compressione MPEG4?

risposta

35

MPEG-4 è un enorme standard e impiega molte tecniche per ottenere le alte percentuali di compressione di cui è capace.

In generale, la compressione video si occupa di eliminare quante più informazioni possibili, pur avendo un impatto minimo sull'esperienza di visualizzazione per un utente finale. Ad esempio, utilizzando YUV sottocampionato anziché RGB, le dimensioni del video vengono tagliate a metà immediatamente. Ciò è possibile in quanto l'occhio umano è meno sensibile al colore rispetto alla luminosità. In YUV, il valore Y è luminosità, mentre i valori U e V rappresentano il colore. Pertanto, è possibile eliminare alcune informazioni sul colore che riducono le dimensioni del file, senza che l'osservatore possa notare alcuna differenza.

Successivamente, la maggior parte delle tecniche di compressione sfrutta in particolare 2 ridondanze. Il primo è la ridondanza temporale e il secondo è la ridondanza spaziale.

Note di ridondanza temporale che i fotogrammi successivi in ​​una sequenza video sono molto simili. In genere un video dovrebbe essere nell'ordine di 20-30 fotogrammi al secondo e non cambia molto in 1/30 di secondo. Prendere qualsiasi DVD e metterlo in pausa, quindi spostarlo su un fotogramma e notare quanto siano simili le 2 immagini. Quindi, invece di codificare ogni frame in modo indipendente, MPEG-4 (e altri standard di compressione) codifica solo la differenza tra frame successivi (usando motion estimation per trovare la differenza tra i frame)

La ridondanza spaziale trae vantaggio dal fatto che in generale il il colore diffuso tra le immagini tende ad essere piuttosto basso. Con questo intendo che i pixel vicini tendono ad avere colori simili. Ad esempio, in un'immagine di te che indossa un ponticello rosso, tutti i pixel che rappresentano il tuo ponticello avranno colori molto simili. È possibile utilizzare il DCT per trasformare i valori dei pixel nello spazio di frequenza, dove alcune informazioni ad alta frequenza possono essere gettate via. Quindi, quando viene eseguito il DCT inverso (durante la decodifica), l'immagine è ora senza le informazioni ad alta frequenza gettate via.

Per visualizzare gli effetti del lancio di informazioni ad alta frequenza, aprire la pittura MS e tracciare una serie di linee nere orizzontali e verticali sovrapposte. Salva l'immagine come JPEG (che usa anche DCT per la compressione). Ora ingrandisci lo schema, nota come i bordi delle linee non sono più nitidi e sono piuttosto sfocati. Questo perché alcune informazioni ad alta frequenza (la transizione dal nero al bianco) sono state gettate via durante la compressione.Read this for an explanation with nice pictures

Per ulteriori informazioni, this book è abbastanza buono, anche se un po 'pesante sulla matematica.

+3

Gli spigoli vivi non sono ad alta frequenza, perché non si ripetono. Sono in realtà una somma di ogni frequenza in una volta, motivo per cui la compressione DCT e alcuni resizer dell'immagine aggiungono rumore attorno alle linee anziché sfocarle. –

+0

Va aggiunto che DCT (Discrete Cosine Transform) non viene eseguito sull'intera immagine. L'immagine è suddivisa in blocchi 8x8 o 16x16 pixel e il DCT viene eseguito su ciascun blocco. Questo perché le prestazioni DCT diminuiscono rapidamente per immagini più grandi. Poiché MPEG deve essere trasmesso in streaming, la decodifica deve essere molto veloce. – rcz

1

MPEG4 utilizza una varietà di tecniche per comprimere il video.

Se non hai già guardato wikipedia, questo sarebbe un buon starting point.

C'è anche questo articolo dal IEEE che spiega queste tecniche in modo più dettagliato.

4

Come qualsiasi altro codec video popolare, MPEG4 utilizza una variazione di discrete cosine transform e una varietà di tecniche di compensazione del movimento (a cui si può pensare come previsione del movimento se ciò aiuta) che riducono la quantità di dati necessari per i fotogrammi successivi. This page ha una panoramica di ciò che viene fatto da semplice MPEG4.

Non è del tutto diverso dalle tecniche utilizzate da JPEG.

1

I bordi affilati certamente DO contengono alte frequenze. Ridurre o eliminare le alte frequenze riduce la nitidezza dei bordi. I dettagli precisi, compresi gli spigoli vivi, vengono rimossi con la rimozione ad alta frequenza - la possibilità di risolvere 2 piccoli oggetti viene rimossa con le alte frequenze - quindi ne vedi una sola.

Problemi correlati