GOLIÁŠ.cz


Srovnáme.cz
Najdete nás na Twitteru Najdete nás na Facebooku
TV tip:



Jak na DVD: Komprese - Co je to MPEG-2
audio + video / Digitální video 15.8.2003 Jiří Novák

Všechny podklady pro DVD už máme nachystané, takže nyní přichází na řadu jejich komprese do formátu MPEG-2. Abychom této problematice lépe porozuměli, tak si v tomto díle našeho seriálu vysvětlíme, jak vlastně taková komprese videozáznamu funguje.


Digitální videozáznam je velice náročný na kapacitu datových médií. Například 5 minut videa v běžně používaném formátu DV s datovým tokem 25 Mbps zabere přibližně 1 GB datového prostoru, z čehož je zřejmé, že na jedno DVD-R bychom vypálili pouze 23 minut záznamu. Právě proto byly vyvinuty kompresní formáty, které dokáží na základě speciálních algoritmů analyzovat záznam a úsporněji zpracovat obrazová data, jež se opakují. Při vyšším stupni komprese, kdy výrazně snížíme datový tok, pak navíc některé informace vypouští úplně, čímž ovšem dochází k výrazné degradaci obrazové kvality. Těmto algoritmům se někdy rovněž říká codec, a jedním z nich je i MPEG-2 používaný jako standard pro DVD video. Pojďme se tedy podrobněji podívat, jak vlastně při kompresi postupuje.

Na horním obrázku vidíte okénko záznamu komprimovaného prostřednictvím formátu MPEG-2 s datovým tokem 8 Mbps. Díky kompresnímu algoritmu mohlo být zachováno plné rozlišení PAL (720x576 bodů), ale datová velikost snímku se snížila z původních 128 KB na pouhých 40 KB. Pokud bychom chtěli podobného snížení dosáhnout bez komprese, museli bychom velikost záběru zmenšit tak, jak to vidíte na spodním obrázku. (Kvůli zobrazení na internetových stránkách jsou obě ilustrace zmenšeny o 50%, nicméně poměr velikostí byl zachován).

Jako JPEG

Celý kompresní proces ve formátu MPEG-2 má několik fází, přičemž první z nich je prakticky shodná s dobře známou kompresí JPEG, používanou pro obrázky na internetu. Jedná se o tzv. DCT neboli discrete cosine transformation, při které jsou obrázky rozloženy na bloky podle úrovně detailů. Musíme si totiž uvědomit, že digitální obraz je složen z jednotlivých bodů, přičemž každý z nich je definován informací o jasu a barvě. V praxi ovšem nikdy nenastane situace, že by byl každý bod jiný, a právě toho také využívá DCT. Z jednolité barevné plochy totiž vytvoří blok a v rámci něj pak najde shodné body. Obrazové informace pro jednotlivé pixely potom neukládá samostatně, jako je tomu u nekomprimovaných formátů, ale namísto toho je uloží pro shodné body ležící vedle sebe najednou. Pokud bychom chtěli tento proces zjednodušit, můžeme říci, že namísto zápisu ve formě: červený bod - červený bod - červený bod, použije zjednodušenou variantu: třikrát červený bod.

Z předchozích řádek také vyplývá, proč jsou JPEG obrázky nebo komprimované video často rozmazané v oblastech, kde přechází jeden barevný odstín do druhého. Pokud totiž nastavíme příliš vysokou úroveň komprese, DCT nezbude nic jiného, než spojit informace i pro body s podobnou barevností a jasem, takže v případě jemných rozdílů, dojde ke slití barev a vzniku obrazových artefaktů, jak je vidíte na následující ilustraci.

Na horním obrázku je výsledek DCT komprimace při vyšším datovém toku. Na dolním pak vidíte artefakty, které vzniknou při jeho snížení a zvětšení komprese.

 

Ono se to ale hýbe

Pro statické obrázky je sice DCT komprese dostačující, nicméně video v normě PAL obsahuje 25 snímků za vteřinu, takže by nám sama o sobě k potřebnému snížení datového toku nestačila (alespoň pokud nechceme mít natolik sníženou kvalitu, jak ji vidíme na předešlé ilustraci). MPEG-2 proto využívá ještě druhý způsob komprese, kterému říkáme Temporal Compression. Ten vychází z toho, že dvě po sobě jdoucí okénka videozáznamu jsou si díky minimálnímu časovému odstupu v jejich nasnímání velmi podobná a řada obrazových bodů je tudíž shodných (obzvláště u statických záběrů), takže stačí uložit informace pouze o rozdílných pixelech.

