In this article we present the results of tests we did on MPEG-2 and H.264 codecs in order to measure their error ressillience.The data flow is being tested in its raw unprotected form which simulates reception of DVB-T in the entire range of reasonable bit-error ratios or severly damaged media.
Keywords: MPEG; video codec; DVB
V dnešní době jsou již prakticky všechny obrazové signály zaznamenávány a přenášeny v digitální formě. Úkolem zdrojového kodéru je najít a odstranit ze vstupního video signálu co nejvíce redundancí a tím snížit potřebnou šířku pásma pro přenos nebo potřebnou kapacitu pro uložení. Samozrejmým předpokladem je bezchybný přenosový kanál nebo médium.
Toho samozřejmě nelze v praxi dosáhnout a tak se do přenosového řetězce vkládá ještě kanálový kodér, který naopak redundanci přidává a pomáhá tak ochránit uživatelská data před chybami vyniklými při přenosu a zpracování. Robustnost takové ochrany je nutno vhodně dimenzovat. V některých případech je ale rozpětí chybovosti tak široké, že není možné určit "jedinou správnou" míru přidané redundance pro spolehlivé a bezchybné obnovení původní informace. Konkrétně, například v případě digitálního pozemního televizního vysílaní se v závislosti na přijímacích podmínkách může kanálová chybovost měnit od 10e-2 do 10e-9 a chybovost po opravě od 10e-4 do 10e-9 (oblast dostupnosti obrazu).
Zvolené hodnoty ochranných kódů tak poskytují ochranu jen do určité úrovně chybovosti kanálu. Nárust chybovosti kanálu nad tuto hranici způsobí to, že zdrojový signál opět začne vykazovat chybovost. Použitím ochranného kódu tedy můžeme virtuálně snížit chybovost kanálu, ale vždy na úkor přenosové rychlosti.
Na první pohled nesmyslné testování čistě zakódovaného signálu bez ochranného kódu proto má smysl a představuje například situace příjmu digitální televize ve velmi špatných podmínkách nebo významněji poškozený nosič video signálu (VCD, DVD, ...).
Testované kodeky jsou standardem v oblasti zdrojového kódování video signálu. MPEG-2 [1] je používán například v DVB-T (digitální pozemní televizní vysílání) nebo na nosičích DVD. Kodek H.264 [2][3], někdy též označován jako MPEG-4 Part 10 nebo AVC, je jeho nástupcem a používá pokročilejší kompresní techniky, které vedou k dalšímu snížení potřebného bitového toku. Tento kodek je použit například ve standardu DVB-T2 nebo na discích Blu-ray.
Při kódování podle MPEG-2 se obraz nejprve rozloží z RGB barevného prostoru na jasovou (luma) a barevné (chroma) složky. Vzhledem k menší citlivosti lidského zraku na barvy se volitelně barevný kanál podvzorkuje. Následuje rozdělení jednotlivých snímků na makrobloky. To je základní operační jednotka pro všechny následující operace.
Následuje fáze odstranění redundance. Redundance může být jednak prostorová, tedy v rámci jediného snímku, anebo časová, tedy podobnost částí po sobě následujících snímků. Odstranění redundance je realizováno pomocí predikce. Je jasné, že pro první snímek může být použita pouze prostorová (intra) predikce, zatímco makrobloky ostatních snímků se již mohou odkazovat na makrobloky z předchozích snímků (inter predikce). Mezisnímková predikce přináší největší míru komprese, ale občas je vhodné vynutit intra predikci, aby se zamezilo šíření možné chyby do nekonečna.
Po predikci zbývá zakódovat rozdíl mezi predikovaným a skutečným signálem. Využit je známý princip převodu z prostorové do frekvenční domény pomocí DCT (diskrétní kosinová transformace), následná redukce méně důležitých složek pomocí kvantizační matice.
Posledním krokem je efektivní kódování získaných dat (DPCM kódování rozdílového signálu s vkládanou referencí) a metadat (informace o použité predikci, pohybové vektory, ...) pomocí aritmetického kódování.
Pro správnou funkci dekodéru je nutné, aby byla struktura dat nepoškozená přenosem. Jeden poškozený bit můze vést, a často vede, k chybné interpretaci následujících dat a tím k jejich znehodnocení (i když kanálem prošly bezchybně), čímž se efektivně zvyšuje zdánlivá chybovost kanálu. I jediný chybný bit tedy může způsobit chybu ovlivňující několik makrobloků.
Pro simulaci chybového kanálu byl vytvořen jednoduchý program v jazyku C, který mění datový tok tak, aby vykazoval požadovaný BER (bit error ratio). Pro každý přenášený bit bylo funkcí random() ze standardní knihovny C rozhodnuto o jeho možném poškození. Funkce random() pracuje na principu nelineárního aditivního zpětnovazebního generátoru náhodných čísel.
Výsledné objektivní metriky MSE a PSNR byly získávány pomocí programu, vytvořeného v programovacím jazyku Python s použitím modulu PIL (python imaging library) a PP (parallel python). Hodnota MSE pro celou sekvenci byla vypočítána jako průměrná MSE jednotlivých snímků. Hodnota PSNR je spočítana z MSE podle vztahu
![]() | (1) |
kde MAX představuje maximální možnou hodnotu daného pixelu (v našem případě MAX = 255).
Testovaná sekvence měla rozlišení 640x480 a snímkovou frekvenci 30 fps. Pro každý kodek jsme testovali variantu s bitovým tokem 1000 kbit/s a 500 kbit/s.
Pro každý test byla provedena celá série se stejným nastavením parametru, protože distribuce bitových chyb je náhodná a proto se výsledky liší v závislosti na tom, jakou informaci nesl poškozený bit.
Série grafů přehledně zobrazuje naměřené výsledky. Vodorovná osa reprezentuje simulovanou chybovost (BER) a na svislé ose je zobrazena hodnota PSNR (v dB). Jedná se o jeden (společný) graf, pokaždé je však zvýrazněna jiná kombinace kodeku a bitového toku.
Je jasně videt, že kodek MPEG-2 je proti bitovým chybám výrazně odolnější než kodek H.264 (to se projeví vyšší hodnotou PSNR). Vzhledem k tomu, že u staršího kodeku MPEG-2 není redundance vyhledávána tak účinně, je pravděpodobnější, že chybný bit ponese informaci o rozdílovém signálu (koeficienty DCT) a chyba se tak projeví pouze poruchou v jednom makrobloku. Dále je vidět, že kodek H.264 je na bitové chyby velmi citlivý a to už při nízkých hodnotách BER. Kodek MPEG-4 AVC má dnes zhruba dvakrát větší účinnost než MPEG-2 a je proto i adekvátně náchylnějsí na bitové chyby.
Dalším zajímavým zjištěním je fakt, že oba kodeky se stávají nepoužitelnými pro hodnoty BER cca. 10-4 a vyšší.
Naměřené hodnoty MSE a PSNR nejsou přímo funkcí BER, protože záleží na tom, který bit byl poškozen. Proto vykazují naměřené hodnoty rozptyl.
V neposlední řadě je nutné všimnout si, že ani u kodeku MPEG-2, ani u H.264 nezáleží na bitovém toku. Varianty 1000 kbit/s i 500 kbit/s vykazují srovnatelné chování při stejné úrovni BER. Míra poškození obrazu tedy není závislá na bitovém toku.
V tomto článku jsme se zabývali testováním kodeků MPEG-2 a H.264 z hlediska odolnosti proti bitovým chybám. Ani jeden z těchto kodeků není navržen s vědomím chybového kanálu a proto se v praxi zakódovaný tok vždy doplňuje ochranným kódem. Nastáváji však případy, kdy vzroste úroveň šumu nad kritickou mez a ochranný kód ztrácí schopnost odhalit a opravit všechny chybné bity.
Zjistili jsme, že podle předpokladu kodeky nesnášejí bitové chyby příliš dobře. Mnohem větší problémy má kodek H.264 (oproti kodeku MPEG-2). Proto doporučujeme využít část bitového toku, který nám pokročilejší zdrojová komprese kodeku H.264 ušetřila pro mnohem silnější ochranný kód než pro případ toku MPEG-2.
Dále jsme zjistili, že odolnost proti bitovým chybám nezávisí na bitovém toku, proto se při jeho volbě můžeme řídit pouze požadavkem kvality.
Je však nutné dodat, že obraz komprimovaný pomocí MPEG-4 AVC nevykayuje blokovou strukturu tak jako MPEG-2. Chyby vzniklé v obraze tak nejsou chybné makrobloky, které jsou daleko viditelnějsí. Navíc je vhodné a pro přesné výsledky nutné výsledný dopad poškození hodnotit subjektivními metodami. Metriky MSE a PSNR se subjektivním dojmem korelují jen omezeně. Pro základní přehled o dopadu poškození na výsledný obraz však stačí.
Práce byla podpořena MSM 6840770014 "Research of perspective information and communication technologies" MŠMT České republiky.
[1] ISO-IEC 13818: Generic coding of moving pictures and associated audio information; Nov. 19394
[2] Richardson. I. E. G. H.264 and MPEG‑4 Video Compression:
Video Coding for Next-generation Multimedia, Wiley, Chichester,
ISBN 0470848375, 2003.
[3] Schäfer, R. et al. The Emerging H.264/AVC Standard, EBU Techical Review, Jan. 2003
[4] x264 free H.264/AVC encoder and decoder library, http://www.videolan.org/developers/x264.html
[5] FFmpeg cross-platform video coding tools, http://ffmpeg.mplayerhq.hu/