Komprese ve videokomunakaci v multimediálních sítích

Miroslav Divoký

Zpracování obrazu a algoritmy v C# od 227 Kč

Digitální fotografie a zpracování obrazové informace se v dnešní době neomezuje pouze na pořízení a reprodukci snímku. Po pořízení snímku často následuje jeho zpracování. Má-li být cílem další úprava obrazu nebo dokonce jeho rozpoznávání algoritmem, který není obsažen v softwaru, který máme k dispozici, je třeba takový algoritmus napsat. Aby bylo možno algoritmus efektivně využít, je třeba pochopit principy algoritmů zpracování obrazu. Cílem knihy je seznámit čtenáře s tím, jak algoritmy pro zpracování obrazu fungují a jaké mají vlastnosti.

Vysvětlení je doplněno příklady a výpisy zdrojových kódů v jazyce C#. Velkou výhodou knihy je, že zdrojové kódy jsou pečlivě zpracovány a jsou pro čtenáře knihy ke stažení na této kartě knihy v sekci Download. Na začátku knihy je vysvětlen proces digitalizace obrazu. Jsou zmíněny nejpoužívanější formáty pro ukládání obrazu a vysvětleny barevné modely (RGB, CMYK, Lab) včetně užitečných vztahů. Následuje vysvětlení principů jednoduchých úprav obrazu: jasové transformace jako je negativ, gama korekce nebo změna kontrastu. Pozornost je věnována histogramu a úpravám založených na změně histogramu. Jsou vysvětleny geometrické transformace a interpolace jasu. Dále je věnována pozornost filtraci obrazu v prostorové doméně, vyhlazování, ostření, hledání hran a je vysvětlen princip konvoluce a korelace. Čtvrtá kapitola pojednává o reprezentaci objektů v obraze, segmentaci obrazu, metodám prahování, hledání a spojování linií v obraze. Ukázka obsahuje příklad detekce očí v obličeji. Pátá kapitola se týká hledání kostry obrazu včetně praktického použití na obrazu otisku prstu, ze kterého jsou následně extrahovány některé charakteristické rysy. Poslední kapitola je věnována vodoznakům a ukrývání informace do obrazu. Jsou vysvětleny principy ukrývání informace do obrazů bez komprese (např. metoda LSB) i do obrazu s kompresí JPEG.

Algoritmy jsou pečlivě zpracované v C# a kompletní zdrojové kódy k příkladům v knize lze stáhnout ze sekce download - doprovodný software. I čtenáři se znalostí jiného programovacího jazyka (VB, C++, Java…) mohou algoritmy využít. Text knihy je zpracován s maximální stručností a se snahou ukázat motivaci pro použití daného algoritmu v praxi.

Kniha je určena zejména vysokoškolákům a pokročilejším středoškolákům.

Stručný obsah * obsah knihy 1. Digitální fotografie a digitalizace obrazové informace 2. Filtrace obrazu transformace jasu 3. Filtrace zahrnující okolí 4. Segmentace obrazu, reprezentace objektů v obraze, detekce očí v obličeji 5. Ztenčování – hledání kostry obrazu, hledání některých rysů v otisku prstu 6. Steganografie a vodoznaky * obsah přílohy (viz sekce Download) o Načtení a uložení bitmapového obrázku o Převod barevného obrázku do obrázku s odstíny šedé o Vytvoření negativu obrázku o Aplikace gama korekce na obrázek o Použití logaritmické transformace o Vytvoření histogramu obrázku o Roztažení kontrastu obrázku o Vyrovnání (ekvalizace) histogramu o Přímá histogramová specifikace o Jednoduchá metoda vyhlazení obrazu o Gaussovo vyhrazování obrazu o Vyhlazování pomocí mediánu o Vyhlazení pomocí mediánu výběrem položky o Jednoduchá metoda prahování obrazu o Prahování obrazu pomocí metody Otsu o P procentní prahování obrazu o Bilineární interpolace obrazu o Jednoduchá metoda warpingu obrazu o Filtrování obrazu metodou průměrování, filtrem 3x3 o Filtrování obrazu pomocí Gaussian filtru s 11 elementy o Detekce hran pomocí metody Roberts o Prewitova metoda detekce hran o Sobelova metoda detekce hran o Laplace operátor o Laplacian gaussianu o Příklad univerzální interaktivní konvoluce o Převodový program hodnoty RGB na HSI a CIELAB a zpět o Ukázková aplikace pro vytvoření podpisu elementárních objektů o Ukázková aplikace práce s otiskem prstu o Ukázka Hough transformace o Příklad použití modelu CIELAB při úpravě obrazu o Jednoduchá metoda použití LSB steganografie o Vkládání vodoznaků prostřednictvím množin pixelů o Ukázková konzolová aplikace pro nalezení očí na portétu osoby o Pomůcka pro návrh koeficientů masek konvolučních FIR filtrů v Excelu

Ztrátová komprese obrazových dat pomocí JPEG

Obsah

1. Pět způsobů provádění komprese obrazových dat dle standardu JPEG v sekvenčním režimu

