V tomto článku se zabýváme testováním kodeků MPEG-2 a H.264 z hlediska odolnosti proti bitovým chybám. Datový tok je testován ve své nechráněné podobě což simuluje například příjem digitálního televizního vysílaní v celé šířce běžných mezí chybovosti nebo významněji poškozený nosič video signálu.
Transmission Error Ressillience of MPEG-2 and H.264 Codecs - Abstract
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
Úvod
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, ...).
Použité kodeky
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.
Zjednodušený princip kódovani videa
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í.
Chybový kanál
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ů.
Testovací prostředí a metodika výpočtu
Pro kodek H.264 byla použita open-source knihovna x264 [4]. Jedná se o
poměrně novou implementaci, ale přesto jsou výsledky kódování i dekódování
bezchybné a kvalitní. Jako kodér i dekodér kodeku MPEG-2 byla použita výborná
a časem dokonale odladěná open-source sada nástrojů FFmpeg [5].
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
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.
Výsledky měření a jejich interpretace
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.
Závěr
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.
Literatura
[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/