Na tomto obrázku dobře vidíme, že odlišnosti mezi po sobě jdoucími snímky ve videosekvenci jsou opravdu minimální. Toho také využívá tzv. Temporal Compression.

V praxi využívá Temporal Compression tři různé druhy okének. Nejdůležitější jsou při tom tzv. Intra Frames (někdy též Key Frames, nebo I-Frames), které obsahují kompletní obrazovou informaci. I-Frames jsou zpracovány pouze prostřednictvím výše uvedeného DCT a vypadají tudíž jako plnohodnotný obrázek. v záznamu jsou umístěny v pravidelných intervalech (např. každé dvě vteřiny) nebo ve chvíli, kdy dojde k zásadní změně scény (např. při střihu mezi dvěma záběry).

Mezi I-Frames umisťuje MPEG-2 další druh okének, nazvaný Predicted Frames. Ty už obsahují pouze informace o změnách od posledního I nebo P-Frame. Při kompresi jsou totiž jednotlivá okénka nejdříve rozdělena na bloky a na základě vektorových výpočtů jsou pak určeny změny které mezi nimi proběhly. Následně je provedena DCT komprimace a její výsledek je společně s informacemi o změně jednotlivých bloků od posledního I-Framu uložen jako speciální P-Frame. Z toho také vyplývá, že P-Frames neobsahují kompletní obrazovou informaci a tudíž nemohou být bez příslušných I-Frames vůbec přehrány.

Názorné schéma principu, který využívá Temporal Compression.

Posledním typem okének jsou Bidirectional Frames (B-Frames), které fungují obdobně jako P-Frames, ale kvůli větší přesnosti určují změny bloků na základě porovnání předchozího i následného okénka. Takový výpočet je ovšem velmi náročný na čas, takže v praxi, obzvláště v případě real-time encoderů jsou více upřednostňovány P-Frames.

Z předchozích informací je mimochodem také zřejmé, proč DVD přehrávače při rychlém "převíjení" nezobrazují plynulý pohyb, ale skáčí po okénkách. Při přehrávání totiž musí jednotlivá okénka dopočítávat na základě rozdílů mezi P-Frames a nejbližším I-Frame, takže při rychlém "převíjení" tento náročný proces vypouštějí a zobrazují pouze I-Frames.

VBR vs. CBR

Tyto dvě podivně znějící zkratky se vztahují k datovému toku, přičemž VBR znamená Variable Bit-rate (variabilní datový tok) a CBR zase Constant Bit-rate (konstantní datový tok). MPEG-2 dokáže videozáznam komprimovat oběma způsoby, takže se pojďme podívat, jaký je mezi nimi rozdíl.

Jak už napovídá samotný název CBR, jedná se o kompresi, která používá stejný datový tok v průběhu celého filmu. Největší problém tohoto řešení spočívá v tom, že u scén, které obsahují větší množství detailů nebo rychlý pohyb, může dojít k degradaci obrazu, neboť nastavený datový tok vyžaduje vyšší úroveň komprese, zatímco například u statických záběrů, kde stačí menší objem dat, je zase komprese zbytečně nízká. Výhodou je naopak větší rychlost celého komprimačního procesu, neboť MPEG-2 nemusí analyzovat obsah záznamu a datový tok podle toho průběžně měnit, jako je tomu v případě VBR.

Setkat se navíc můžete ještě s tzv. two-pass variable bitrate, což je způsob komprese, který nabízí nejvyšší možnou kvalitu. Celý záznam je při něm totiž nejdříve podrobně analyzován, aby encoder přesně zjistil, v kterých místech je třeba datový tok zvýšit a kde může naopak ubrat, takže datový limit stanovený uživatelem využije skutečně optimálně. Odtud také vychází název two-pass (neboli dvoucestné) kódování: nejdříve je provedena celková analýza a teprve na základě jejích výsledků pak probíhá samotná komprese. Z toho také vyplývá, že dvoucestný encoding nelze využít při real-time kompresi a navíc je ze všech tří metod časově nejnáročnější. Odměnou za trpělivost strávenou dlouhým čekáním na výsledky složitých výpočtů je ovšem na druhé straně perfektní obrazová kvalita.

Příště si na základě dnešních teoretických poznatků řekneme několik tipů pro optimální nastavení exportu do MPEG-2 a ve stručnosti si představíme některé komprimovací aplikace.

Hodnocení čtenářů 5 bodů - nejvyšší počet
bodový průměr: 2.95     hodnotilo čtenářů: 1739     body:  1 | 2 | 3 | 4 | 5
Komentáře k článku