2. Posloupnost operací při základní ztrátové kompresi pomocí JPEG

3. Transformace barev do barvového prostoru YC b C r

4. Redukce (podvzorkování) barvonosných složek

5. Dopředná diskrétní kosinová transformace

6. Kvantování DCT koeficientů pomocí kvantizačních tabulek

7. Kódování kvantovaných DCT koeficientů (aritmetické a Huffmanovo kódování)

8. Uložení zakódovaných dat do souboru typu JFIF

9. Obsah dalšího pokračování tohoto seriálu

1. Pět způsobů provádění komprese obrazových dat dle standardu JPEG v sekvenčním režimu

V předchozí části tohoto seriálu jsme se seznámili se základními charakteristikami standardu JPEG, pomocí kterého je možné provádět ztrátovou i bezeztrátovou kompresi rastrových obrazových dat, zejména plnobarevných (truecolor) fotografických materiálů, monochromatických rentgenových a ultrazvukových snímků, kopií naskenovaných dokumentů obsahujících obrázky apod. Ve standardu JPEG jsou definovány celkem čtyři režimy činnosti, které může kodér i dekodér podporovat (aplikace konkrétního režimu bývá nazývána kódování). Tyto režimy jsou sepsány a stručně charakterizovány v první tabulce:

Režim Ztrátové kódování? Stručná charakteristika sekvenční ano nejméně náročné na paměť, nejpoužívanější progresivní ano poněkud více náročné na paměť, určeno pro přenos obrázků po síti bezeztrátový ne predikční kódování, není příliš známé ani používané/pod­porované, kompresní poměr 1:2 hierarchický ano mnoho rozlišení v jednom snímku, rychlé náhledy, podpora zobrazení, tisku, osvitu

V dnešní části nás bude zajímat pouze první režim činnosti, při kterém jsou obrazová data zpracovávána sekvenčně, konkrétně po blocích 8×8 a 16×16 pixelů. Sekvenční zpracování přináší některé výhody. Jednoznačně přínosný je fakt, že se při kódování i dekódování využívá pouze minimum operační paměti, která může mít kapacitu v řádech několika desítek kilobytů. Jen díky tomu je možné konstruovat například digitální fotoaparáty vytvářející fotografie složené z několika milionů pixelů, i když kapacita operační paměti na čipech ve fotoaparátu je mnohdy několikanásobně menší (ve skutečnosti jsou ony miliony pixelů uváděných v letáčcích velmi zavádějící).

Také při dekódování obrázku z formátu JPEG do nekomprimovaného rastru je sekvenční režim výhodný – obrázek se například může při přenosu po síti či při načítání z pomalého paměťového média postupně zobrazovat v prohlížeči a i dekodér si vystačí pouze s malým množstvím paměti. Některé tiskárny s menším množstvím paměti také dokážou začít s tiskem obrázku ve formátu JPEG bez nutnosti ho celý načíst (provádí se současně tisk jedné části a dekódování a rasterizace části navazující). Takto sofistikovaných tiskáren však pravděpodobně bude ubývat na úkor win-tiskáren, u kterých se rastrování provádí přímo v počítači a tiskárna obsahuje pouze relativně malý buffer.

V sekvenčním režimu existuje celkem pět způsobů (resp. cest), kterými mohou být data zpracovávána. Způsoby zpracování se od sebe liší především bitovou hloubkou barevných vzorků na vstupu, způsobem výpočtu DCT spolu s kvantizací a konečně kódováním kvantizovaných vzorků. Na vstupu se mohou nacházet osmibitové či dvanáctibitové barvové vzorky (viz třetí kapitolu), výpočet DCT může být prováděn standardním (baseline) či rozšířeným (extended) algoritmem a kódování může být buď aritmetické či Huffmanovo. Všechny způsoby jsou přehledně zobrazeny na následujícím diagramu:

Obrázek 1: Pět způsobů zpracování dat při ztrátové kompresi

V dalším textu se budeme zabývat především nejpoužívanějším způsobem komprese: použitím osmibitových barevných vzorků, výpočet DCT (diskrétní kosinové transformace) a kvantizace se provádí pomocí standardního algoritmu (baseline) a výsledek tohoto zpracování je zakódován Huffmanovým kódem. Norma JPEG předepisuje, že tento způsob zpracování obrazových dat musí podporovat jakýkoli kodér i dekodér, ostatní způsoby jsou pouze volitelné, což také většina aplikací a aplikačních knihoven pro práci s JPEGem dodržuje. Většina obrázků uložených v JFIF/JPEG je vytvořena právě tímto způsobem.

2. Posloupnost operací při základní ztrátové kompresi pomocí JPEG

Při ztrátové kompresi obrazových dat pomocí standardu JPEG se vstupní rastrová data podrobují několika za sebou jdoucím operacím, jak je schematicky znázorněno na druhém obrázku:

