Recenze  |  Aktuality  |  Články
Doporučení  |  Diskuze
Filmy a seriály, streamovací služby
Televize  |  Projektory
Audio a domácí kina
Multimediální centra  |  Ostatní
Svět hardware  |  Digimanie
Svět mobilně

Jak funguje MPEG?

11.11.1999, Radek Jahoda, recenze
Podívejme se stručně na princip kódování do formátu MPEG. Pomůžeme osvětlit některé zákonitosti.
Na prvním obrázku je vidět Mercedes, jehož poloha se změnila z obázku N do obrázku N+1. Pozadí obrázku se nezměnilo. Realizaci této změny v MPEGu se říká "motion estimation", volně by se to dalo přeložit jako "změna polohy objektu". Je možné říci, že kupé změnilo polohu ze souřadnic [x1,y1] na [x2,y2]. V praxi ale není příliš jednoduché popsat změnu tak složitého objektu jako je např. automobil.




Proto se obrázek rozděluje do tzv. makrobloků o velikosti 8x8 nebo 16x16 bodů, které jsou zpracovávány odděleně. Nejprve se udělá rozdíl mezi obrázky N a N+1 (viz. obr. 2) a dále se hledá relace mezi makrobloky N a N+1. Požadavek na paměť je tím menší, čím je rozdíl mezi jednotlivými obrázky menší. Pak je možné dokonce vynechat zakódování rozdílu.



Vždy ale musí existovat obrázek, ze kterého se vychází. Proto jsou obrázky rozděleny do tzv. sekvence IBP. Snímek (frame) "I" (intra coded image) je obyčejný obrázek JPEG. Oproti tomu snímky "P" (predicted image) jsou vytvořeny predikcí z předcházejícího snímku "I".Nejuniversálnější jsou snímky "B"(bi-directionally interpolated), které jsou interpolovány buď z předcházejícího nebo následujícího snímku "I" nebo "P". Následující obrázek ukazuje sled těchto snímků.



Aby bylo co nejvíce ušetřeno místo, jsou obrázky ještě navíc překódovány diskrétní kosinovou transformací (DCT), která z obrázku odstraní ty části, které nejsou lidskému oku viditelné. Je založena na Fourierově transformaci, která převádí signál z časové oblasti do frekvenční jako součet sinů různé frekvence a velikosti amplitudy. Dá se říci, že siny o nízké frekvenci reprezentují velké plochy a siny o větší frekvenci oblasti s více detaily. Např. makroblok 8x8 bodů je překoódován do 64 frekvencí, které mají na sebe jistou návaznost a možné je uchovat pouze jako změnu v jejich velikosti. První koeficient je tzv. stejnosměrná složka, která určuje základní zharakteristiku makrobloku. Vyšší koeficinty jsou většinou 0 a proto se ořezávají. Počet oříznutí dává následně kvalitu výsledného obrazu a kompresi. Toto oříznutí většinou ve výsledném pohyblivém obrazu není viditelné, pouze při bližším zkoumání je vidět zdvojení ostrých přechodů (tzv. duch). Tomuto principu se říká kvantizace.

Dalším zjednodušením je sloučení sousedních částí obrazu, která jsou shodné, jsou to např. velké stejnobarevné plochy. Čítač tohoto počtu ale také zabírá místo, proto se většinou používá až od počtu 3. Tomuto principu se říká "run length encoding"(RLE). Dalším stupněm koprese je použití tzv. Huffmanova kódu. Části obrazu, které se opakují nejčastěji jsou označeny malým počtem bitů, ostatní více bity.

Výsledná kvalita obrazu je dána více faktory. V prvé řadě je to kvalita originálního videa. Zašumění originálu má za následek zvýšení chyb při DCT. Dalším faktorem, ovlivňujícím kvalitu je stupeň "motion estimation". Složitějších algotimy hledání dokáží najít pohyb objektů daleko přesněji, jiné (větš. ty levnější) hledají pouze jednoduchým způsobem a kvalita videa se tak zhoršuje, protože většinu pásma zabere přímé kódování obrazu s velmi oříznutými koeficienty DCT.

A jaký je rozdíl mezi MPEG-1 a MPEG-2? Princip kódování je stejný, MPEG-1 má omezení na maximální velikost obrazu 352x288 a 30 snímků za vteřinu. MPEG-2 má navíc tyto rozšíření:
  • je zvětšena přesnost vektorů pohybu na 1/2 pixelu.
  • snížena chyba ve snímcích "I" díky speciálním vektorům
  • volitelné přesnost DCT
  • vzdálenější "motion estimation"
  • změna stupně kvality v jednom videu

Tento článek je pouze jednoduchým shrnutím principů MPEGu pro většinu uživatelů, odborníci mi ho jistě prominou. Článek byl napsán podle Tom's hardware guide.