Nejprve je provedena transformace barev z barvových prostorů RGB, CMYK či dalších (například CCD čipy mají vlastní barvový prostor) do barvového prostoru YC b C r . Tato transformace je bezeztrátová, tj. nedochází při ní k žádné ztrátě informací o obrázku. Dále může podle konfigurace kodéru docházet k podvzorkování barvonosných složek. V barvovém prostoru YC b C r nese složka Y informaci o světlosti pixelu a složky C b a C r informaci o barvě. Právě poslední dvě složky mohou být podvzorkovány, čímž dojde ke snížení objemu dat, ale i k určité (mnohdy zanedbatelné) ztrátě informace. Další kroky jsou odděleně prováděny pro složku Y a pro barvonosné složky. Na bloky 8×8 hodnot je aplikována diskrétní kosinová transformace (DCT), která je už z principu bezeztrátová. Výsledkem DCT jsou bloky 8×8 hodnot, tentokrát ležící ve frekvenční rovině. Bloky DCT o velikosti 8×8 hodnot jsou kvantovány pomocí vypočtených kvantizačních tabulek. Výsledkem je stav, kdy je mnoho hodnot v tomto bloku nulových, čehož se využívá v následujícím kroku zpracování. Právě při kvantizaci může docházet k největší ztrátě informace a tím i ke kýženému snížení bitové rychlosti (bitrate). Kvantované DCT koeficienty jsou následně kódovány pomocí aritmetického či Huffmanova kódování. Aritmetické kódování je sice účinnější o cca 10%, je však mnohem výpočetně i aritmeticky náročnější. Proto se u většiny obrázků používá Huffmanovo kódování, které je sice méně účinné, ale může být prováděno i na málo výkonných čipech (například v mobilních telefonech či fotoaparátech). Posledním krokem zpracování je uložení vytvořených dat do souboru typu JFIF/JPEG. V podstatě se jedná o „obalení“ vzniklého datového toku vhodnou hlavičkou, přidání dalších doplňujících informací (včetně populárního EXIF či náhledového obrázku) a zakončení celého souboru patičkou.

Obrázek 2: Posloupnost operací při základní ztrátové kompresi pomocí JPEG

3. Transformace barev do barvového prostoru YC b C r

Prvním krokem, který se při komprimaci rastrových obrazových dat pomocí standardu JPEG provádí, je transformace barev ze zdrojového barvového prostoru (kterým může být například RGB, CMYK nebo barvový prostor CCD čipu umístěného v digitálním fotoaparátu) do barvového prostoru nazvaného poněkud záhadně YC b C r . Tento barvový prostor je odvozen z barvového prostoru YUV, který je použit například v některých normách televizního vysílání (konkrétně v normě PAL, zde popisovaný barvový model je použit v podceňované normě SECAM). Složka Y nese informaci o světlosti pixelů, složky C b a C r pak rozdílové hodnoty barev pixelů (rozdíl se počítá oproti složce Y).

b

r

Obrázek 3: Blok transformace barev do barvového prostoru YC

Jedná se o barvový prostor navržený především pro přenos videosignálu nabízející kompatibilitu s černobílou televizí a plné využití šířky pásma televizního kanálu, proto se s ním NEsetkáme například v grafických editorech – ty jsou zaměřeny především na koncové uživatele, a proto jim nabízí buď intuitivně použitelné barvové prostory (zejména HSV a HLS) nebo barvové prostory odpovídající technologii zobrazení a tisku (RGB, CIE-xy, CMYK).

Pro přepočet barev pixelů z barvového prostoru RGB do barvového prostoru YC b C r je možné použít následující trojici vzorců. Ty se v literatuře většinou zapisují pomocí násobení transformační matice vektorem RGB, tato matematická operace se však v HTML formátu špatně zapisuje, proto jsem zvolil „programový“ zápis. Předpokladem je, že všechny barvové složky (R, G, B, Y, C b , C r ) jsou uloženy jako celá čísla v rozsahu 0..255, tj. jako byty:

Y = 0,299 R + 0,587 G + 0,114 B Cb = - 0,1687 R - 0,3313 G + 0,5 B + 128 Cr = 0,5 R - 0,4187 G - 0,0813 B + 128

Zpětný přepočet (ten provádí dekodér umístěný například v prohlížečce obrázků) se provede pomocí vzorců:

R = Y + 1.402 (Cr-128) G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128) B = Y + 1.772 (Cb-128)

Některá literatura uvádí odlišné vzorce, ty ovšem platí pro normu YC b C r (konkrétně CCIR 601), ve které má signál Y rozsah <0, 1> a signály C b a C r rozsah ← 0.5, 0,5> (to je ovšem z hlediska zpracování na počítači nevýhodné). V následující části tohoto seriálu si ukážeme jednoduchý demonstrační příklad, který bude provádět přepočet obrázků z barvového prostoru RGB právě do prostoru YC b C r .

4. Redukce (podvzorkování) barvonosných složek

Dalším krokem, který zpracovává rastrová data, je redukce neboli podvzorkování barvonosných složek. Idea podvzorkování je následující: lidské oko obsahuje několik typů senzorů reagujících na dopadající světlo. Některé senzory snímají (a následně přenáší do mozku) informace o světlosti, další senzory jsou citlivé na různé barevné odstíny. Vzhledem k tomu, že senzorů, které snímají informace o světlosti, je více, může lidské oko rozpoznat jas objektů s větší přesností („rozlišením“) než barvu objektů. Právě tento poznatek je využit při podvzorkování barvonosných složek. Zdaleka se nejedná pouze o vlastnost JPEGu, velmi podobně (a někdy i mnohem drastičtěji) se podvzorkování provádí například při kódování digitální televize.

Obrázek 4: Blok redukce (podvzorkování) barvonosných složek

Podvzorkování pracuje následujícím způsobem: složka Y, která nese informaci o světlosti jednotlivých pixelů, není podvzorkována, protože světlost lidské oko rozpoznává ve větším rozlišení. Naproti tomu barvonosné složky C b a C r mohou být podvzorkovány, a to tak, že se jejich hodnota vypočítá jako průměr buď ze dvou sousedních pixelů na řádku, nebo ze čtyř pixelů tvořících čtverec 2×2 pixely. Při výpočtu průměru ze dvou sousedních pixelů dochází ke zmenšení objemu dat (pro tyto dva pixely) ze 6 bytů na 4 byty, tj. na cca 66%. Větší úspory objemu se dosáhne při použití čtyř pixelů tvořících informaci o barvě, kde se původních 12 bytů sníží na 6 bytů, tj. na 50%. Je důležité si uvědomit, že se zde jedná o ztrátový převod, protože už nemáme informace o barvách všech pixelů samostatně, ale pouze sousedů v blocích buď 2×1 pixel nebo 2×2 pixely.

5. Dopředná diskrétní kosinová transformace

Následujícím krokem definovaným v normě JPEG je provedení diskrétní kosinové transformace (DCT – Discrete Cosinus Transformation). DCT se provádí odděleně pro jednotlivé barvové složky barvového modelu YC b C r . Pro každou barvovou složku je nejprve provedeno rozdělení celého obrázku na pravidelné bloky o velikosti 8×8 hodnot. Rozdělování se provádí postupně, tj. není zapotřebí, aby byl celý obrázek uložen v operační paměti (to je výhodné zejména při implementaci JPEGu na specializovaných čipech). Pokud šířka či výška obrázku není dělitelná osmi (popř. šestnácti v případě barvonosných složek – nesmíme zapomenout na podvzorkování barev), jsou zbylé hodnoty, které se v obrázku nenacházejí, dopočítány tak, aby se co nejvíce snížil podíl energie ve vyšších frekvencích (viz následující odstavec).

Obrázek 5: Blok dopředné diskrétní kosinové transformace

DCT je jednoznačná transformace v tom smyslu, že se žádná informace při jejím provedení neztrácí. Daný blok o velikosti 8×8 hodnot se převádí na jiný blok o téže velikosti 8×8 hodnot, tyto hodnoty se ovšem nenacházejí v „časové“ doméně jako pixely v komprimovaném obrázku, ale v doméně „frekvenční“. První vypočtený koeficient představuje stejnosměrnou složku (DC), tj. ve skutečnosti průměrnou hodnotu celého vstupního bloku. V dalších transformovaných koeficientech jsou uloženy amplitudy střídavých kosinových složek (AC) různých celočíselných frekvencí.

Jak si ukážeme na vzorcích v následující části tohoto seriálu, je diskrétní kosinová transformace obdobou rychlé Fourierovy transformace (FFT), ovšem s tím rozdílem, že jsou vypočteny pouze kosinové složky, které mají jeden význačný rys: kosinus je sudá funkce, tj. při transformaci barevných přechodů (typických pro mnoho obrázků) nedochází po zpětné transformaci k zákmitům jako v případě FFT. Zákmity by se projevily nežádoucími dvojitými hranami (duchy) na ukládaných obrázcích. Plynulý barevný přechod je možné považovat za 2D variantu jednorozměrného signálu tvořícího pilovitý průběh.

6. Kvantování DCT koeficientů pomocí kvantizačních tabulek

Ústřední částí ztrátové komprimace JPEG je kvantování koeficientů vypočtených pomocí diskrétní kosinové transformace. V předchozí kapitole jsme si řekli, že výsledkem DCT jsou bloky o velikosti 8×8 hodnot. U typických obrázků se největší hodnoty nachází v koeficientech reprezentujících stejnosměrnou složku a také amplitudy kosinových průběhů malých frekvencí. Vyšší frekvence se v obrázcích samozřejmě také vyskytují (například na hranách nebo u textu), tyto části obrázku jsou však nejvíce postiženy ztrátovou komprimací a dochází k jejich mnohdy na první pohled viditelnému rozmazání. Tato ztráta je způsobena právě kvantováním koeficientů. Každý blok 8×8 hodnot je celočíselně vydělen hodnotami uloženými v takzvaných kvantizačních tabulkách (jedná se o dělení typu „položka po položce“).

Obrázek 6: Blok kvantování DCT koeficientů pomocí kvantizačních tabulek

Kvantizační tabulky jsou vytvořeny tak, aby obsahovaly nízké hodnoty u stejnosměrné složky i koeficientů amplitud nízkých frekvencí a naopak vysoké hodnoty u koeficientů amplitud vysokých frekvencí. Výsledkem dělení je nový blok 8×8 hodnot, který většinou obsahuje u vysokých frekvencí nulové hodnoty (nezapomeňme, že se používá celočíselné dělení, právě zde dochází k největší ztrátě informace). Ve vytvoření nulových hodnot spočívá význam DCT a kvantování: sady nulových hodnot jsou velmi dobře kódovatelné pomocí Huffmanova i aritmetického kódování. Blok se navíc prochází metodou cik-cak (zig-zag), takže se nulové hodnoty nachází za sebou, což dále zefektivňuje kódovací rutiny a nabízí použití slovníkových metod. Na správné volbě kvantizačních tabulek závisí jak komprimační poměr, tak i kvalita výsledného obrázku.

7. Kódování kvantovaných DCT koeficientů (aritmetické a Huffmanovo kódování)

Z předchozího bloku (kvantování DCT koeficientů) přichází datový tok, který obsahuje mnoho nulových hodnot. Tento datový tok je podroben buď aritmetickému nebo Huffmanovu kódování. Huffmanovo kódování, které musí podporovat každý kodér i dekodér JPEGu, spočívá ve výstavbě slovníku často se opakujících číselných posloupností a zápisu těchto posloupností pomocí kratších kódů. Naopak, méně často se opakující posloupnosti mohou být zapsány pomocí delších kódů. V navazujících částech se tímto kódováním budeme zabývat podrobněji.

Místo Huffmanova kódování je možné použít i kódování aritmetické, které v průměru vytváří soubory, jež jsou o cca 10% menší. Aritmetické kódování, ve kterém jsou posloupnosti považovány za binárně zapsaná čísla menší než 1 roztříděná do intervalů (která je možné po úpravách zaokrouhlovat), je časově náročnější a také bylo zatíženo několika patenty a patrně z těchto důvodu se příliš často nepoužívá. I aritmetickým kódováním se budeme podrobněji zabývat v navazujících částech tohoto seriálu.

Obrázek 7: Blok kódování kvantovaných DCT koeficientů pomocí aritmetického nebo Huffmanova kódování

8. Uložení zakódovaných dat do souboru typu JFIF

Posledním krokem je uložení zakódovaných dat do souboru typu JFIF. Tento krok již není v normě JPEG popsán, neboť se jedná o proces závislý na použitém systému. JPEG je totiž možné vkládat do mnoha diametrálně odlišných souborových formátů, například PostScriptu, PDF, TIFFu, MJPEG (některé soubory s koncovkou MOV vytvářené digitálními fotoaparáty) apod. Pravděpodobně nejpopulárnější jsou však soubory ve formátu JFIF, které obsahují rastrová data komprimovaná pomocí metody JPEG. Aby byla situace o něco málo zamotanější, mají tyto soubory většinou koncovku „.jpeg“ resp. „.jpg“ a nikoli „.jfif“. JFIF obaluje zkomprimovaná rastrová data informační hlavičkou, koncovkou souboru, náhledovým obrázkem (nemusí být vždy přítomen) a dalšími rozšiřujícími bloky, například dnes populárním blokem EXIF. Opět se jedná o téma, kterým se budeme blíže zabývat v některé navazující části.

Obrázek 8: Blok ukládání zakódovaných dat do souborů typu JFIF

9. Obsah dalšího pokračování tohoto seriálu

V následující části tohoto seriálu si podrobněji popíšeme způsob výpočtu dopředné diskrétní kosinové transformace spolu s kvantováním DCT koeficientů pomocí kvantizačních tabulek. Tyto dva funkční bloky tvoří ústřední část celé ztrátové komprimace pomocí JPEGu, proto je pochopení jejich funkce pro další výklad klíčové.

Komprese ve videokomunakaci v multimediálních sítích

2004/45 - 27.8.2004

Komprese ve videokomunakaci v multimediálních sítích Obsah

Ing. Stanislav Uchytil.

Ústav telekomunikací, FEI, VUT v Brně.

email :

Současný rozvoj digitálních přenosových zařízení, u kterých dochází k prorůstání s Internetem, a poskytování nejen hlasových, ale i multimediálních služeb, přináší zvýšený zájem o metody efektivního přenosu informací v digitální podobě a tím právě i o metody komprimace. Lze říci, že komprimace je metodou efektivní reprezentace zdrojového signálu v digitálním tvaru nejnižším možným počtem bitů při zachování požadavku přijatelné ztráty věrnosti. Zdrojovým signálem, který potřebujeme přenášet či uchovat, tedy uvažujeme obraz, zvuk nebo video.

Úvod

Metodakomprimace může být ztrátová a bezztrátová. Při bezztrátové komprimaci je možné rekonstruovat dokonale původní signál zdroje informací. Naopak ztrátová komprese již neumožňuje dokonalou zpětnou rekonstrukci původního signálu, avšak tyto metody umožňují dosáhnout vyšší komprimační poměry, což je s ohledem na paměťově náročná média, jako je video i zvuk, žádoucí a v mnoha případech nutností. Při ztrátové komprimaci vycházíme obvykle z modelu vnímání informací uživatelem a podle požadavku na kvalitu, respektive rozsahu vnímání, redukujeme objem přenášené informace. V případě akustického signálu nedokonalost lidského sluchu, shrnuta do tzv. psychoakustického modelu, umožňuje odstranění dat, lidským sluchem nepostižitelných a tedy redundantních, bez znatelné újmy na kvalitě reprodukovaného signálu. Je využíváno omezení frekvenčního rozsahu přenášeného pásma, kde je člověk schopen zachytit zvuk v rozsahu 20Hz až 20kHz. Není také zapotřebí při komprimaci uvažovat slabší signál, který v přítomnosti silnějšího signálu nedokážeme vnímat, což využívá metoda maskování frekvencí. A konečně metoda časového maskování je založena na setrvačnosti sluchu, kdy po zániku silného signálu chvílí trvá, než začneme vnímat současně působící signál slabší. Rovněž i lidské oko není dokonalé a rozlišovací schopnost zraku má také jistá omezení, která se při komprimaci velmi často využívají.

Většina digitálních obrázků obsahuje ve větší či menší míře redundantní čili nadbytečné informace. To znamená, že pokud použijeme efektivní metodu komprese, můžeme dosáhnout značné redukce množství informací, potřebných k přenosu obrázků nebo videa. Redundanci můžeme nalézt na úrovni jednotlivých obrazových prvků, řádků nebo rámců, pokud je scéna statická anebo se pohybují jen některé její části. Potíže s implementací videa jsou způsobovány obrovskými nároky na šíři přenosového pásma pro videodata. Vysoká rychlost přenosu omezuje prakticky použití videa a způsobuje, že pokud chceme přehrávat video v dostatečné kvalitě v reálném čase, stává se komprimace videa nutností.

1 Přehled komprimačních algoritmů

V minulosti většina digitálních systémů využívala motody JPEG (Joint Photographic Experts Group) pro kompresi digitálních video dat. Ovšem JPEG technologie je původně navržena pro statické snímky, proto JPEG komprimuje každý snímek (frame) zvlášť a tudíž jsou data jednotlivých snímků dostupná odděleně bez potřeby dalších snímků.

Pro digitální video bylo vyvinuto a implementováno mnoho algoritmů komprimace, mezi které kromě dvou osvědčených a nejpoužívanější, jako je standard MPEG(Moving Pictures Expert Group) pro intenzivní aplikace videa a standard H.261/H.263 pro videokonference, patří ještě M-JPEG(Motion-Joint Photographic Experts Group), Vlnky a Fraktály. Fraktální komprimace, založená na základě fraktální geometrie, je dobře využitelná pro komprimaci přírodních scenérií s velkou barevnou hloubkou, která ovšem vyžaduje velký výpočetní výkon. Kompresní algoritmus Vlnky je založen na vlnkové transformaci a je výhodně použitelný z důvodu nepříliš složité komprimace celých obrázků. M-JPEG používá stejně jako MPEG 2-D diskrétní kosinovou transformaci na zakódování individuálních rámců a podporuje přímí přístup, na rozdíl od standardu MPEG, protože nepoužívá rozdílové informace rámců.

Již zmíněný standart H.261/H.263, obecně také nazývaný px 64 Kbps, jelikož popisuje obrazové kódování a dekódování při rychlostech p x 64 Kbit/s, dosahuje velmi vysoké poměry komprese pro přenos plně barevného pohybového videa. Tento algoritmus kombinuje kompresi uvnitř rámce s mezirámcovou kompresí a tím umožňuje dosáhnout rychlé zpracování v reálném čase. Kódování uvnitř rámce intraframe využívá redundance informací obsažených v jediném rámci, respektive obrázku. Mezirámcové kódování interframe vychází z nadbytečnosti informací zaznamenaných na více rámcích, porovnáním informací předchozích a následujících obrázků a vyloučením těchto redundantních informací umožňuje zhutnit přenášené informace.

2 Multimediální sítě

Telekomunikační služby v současnosti kladou stále větší požadavky na parametry komunikačních sítí, především díky zavádění a rozšiřování širokopásmových služeb, které integrují telekomunikaci spolu s multimediálními přenosy. Multimediální služby využívají všechny základní komunikační formy, jako je:

AUDIO (hlas, hudba),

VIDEO (videotelefon,TV)

OBRAZ (fotografie, fax)

TEXT

DATA

V této souvislosti integrace znamená, že uvedené komunikační formy mohou být současně využívány v jednom komunikačním postupu. Předpokladem k integraci je úplná digitalizace všech komunikačních forem. Tímto se vytváří možnost komprimace původních signálů před přenosem a tím i snížení požadavků na přenos.

3 Vyhodnocování kvality obrazu

V případě použití ztrátových kompresních technik dochází vlivem kvantování k nevratné ztrátě části původní informace. Tuto ztrátu lze kvantifikovat několika způsoby:

Střední kvadratická chyba (Mean Square Error - MSE) - jedná se o velmi často používanou metodu popisující kvalitu komprimovaného obrazu oproti obrazu originálnímu. Není nejvhodnější z hlediska subjektivní kvality obrazu, kdy se i obraz s velkou MSE může jevit stejně kvalitně jako originál. MSE je dána následujícím vztahem:

(3.1)

kde M a N jsou rozměry obrazu, jsou obrazové body (pixels) původního obrazu a jsou obrazové body rekonstruovaného obrazu.

Špičkový poměr signál - šum (Peak Signal to Noise Ratio - PSNR) - vychází ze střední kvadratické chyby MSE a je dána vztahem:

(3.2)

NRMSE (Normalised Root Mean Square Error) - tato metoda je z hlediska subjektivní kvality obrazu nejvhodnější a její procentuální vyjádření chyby je velmi výstižné.

Je dána vztahem :

(3.3)

4 Softwarová realizace komprimace obrazu metodou MPEG 1

Na základě poznatků uvedených v předešlých kapitolách byl realizován program v jazyce C++ pro kompresi obrazu metodou MPEG 1. Celý kodér je rozdělen do pěti základních bloků:

Blok pro určování typů snímků (I, P, B), přemisťování snímků (posloupnost vstupních snímků je odlišná od posloupnosti snímků při kódování), určování GOP. Načítání snímků ze vstupního souboru. Vlastní kódování (DCT, kvantování, vyhodnocování vektorů pohybu, predikce, atd.). Kontrola bitové rychlosti a VBV (Video Buffer Verifikátor) . VLC kódování a ukládání bitových posloupností do výstupního souboru.

4.1 Popis realizovaného programu

Po spuštění programu se otevře základní okno (obr.5.1), ve kterém jsou umístěny ovládací prvky programu a informace o průběhu kódování. Při zvolení položky File-Open se zobrazí dialogové okno pro otevření vstupního souboru. Program pracuje se vstupními nekomprimovanými daty ve formátu typ MOVE Snímky jsou zde uloženy v klasickém RGB formátu, na začátku souboru je 16-ti bytová hlavička a za ní již následují vlastní data, kde pro každý bod jsou vyhrazeny 3 Byty (barvy R G B).

Obr.4.1 Základní okno kodéru

Po výběru souboru a jeho následném otevření se program dotáže na rozměry zpracovávaných snímků.

Horní část okna slouží pro jednoduchou editaci sekvence, pod ní jsou vlastní ovládací prvky kodéru (start, pause, stop a step - pro krokování) a základní informace o výběru (počet snímků a reálný čas vybrané sekvence). Ve spodní části jsou informace o samotném průběhu kódování (typ právě zpracovávaného snímku a procentuální vyjádření stavu kódování).

Parametry kódování se volí v položce Options-Parameters-Settings. Na obr.4.2 je zobrazeno dialogové okno se základními parametry. V boxu GOP se nastavuje velikost skupiny snímků a rozestup mezi snímky I a P. Dále se zde nastavuje frekvence s jakou se mají snímky zobrazovat (Pictures per second). Při povolení položky Constrained parameters flag provádí kodér kontrolu zda všechny nastavené parametry odpovídají doporučení pro soustavu MPEG 1.

Obr.4.2 Dialogové okno pro nastavení parametrů kodéru (záložka Frames)

Pro další možné nastavení parametrů může uživatel využít druhou část dialogového okna jak je ukázáno na obr.4.3. Zde se provádí nastavení VBV bufferu, sloužící pro plynulé zobrazování snímků při dekódování, bitové rychlosti na výstupu kodéru a přípony, kterou bude mít výstupní soubor. V boxu Modulus for mation vectors se pro jednotlivé typy snímků definují meze (v bodech) pro vyhledávání makrobloků. V položce Quantization se definují kvantizační tabulky pro jednotlivé typy snímků.

V položce View mohou být aktivována další okna, která složí pro detailní zobrazení informací o průběhu k´dování. V prvním okně (Input frame) jsou zobrazovány vstupní snímky (v pořadí kódování). Při vyvolání menu (pravé tlačítko myši) si může uživatel zvolit různé varianty zobrazení. Druhé okno (Output frame) slouží pro zobrazení výstupního snímku, a zde si může uživatel zvolit rovněž různé varianty zobrazení, ale navíc si může vybrat zda chce sledovat obraz již kompletně dekódovány, nebo podrobený DPCM, přičemž z tohoto zobrazení je patrné, která data se z původního snímku přenáší ve výstupním bitovém toku.

Obr.4.3 Dialogové okno pro nastavení parametrů kodéru (záložka Advenced)

Dále je zde možno vyvolat rozšířené okno, které se aktivuje položkou View-Statistical data. Je zde vyhodnocena kvalita (chyba po rekonstrukci) obrazu (NRMSE, MSE, PSNR) pro všechny tři složky (YUV) zvlášť.

Při dokončení kódování jsou všechny sledované údaje zprůměrovány a vypsány zvlášť pro jednotlivé typy snímků, aby mohli být dále zpracovávány.

4.2 Porovnání kvality video sekvencí

Jednotlivé nekomprimované video sekvence jsem zkomprimoval a z výsledků uvedených pro jednotlivé nastavení bitové rychlosti v následujících tabulkách je možno porovnat kvalitu. Hodnoty NRMSE a PSNR jsou zde uváděny pro jasovou složku.

Parametry kodéru byly nastaveny podle doporučení pro soustavu MPEG 1:

počet snímků v GOP : 12,

rozestup mezi snímky I a P : 3,

frekvence snímků za sekundu : 25,

standardní kvantizační tabulky,

vyhledávací meze : - snímek P : horizontální : 11 vertikální : 11 - snímek B1 - vpřed : horizontální : 3 - vzad : horizontální : 7 vertikální : 3 vertikální : 7 - snímek B2 - vpřed : horizontální : 7 - vzad : horizontální : 3 vertikální : 7 vertikální : 3

Při zvolené výstupní bitové rychlosti 1152 kb/s (doporučení pro soustavu MPEG 1) jsou výsledky zobrazeny v následující tabulce I.

Tab. I Výsledky pro výstupní bitovou rychlost 1152kb/s

Sekvence Rozměr snímků Kompresní poměr [-] NRMSE [%] PSNR [dB] Učebna 1 350x240 40,0 4,13 33,3 Učebna 2 350x240 40,0 3,00 36,2 Louka 350x240 40,0 9,54 25,5 Cesta 350x240 40,0 3,74 34,1

U všech čtyřech sekvencí je vidět při bitové rychlosti 1152kb/s již nepatrné zhoršení kvality a porovnáním získaných hodnot (viz Tab. III), je toto zhoršení kvality největší u sekvence "Louka", kde je velké množství detailů (ve spektrální oblasti velmi vysoké frekvence), a tudíž se kvantizační zkreslení projevuje nejvíce. Co do zhoršení kvality, následuje sekvence "Učebna 1", kde jsou menší barevné plochy oproti sekvenci "Učebna 2". Dále to je potom sekvence "Cesta" a "Učebna 2".

Tab. II Výsledky pro výstupní bitovou rychlost 2048kb/s

Sekvence Rozměr snímků Kompresní poměr [-] NRMSE [%] PSNR [dB] Učebna 1 350x240 22,5 2,79 36,7 Učebna 2 350x240 22,5 2,07 39,4 Louka 350x240 22,5 6,57 28,8 Cesta 350x240 22,5 2,62 37,2

Při zvětšení výstupní bitové rychlosti na 2Mb/s je největšího zlepšení dosáhnuto u sekvence "Louka" (viz Tab.IV), kde je to i vzhledem k množství detailů očekávané. U zbývajících sekvencí je zlepšení nepatrné, ač se kompresní poměr snížil téměř na polovinu.

Tab. III Výsledky pro výstupní bitovou rychlost 512kb/s

Sekvence Rozměr snímků Kompresní poměr [-] NRMSE [%] PSNR [dB] Učebna 1 350x240 89,5 6,72 29,1 Učebna 2 350x240 90,1 5,26 31,3 Louka 350x240 75,9 12,3 23,3 Cesta 350x240 90,0 5,80 30,3

Výstupní bitová rychlost 512 kb/s se již výrazně podepisuje na kvalitě zkoumaných sekvencí. Je zde již silně patrné rozostření detailů a projevuje se již zde i více bloková struktura obrazu. Výsledky zkoumaných hodnot jsou uvedeny v Tab. III. U sekvence "Louka" již není možno zvětšovat kompresní poměr, jelikož je dosaženo téměř mezní hodnoty bitového toku pro tuto danou sekvenci.

5 Závěr

Članek je zaměřen na problematiku komprese multimediálních signálů.

Z realizace přenosu videosignálu je zřejmá závislost kvality obrazu na přenosové rychlosti datového toku.

Nárůst požadavků bude způsoben přenosem stále větších a objemnějších multimediálních dat, vzniklého přechodem od analogového záznamu k digitálnímu. Bude potřeba mít kapacitně dostačující přenosové prostředky. Především nové standardy Ethernetu, jako jsou prioritní přenos, plně duplexní přenos, virtuální sítě a řada jiných.

Literatura:

[1] Vlček, K. Komprese a kódová zabezpečení v multimediálních komunikacích - přenosové barevné techniky, ISBN: 8073001349, 260 stran, 2004

[2] ČEPEK, J., FABIAN, P. Komprimace dat - principy a praxe,Computer Press, Praha 2000

[3] BLUNAR, K., VACULÍK, M. Digitálné siete integrovaných služeb, Monogarafie VŠDS, 1999

[4] RAO,K.R.-HWANG,J.J., Techniques & Standards for Images, Video & Audio Coding. Prentice Hall,N.J., 1996