Semestrální práce z předmětu KIV/MHS. Komprese statického obrazu pomocí MDCT

Podobné dokumenty
Kosinová transformace 36ACS

Kompresní algoritmy grafiky. Jan Janoušek F11125

13 Barvy a úpravy rastrového

VYUŽITÍ POČÍTAČOVÉ GRAFIKY

Konverze grafických rastrových formátů

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

Bitmapová grafika: Vrstvy - interakce (režimy prolnutí)

Webové stránky. 16. Obrázky na webových stránkách, optimalizace GIF. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch.

Webové stránky. 6. Grafické formáty pro web. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch.

KOMPRESE OBRAZŮ. Václav Hlaváč, Jan Kybic. Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání.

Využití ICT techniky především v uměleckém vzdělávání. Akademie - VOŠ, Gymn. a SOŠUP Světlá nad Sázavou

KOMPRIMACE. aneb Aby to zabralo méně místa

Informační systémy ve zdravotnictví

STRUKTURA RASTROVÝCH DAT

Komprese dat Obsah. Komprese videa. Radim Farana. Podklady pro výuku. Komprese videa a zvuku. Komprese MPEG. Komprese MP3.

IVT. Rastrová grafika. 8. ročník

BPC2E_C09 Model komunikačního systému v Matlabu

scale n_width width center scale left center range right center range value weight_sum left right weight value weight value weight_sum weight pixel

KOMPRESE OBRAZŮ. Václav Hlaváč. Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání. hlavac@fel.cvut.

12 Metody snižování barevného prostoru

Práce na počítači. Bc. Veronika Tomsová

1. ZÁKLADNÍ POJMY POČÍTAČOVÉ GRAFIKY

Programování v Pythonu

ZÁPADOČESKÁ UNIVERZITA V PLZNI

Počítačová grafika SZŠ A VOŠZ MERHAUTOVA 15, BRNO

Grafika na počítači. Bc. Veronika Tomsová


Volba zobrazení (Direct Current, Scaling) - FFT 1D, FFT 2D

Vodoznačení video obsahu

Komprese obrazu. Michal Bujalka, Ondrej Kováč. Gymnázium Botičská. Botičská 1, Praha 2

Zobrazování barev Josef Pelikán CGG MFF UK Praha.

Počítačová grafika. OBSAH Grafické formy: Vektorová grafika Bitmapová (rastrová grafika) Barevné modely

Čísla, reprezentace, zjednodušené výpočty

Reprodukce obrazových předloh

Barvy a barevné modely. Počítačová grafika

Barvy a barevné systémy Formáty obrázků pro WWW

DIGITÁLNÍ VIDEO. pokus o poodhalení jeho neskutečné obludnosti (bez jednosměrné jízdenky do blázince)

II. Úlohy na vložené cykly a podprogramy

Algoritmizace prostorových úloh

Analýza a zpracování digitálního obrazu

Rastrová grafika. body uspořádané do pravidelné matice

Fz =a z + a z +...+a z +a z =

Komprese dat (Komprimace dat)

Rastrový obraz, grafické formáty

POČÍTAČOVÁ GRAFIKA. Lenka Bednaříková

Rastrový obraz Barevný prostor a paleta Zmenšení barevného prostoru Základní rastrové formáty

Barvy a barevné systémy Formáty obrázků pro WWW

Téma: Barevné modely, formáty souborů

ASYNCHRONNÍ ČÍTAČE Použité zdroje:

Způsoby realizace této funkce:

1. Formáty grafických dat

Rastrové grafické formáty. Václav Krajíček KSVI MFF UK, 2007

GRAFICKÉ FORMÁTY V BITMAPOVÉ GRAFICE

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

Světlo. Podstata světla. Elektromagnetické záření Korpuskulární charakter. Rychlost světla. Vlnová délka. Vlnění, foton. c = ,8 km/h

Zdroj:

Kontingenční tabulky v MS Excel 2010

Úvod do počítačové grafiky

Technická kybernetika. Obsah. Principy zobrazení, sběru a uchování dat. Měřicí řetězec. Principy zobrazení, sběru a uchování dat

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

MULTIMEDIÁLNÍ A HYPERMEDIÁLNÍ SYSTÉMY. 8. Uložení a komprese statického bitmapového obrazu

Rastrové počítačové obrazy (poněkud sporně často označované jako bitmapové) jsou pravděpodobně nejběžnější variantou obrazů v počítači.

Grafické formáty. Grafické formáty. Komprese rastrového obrazu. Proč je tolik formátů pro uložení obrázků?

Signál v čase a jeho spektrum

Počítačová grafika a vizualizace I

CVIČNÝ TEST 37. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 5 III. Klíč 13 IV. Záznamový list 15

Digitální učební materiál

Práce s obrazovým materiálem CENTRUM MEDIÁLNÍHO VZDĚLÁVÁNÍ. Akreditované středisko dalšího vzdělávání pedagogických pracovníků

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

DUM 14 téma: Barevné korekce fotografie

Jasové transformace. Karel Horák. Rozvrh přednášky:

ÚROVNĚ, KŘIVKY, ČERNOBÍLÁ FOTOGRAFIE

Cykly a pole

Dokumentace programu piskvorek

aneb jak se to tam všechno vejde?

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem

VY_32_INOVACE_CTE_2.MA_04_Aritmetické operace v binární soustavě Střední odborná škola a Střední odborné učiliště, Dubno Ing.

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází

Zpracování obrazů. Honza Černocký, ÚPGM

Rastrová grafika. Grafický objekt je zaznamenán jednotlivými souřadnicemi bodů v mřížce. pixel ( picture element ) s definovanou barvou

Základy informatiky. 10 Počítačová grafika

Digitalizace dat metodika

Pracovní celky 3.2, 3.3 a 3.4 Sémantická harmonizace - Srovnání a přiřazení datových modelů

Barvy v digitální fotografii. Jaroslav Svoboda

Maturitní téma: Počítačová grafika (rastrová a vektorová grafika, grafické programy, formáty)

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Obrazovkový monitor. Antonín Daněk. semestrální práce předmětu Elektrotechnika pro informatiky. Téma č. 7: princip, blokově základní obvody

" Furierova transformace"

Struktura a architektura počítačů (BI-SAP) 5

Kurz digitální fotografie. blok 1 data/úpravy fotografií

Programátorská dokumentace

Vyšší odborná škola a Střední škola,varnsdorf, příspěvková organizace. Šablona 15 VY 32 INOVACE

Grafické formáty. poznámky k 5. přednášce Zpracování obrazů. Martina Mudrová 2004

Aplikace matematiky: komprese obrazu

POČÍTAČOVÁ GRAFIKA. Počítačová grafika 1

Transformace obrazu Josef Pelikán KSVI MFF UK Praha

Informační a komunikační technologie. Základy informatiky. 5 vyučovacích hodin. Osobní počítače, soubory s fotografiemi

Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Transkript:

Semestrální práce z předmětu KIV/MHS Komprese statického obrazu pomocí MDCT Havel Kotál (A07624) Srpen 2013

Obsah 1 Úvod... 2 2 Nástin problematiky ztrátové komprese obrazu... 3 2.1 Podvzorkování sytosti barev... 3 2.2 Kvantizace hodnot... 3 3 Komprese HPEG... 5 3.1 Převod na Y C g C o... 5 3.2 Podvzorkování... 5 3.3 Převedení na zig-zag... 7 3.4 Použití modifikované diskrétní kosinové transformace (MDCT)... 7 3.5 Eliminace záporných hodnot... 8 3.6 Kvantizace... 9 3.7 Komprese jasu a sytostních složek... 9 3.7.1 Komprese minimálním počtem bitů na maximální hodnotu (MVC)... 9 3.7.2 Komprese minimálních bitů dle kvantizace (QC)... 9 3.7.3 Komprese nejmenšími možnými bity (MBC)... 9 3.8 Komprese alfa kanálu... 12 3.9 Huffmanovo kódování... 13 3.10 Výsledný formát HPEG... 14 4 Ukázka reálných dat při kompresi HPEG... 15 5 Rozbor výsledků komprese HPEG... 16 5.1 Popis možných nastavení parametrů převodu obrázku do HPEG... 16 5.2 Přehled kompresních poměrů a kvality vzhledem k parametrům... 17 6 Porovnání komprese HPEG a JPEG... 21 6.1 Porovnání kvality obrazu na srovnatelné kompresi odstíny šedi... 21 6.2 Porovnání kvality obrazu na srovnatelné kompresi barevně... 24 7 Závěr... 26 Přehled zkratek... 27 Seznamy... 28 Obrázky... 28 Příklady... 28 Tabulky... 28-1 -

1 Úvod Účelem semestrální práce bylo vyzkoušení si implementace ztrátové komprese statického obrazu, a to za využití modifikované diskrétní kosinové transformace (MDCT) a následné porovnání výsledků se standardem JPEG. Součástí práce pak je program, který bude umět daný obrazový formát vytvořit a zobrazit, tak aby bylo možné vizuálně porovnat jeho kvalitu obrazu vzhledem ke kompresnímu poměru. - 2 -

2 Nástin problematiky ztrátové komprese obrazu Základní ideou ztrátové komprese je ořezání té informace, která je nejméně důležitá a v ideálním případě si jí uživatel ani nevšimne. Při ztrátové kompresi obrazu se běžně využívá několika způsobů, jak takovouto informaci nalézt a následně ji buď poškodit tak, aby se data lépe komprimovala, nebo ji zcela zahodit. 2.1 Podvzorkování sytosti barev Podvzorkování sytosti barev je založeno na pozorování vnímání obrazu lidským okem, které ukázalo, že oko je daleko citlivější na jas, než na sytost barev. Je tedy možné sytostní část obrazu poškodit a předpokládat daleko nižší dopad na výsledný vjem. Jelikož se v zobrazovací technice využívá skládání světla ze tří základních barev červené (R), zelené (G) a modré (B); a jedná se i o standardní formát ukládání obrazu, je nutné jej nejprve převést na takový, který nám oddělí jas od sytosti. Nejznámějším takovým barvovým systémem je pak Y C b C r, kde Y obsahuje jasovou složku obrazu a C b a C r postupně modrý a červený sytostní rozdíl. Převod z formátu RGB je pak dle JPEG následovný: Y' = 0 + 0.299 * R + 0.587 * G + 0.144 * B Cb = 128 0.168734 * R 0.331264 * G + 0.5 * B Cr = 128 + 0.5 * R 0.418688 * G 0.081312 * B a nazpět: R = Y' + 1.402 * (Cr - 128) G = Y' 0.34414 * (Cb 128) 0.71414 * (Cr - 128) B = Y' + 1.772 * (Cb 128) Pokud je obraz převeden do takovéhoto formátu, je možné složky sytostních rozdílů podvzorkovat, tedy některé hodnoty rozpustit do jejích sousedů a odstranit je. Na míře podvzorkování (množství odstraněných hodnot) samozřejmě závisí výsledná kvalita barevného podání obrazu a logicky počet hodnot, které je nutné ukládat. 2.2 Kvantizace hodnot Dalším způsobem, jak zmenšit výslednou velikost obrazu je takzvaná kvantizace. V podstatě se jedná o rozdělení hodnot do skupin a uchování si jen jejich příslušnosti k dané skupině, namísto pravé hodnoty. Aby kvantizace měla nějaký efekt, počet skupin musí být výrazně menší, než rozsah možných hodnot. Kvantizace pak zanáší tím větší chybu, čím méně skupin je v poměru k rozsahu hodnot použito. V praxi se pak počet kvantizačních skupin odvíjí od počtu bitů, který je třeba k jejich jednoznačné reprezentaci, tedy například do tří bitů můžeme zaznamenat osm různých skupin, do čtyř bitů šestnáct skupin a tak dále. Pokud chceme kvantizaci využít při kompresi obrazu, musíme opět rozlišit, jaké hodnoty jsou více a méně významné. Pro méně významné hodnoty je pak možné využít agresivnější kvantizaci a zároveň příliš nepoškodit výsledný obraz. Například ve standardní kompresi JPEG se k tomuto účelu využívá diskrétní kosinová transformace druhého typu (DCT II), která hodnoty transformuje takovým způsobem, že ty nejvýznamnější jsou řazeny na začátku. Na - 3 -

takto transformované hodnoty pak stačí použít takzvanou kvantizační matici, která obsahuje koeficienty, kterými se dané hodnoty podělí, čímž na mnoha místech vzniknou nuly a jinde výrazně menší hodnoty. Na takto upravená data lze celkem efektivně použít například run-length encoding (RLE) a osáhnout tak významné komprese. Při rekonstrukci obrazu je pak nutné kvantizované hodnoty kvantizační maticí naopak vynásobit a případně výsledný obraz vylepšit různými filtry. - 4 -

3 Komprese HPEG Komprese HPEG je inspirována standardní kompresí JPEG, místo DCT II ovšem využívá modifikované kosinové transformace (MDCT), která by na rozdíl od DCT II neměla trpět hrubými přechody na hranicích jednotlivých bloků. Dále formát HPEG přidává podporu alfa kanálu obrazu. HPEG komprese je docíleno následujícími kroky. 3.1 Převod na Y CgCo HPEG na rozdíl od formátu JPEG vnitřně využívá barvový systém Y C g C o, který se vyznačuje především jednodušší implementací a umožňuje převod z a do formátu RGB v celých číslech. Převod z RGB do Y C g C o vypadá takto: Y' = (G + (R + B) / 2) / 2 Cg = (G - (R + B) / 2) / 2 + 128 Co = (R - B) / 2 + 128 a nazpět: R = Y' - Cg + Co G = Y' + Cg - 128 B = Y' - Cg - Co + 256 3.2 Podvzorkování V HPEG mohou být podvzorkovány složky C g a C o, a při extrémních kompresích i alfa kanál. Využívá se podvzorkování 4:2:0, které zmenší původní kanál na čtvrtinu jeho velikosti a to tak, že hodnoty podvzorkované složky vypočte jako vážené průměry z okolí každé druhé hodnoty z každého druhého řádku původní složky, a to následovně: v = 0.25 * (0.25 * (lt + rt + lb + rb) + 0.5 * (mt + lm + rm + mb) + mm) kde v je zprůměrovaná hodnota ve výsledné podvzorkované složce, a ostatní hodnoty jsou umístěny v původní složce dle Obr. 1, který znázorňuje také jejich váhy přispívající do výsledného průměru. lt mt rt 1/16 1/8 1/16 lm mm rm 1/8 1/4 1/8 lb mb rb 1/16 1/8 1/16 Obr. 1 Nákres průměrování hodnot při podvzorkování Takto ochuzená složka obsahuje čtvrtinu dat, a významně tak přispívá ke zlepšení kompresního poměru výsledného obrazu. Pro zobrazení obrazu se pak obdobným způsobem musejí chybějící body dopočítat, čímž vzniknou ve výsledném obraze drobné barevné odchylky od obrazu původního. Příklady - 5 -

vizuálního poškození obrazu podvzorkováním je možné vidět na Obr. 2, kde v první řada obsahuje originální obraz rozložený na složky Y, C g a C o a obraz opět složený a převedený do RGB, druhá řada pak obsahuje navíc podvzorkované složky C g a C o, třetí řada pak dvojitě podvzorkované složky C g a C o (jde o podvzorkování již jednou podvzorkované složky, tedy výsledek obsahuje 1/16 původních dat), a nakonec čtvrtá řada obsahuje oproti řadě předchozí podvzorkování alfa složky. Obr. 2 Přehled vlivu podvzorkování sytostních složek na výslednou barevnou kvalitu obrazu Z Obr. 2 je patrné, že již při jednoduchém podvzorkování dohází k postřehnutelnému barevnému posunu, a to především v oblasti levého ucha vyobrazené lišky. S dvojitým podvzorkováním se barevný posun ještě prohlubuje a je na první pohled patrný. Zvětšený detail u každého z podvzorkování je možné vidět na Obr. 3 a Obr. 4. - 6 -

Obr. 3 Detail vlivu podvzorkování Obr. 4 Detail vlivu dvojitého podvzorkování 3.3 Převedení na zig-zag Každá ze složek obrázku je po blocích (standardně 8 x 8 pixelů) převedena pomocí vzoru zig-zag (viz Obr. 5) na pole. V případě takových rozměrů obrazu, které nejsou násobky velikosti bloku, se poslední bloky (horizontálně i vertikálně) doplní o nuly tak, aby utvořily validní blok. Obr. 5 Vzor zig-zag pro matici 8 x 8 pixelů 3.4 Použití modifikované diskrétní kosinové transformace (MDCT) V praxi se MDCT využívá především při kompresi zvuku a to zejména kvůli její vlastnosti plynulého navazování bloků. Této vlastnosti se snaží využít komprese HPEG i v obraze a používá ji tedy namísto DCT II. MDCT je popsána vztahem: - 7 -

a zpětná transformace (IMDCT) vztahem: Jelikož MDCT pro N vzorků generuje jen N/2 hodnot, dochází při jejím použití ke ztrátě informace. Této ztrátě se pak dá zabránit duplikací signálu a to tak, že se po sobě jdoucí bloky vždy z poloviny navzájem překrytí, čímž dojde k takzvanému time-domain aliasing cancellation (TDAC). Zpracování symbolických dat pomocí MDCT a jejich rekonstrukce je vidět v Př. 1. Zpracování symbolických dat pomocí MDCT a jejich rekonstrukce # a, b,..., f jsou subbloky velikosti N/2 původního signálu velikosti 3N [a, b, c, d, e, f] # aby se uplatnila TDAC i na krajní hodnoty, je zapotřebí signál z obou # stran rozšířit o nuly, a to v počtu N tedy dva nulové subbloky z každé # strany signálu [0, 0, a, b, c, d, e, f, 0, 0] # pro každý mdct([0, 0, mdct([a, b, mdct([c, d, mdct([e, f, signál a, b]) c, d]) e, f]) 0, 0]) o = = = = délce [00', [ab', [cd', [ef', 2N se provede MDCT ab'] cd'] ef'] 00'] # při zpětné transformaci se spočtou poškozené původní hodnoty imdct([00', ab']) = [0+, 0-, a+, b-] imdct([ab', cd']) = [a-, b+, c-, d+] imdct([cd', ef']) = [c+, d-, e+, f-] imdct([ef', 00']) = [e-, f+, 0-, 0+] # pokud se ovšem výsledky postupně navzájem z poloviny překryjí a sečtou, # dojde k TDAC a vyjdou původní hodnoty [0+, 0-, a+, b-][c+, d-, e+, f-] + [a-, b+, c-, d+][e-, f+, 0-, 0+] --------------------------------------= [0+, 0-, a, b, c, d, e, f, 0-, 0+] # původní signál se pak získá jen oříznutím dříve přidaných nul [a, b, c, d, e, f] Př. 1 Zpracování symbolických dat pomocí MDCT a jejich rekonstrukce 3.5 Eliminace záporných hodnot Dalším krokem komprese HPEG je oddělení znamének od výsledků MDCT, čímž vznikne oddělené bitové pole a pole absolutních hodnot výsledků z MDCT. Bitové pole znamének se následně ještě upraví na takové pole, kde první hodnota je nezměněna a pak každá následující je 1 v případě hodnoty stejné s předchozí a 0 v případě hodnoty opačné. Tato kombinace, oproti kombinaci opačné (tedy 1 = změna, 0 = stejná hodnota), byla zvolena na základě lepších výsledků na testovém obrázku. -8-

3.6 Kvantizace Kvantizace se zpravidla provádí na všech složkách kromě alfa kanálu. Kvantizační koeficienty se hledají vždy pro první 3 hodnoty půl-bloku zvlášť a pak jeden společný koeficient pro jeho zbytek. Každý koeficient se pak určí tak, aby se daná hodnota po vydělení jím vešla do daného počtu bitů. Počty bitů, do kterých se hodnota musí vejít pro různé kvantizační úrovně: # kvantizační úroveň: (1. hodnota, 2. hodnota, 3. hodnota, zbylé hodnoty) 0: (8, 8, 8, 8) 1: (8, 8, 8, 7) 2: (8, 7, 7, 6) 3: (8, 6, 6, 5) 4: (7, 6, 6, 4) 5: (6, 5, 5, 3) 6: (5, 4, 4, 2) 7: (4, 3, 3, 1) 3.7 Komprese jasu a sytostních složek Komprese jasu a sytostních složek se volí mezi kompresí nejmenšími možnými bity (MBC) a minimálními bity dle kvantizace (QC), a to pro každou složku zvlášť dle lepších kompresních výsledků té, či oné kompresní metody. Jelikož výpočet výsledné velikosti po použití QC metody je celkem jednoduchý, samotná komprese touto metodou se aplikuje jen v případě jistého lepšího výsledku. Na druhé straně komprese pomocí MBC metody se provádí vždy, a v cca 95% případů se také aplikuje, jelikož dosahuje lepších výsledků. 3.7.1 Komprese minimálním počtem bitů na maximální hodnotu (MVC) Metoda MVC nalezne maximální hodnotu v zadaných datech, určí minimální počet potřebných bitů pro její reprezentaci a všechna data na tento počet bitů zakóduje. Jedná se o triviální metodu s ne příliš dobrým kompresním poměrem, která slouží jen jako pomocná pro jednoduché ukládání krátkých bloků dat, jako např. kvantizačních koeficientů v rámci metody QC. Maximální možný počet bitů na hodnotu je omezen 32. 3.7.2 Komprese minimálních bitů dle kvantizace (QC) Metoda QC jednoduše uloží každou hodnotu daným počtem bitů, který byl určen kvantizační úrovní. Sekvence příslušných počtů bitů se vždy opakuje pro každý půl-blok dat stejným způsobem jako kvantizační koeficienty při kvantizaci, tedy první 3 hodnoty sekvence počtu bitů jsou aplikovány pro každé první tři hodnoty půl-bloku, čtvrtý počet bitů pak pro zbytek hodnot půl-bloku. Pro uložení kvantizačních koeficientů se použije metoda MVC. Výsledný formát tedy je: <zakódované kv. koef. pomocí MVC><zakódovaná data do bitů dle kv. úrovně> 3.7.3 Komprese nejmenšími možnými bity (MBC) Metoda MBC je výrazně komplikovanější než QC, a ačkoliv její kompresní poměr je přímo ovlivněn kvantizací hodnot, metoda není na kvantizaci samotné nijak závislá. Základní ideou této metody je uložení každé hodnoty na nejmenší možný počet bitů. Jelikož je ovšem pro - 9 -

každou takovouto hodnotu nutné mít někde uloženou informaci o tom, v kolika bitech je zapsána, je evidentně vhodné hodnoty zapsatelné do stejného počtu bitů shlukovat. Každý shluk pak musí obsahovat hlavičku, kde bude řečeno kolik hodnot obsahuje a na kolik bitů je každá hodnota zaznamenána. Takováto hlavička může vypadat například takto: <počet následujících hodnot 5 bitů><počet bitů na hodnotu 3 bity> Takováto hlavička zabere právě jeden byte a nese s sebou omezení jak na maximální počet opakujících se hodnot (v tomto případě 32), tak i na maximální počet bitů na hodnotu (8 bitů). Takto nastavená hlavička je pak vhodnější pro data měnící se častěji a ve větším rozsahu hodnot a logicky méně vhodná například pro velká množství za sebou jdoucích malých čísel. Tato metoda může v extrémním případě dosáhnout záporné komprese, tedy zakódovaná data budou větší než ta originální, a to v případě této hlavičky až (32 + 1) : 32 tedy 1 : 0,97, naopak v nejlepším případě s touto hlavičkou může pak dosáhnout komprese kódovaných dat až: (32 + 8) : (32 * 8) tedy 1 : 6,4. Nalezení takové kombinace skupin, aby celková komprese byla co nejúčinnější, se provádí v několika krocích: Získání statistiky výskytů hodnot na určitý počet bitů Ke každé hodnotě dat se nalezne min. počet bitů, do kterých se dá hodnota uložit Z těchto počtů dat se za pomoci stejné logiky jako v RLE naleznou dvojce (<počet bitů>, <počet hodnot>) Na základě těchto dvojic se vytvoří pole objektů listů budoucího stromu skupin minimálního počtu bitů na hodnotu Vytvoření stromu nadskupin nad polem listů Ke každému počtu minimálních bitů na hodnotu od 2 do 8 se postupně hledá největší možná skupina kolem každého výskytu tohoto počtu Dvoubitové skupiny tedy mohou obsahovat i hodnoty na jeden bit, tříbitové pak i hodnoty na dva bity nebo na jeden bit, atd. až osmibitová skupina zahrnuje celý rozsah hodnot Takovýmto způsobem se vytvoří strom s kořenem o nejvyšším počtu bitů na hodnotu, který se v datech vyskytuje; počty bitů na hodnotu, které se v datech vůbec nevyskytují se při vytváření stromu přeskočí Výběr nejlepších kombinací skupin ze stromu Strom se rekurentně prohledá do hloubky a pro každý uzel, jehož ohodnocení je lepší než součet ohodnocení jeho přímých potomků, se potomci oříznou V případě lepšího ohodnocení součtu potomků se stejným způsobem pokračuje v prohledávání do hloubky Výsledkem tohoto prohledávání je pole nejlepších skupin Redukce nejlepších kombinací skupin ze stromu Výsledné pole z předchozího kroku se postupně prochází s tím, že se provádí výpočet ohodnocení sloučení dvou sousedících skupin V případě lepšího ohodnocení sloučených skupin se původní dvojce nahradí sloučenou a kontrola se provádí znova od začátku V případě, že během průchodu celým polem nebyla nalezena žádná lépe ohodnocená sloučená skupina, dané pole se považuje za nejlepší možnou kombinaci - 10 -

Samotná komprese dat probíhá pak na základě dříve provedené analýzy a je zapsána jako posloupnost hlaviček a dat ve formátu: <hlavička 8 bitů><1 až 32 x zakódovaná hodnota na 1 až 8 bitů><hlav... Jednotlivé kroky analýzy je možné si lépe prohlédnout v Př. 2. Jednotlivé kroky analýzy MBC na příkladu # data k zakódování [0, 1, 1, 5, 153, 30, 3, 1, 0, 1, 2, 1] # počty nejmenších možných bitů pro uložení jednotlivých hodnot z dat [1, 1, 1, 3, 8, 5, 2, 1, 1, 1, 2, 1] # statistiky z počtu nejmenších možných bitů dle RLE [(1, 3), (3, 1), (8, 1), (5, 1), (2, 1), (1, 3), (2, 1), (1, 1)] # seznam listů stromu skupin s jejich ohodnocením (váhou) # formát: (počet bitů, počet opakování, váha) # váha se vypočítává jako: délka hlavičky + počet bitů * počet opakování [(1, 3, 11), (3, 1, 11), (8, 1, 16), (5, 1, 13), (2, 1, 10), (1, 3, 11), (2, 1, 10), (1, 1, 9)] # postupná výstavba stromu nad ohodnocenými listy # 1) seskupení dvoubitových hodnot [(1, 3, 11), (3, 1, 11), (8, 1, 16), (5, 1, 13), (2, 6, 20, {(2, 1, 10) + (1, 3, 11) + (2, 1, 10) + (1, 1, 9)})] # 2) seskupení tříbitových hodnot [(3, 4, 20, {(1, 3, 11) + (3, 1, 11)}), (8, 1, 16), (5, 1, 13), (2, 6, 20, {(2, 1, 10) + (1, 3, 11) + (2, 1, 10) + (1, 1, 9)})] # 3) seskupení čtyřbitových hodnot - žádná změna # 4) seskupení pětibitových hodnot [(3, 4, 20, {(1, 3, 11) + (3, 1, 11)}), (8, 1, 16), (5, 7, 43, (5, 1, 13) + (2, 6, 20, {(2, 1, 10) + (1, 3, 11) + (2, 1, 10) + (1, 1, 9)})})] # 5 a 6) seskupení šesti a sedmibitových hodnot žádná změna # 7) seskupení osmibitových hodnot [(8, 12, 104, {(3, 4, 20, {(1, 3, 11) + (3, 1, 11)}) + (8, 1, 16) + (5, 7, 43, {(5, 1, 13) + (2, 6, 20, {(2, 1, 10) + (1, 3, 11) + (2, 1, 10) + (1, 1, 9)})})})] # v poli zůstal jediný uzel kořen stromu (8, 12, 104) +-> (3, 4, 20) +-> (1, 3, 11) \-> (3, 1, 11) \-> (8, 1, 16) \-> (5, 7, 43) +-> (5, 1, 13) \-> (2, 6, 20) +-> (2, 1, 10) \-> (1, 3, 11) \-> (2, 1, 10) \-> (1, 1, 9) - 11 -

Jednotlivé kroky analýzy MBC na příkladu # výběr nejlepších skupin ze stromu # součet vah potomků je větší než předka => výběr předka # součet vah potomků je menší než předka => výběr potomků # červené => ořezané; modré => vybrané (8, 12, 104) +-> (3, 4, 20) +-> (1, 3, 11) \-> (3, 1, 11) \-> (8, 1, 16) \-> (5, 7, 43) +-> (5, 1, 13) \-> (2, 6, 20) +-> (2, 1, 10) \-> (1, 3, 11) \-> (2, 1, 10) \-> (1, 1, 9) # redukce výsledku -> případné sloučení sousedících skupin # pole nejlepších skupin ze stromu [(3, 4, 20), (8, 1, 16), (5, 1, 13), (2, 6, 20)] # 1) výpočet sloučení prvních dvou (žádné sloučení) 20 + 16 < 8 * 5 + 8 36 < 48 # 2) výpočet sloučení druhé a třetí skupiny (dojde ke sloučení) 16 + 13 > 8 * 2 + 8 29 > 24 # aktualizované pole [(3, 4, 20), (8, 2, 24), (2, 6, 20)] # nový výpočet s aktualizovaným polem # 1) výpočet sloučení prvních dvou (žádné sloučení) 20 + 24 < 8 * 6 + 8 44 < 56 # 2) výpočet sloučení druhé a třetí skupiny (žádné sloučení) 24 + 20 < 8 * 8 + 8 44 < 72 # konec redukce výsledku -> již nelze skupiny lépe sloučit # výsledkem analýzy je pole skupin # zadané hodnoty lze pomocí MBC uložit do 64 bitů oproti původním 96 bitům [(3, 4, 20), (8, 2, 24), (2, 6, 20)] Př. 2 Jednotlivé kroky analýzy MBC na příkladu 3.8 Komprese alfa kanálu Při kompresi alfa kanálu se nejprve hodnoty (z rozsahu 0 až 255) upraví tak, že hodnoty 1 se přepíší na hodnoty 0 (dojde k nepostřehnutelné ztrátě informace), hodnoty 255 se přepíší na hodnoty 1, hodnoty 0 zůstanou beze změny, a ostatní hodnoty se zkvantizují dle zvolené kvantizační úrovně do osmi až dvou bitů s tím, že nejnižší jejich hodnota je vždy 2. Nad takto upravenými hodnotami se pak provádí komprese RLE, a následně na její výstup komprese MBC, jejíž výstup se zachová jen v případě, že dosahuje kladné komprese. - 12 -

Komprese MBC je popsána v kapitole 3.7.3 na straně 9. Komprese RLE je pak implementována tak, že každý znak (8 bitů), který se za sebou vyskytuje vícekrát jak jednou, je duplikován a za něj je umístěn počet opakování snížený o 2. V případě počtu opakování většího než 257 se sekvence znaků zakóduje posloupností dvojic znaků s následným počtem. Ukázku komprese RLE je pak možné vidět v Př. 3. Příklad komprese pomocí RLE # data k zakódování ʺAAAAAAABBBBCDEFGHHHHIIIJJKLʺ # zjištění výskytů znaků [(ʺAʺ, 7), (ʺBʺ, 4), (ʺCʺ, 1), (ʺDʺ, 1), (ʺEʺ, 1), (ʺFʺ, 1), (ʺGʺ, 1), (ʺHʺ, 4), (ʺIʺ, 3), (ʺJʺ, 2), (ʺKʺ, 1), (ʺLʺ, 1)] # zakódování dle nalezených výskytů # původní řetězec o délce 27 znaků je nyní zakódován # do řetězce o délce 22 znaků ʺAA\x05BB\x02CDEFGHH\x02II\x01JJ\x00KLʺ Př. 3 Příklad komprese pomocí RLE 3.9 Huffmanovo kódování Huffmanovo kódování je bezztrátovou kompresí založenou na nevyváženosti rozložení výskytů jednotlivých znaků v datech. Při převážném výskytu několika pár hodnot dosahuje velice dobrých kompresních výsledků, při téměř rovnoměrně rozložených počtech výskytů hodnot pak může dosáhnout i záporné komprese (při započtení velikosti převodní tabulky). Pro získání převodní tabulky, která jednoznačně přiřazuje každému znaku jeho bitový kód, je třeba zanalyzovat vstupní data a získat ke každému použitém znaku jeho počet výskytů. Seznam těchto počtů výskytů je pak třeba vzestupně seřadit a vytvořit z něj následujícím způsobem binární strom: 1) propojí se první dva znaky s nejmenším výskytem, předek získá váhu součtem počtů výskytů potomků 2) vybere se následující znak z fronty 3) porovná se počet výskytů dalšího následujícího znaku z fronty s váhou prvního uzlu ve výsledném seznamu a) pokud je váha prvního uzlu menší nebo rovna váze porovnávaného znaku, již vybraný znak se propojí s tímto prvním uzlem a vytvoří společného předka; seznam je pak vzestupně přetříděn dle váhy uzlů b) pokud je váha prvního uzlu větší než dalšího následujícího znaku z fronty, tento znak se z fronty taktéž vybere a s již dříve vybraným znakem vytvoří předka, který bude ohodnocen a přidán na konec seznamu uzlů 4) kroky 2 až 3 se opakují dokud není seznam znaků prázdný - 13 -

5) v seznamu uzlů se dva uzly s nejmenším ohodnocením propojí a vytvoří společného předka, který je místo nich zařazen do seznamu; seznam je znovu přetříděn 6) krok 5 se opakuje dokud není v seznamu uzlů jen jeden kořen stromu Vzniklý strom se nakonec projde do hloubky a každému uzlu se přiřadí kód odvozený od cesty od kořene, kde bitová 0 reprezentuje vždy výběr levého uzlu na cestě a bitová 1 vždy uzel pravý. Na základě takto vytvořené tabulky se pak zakódují jednotlivé znaky do bitového pole. 3.10 Výsledný formát HPEG Výsledný formát HPEG je uložen jako: Hlavička (6 bytů) šířka obrázku (16 bitů) výška obrázku (16 bitů) příznak barevnosti (1 bit) příznak alfa kanálu (1 bit) pomocná hodnota lenmaxbytes (2 bity) úroveň podvzorkování (3 bity) úroveň kvantizace (3 bity) označení velikosti bloku (2 bity) rezerva (4 bity) Data zakódovaná Huffmanovou kompresí o opakuje se pro všechny složky (alfa kanál nemá znaménka) šířka pro zig-zag (16 bitů) výška pro zig-zag (16 bitů) délka následujících dat v bitech (8 * lenmaxbytes bitů) data (počet bitů v předchozí hodnotě) délka bitového pole znamének (8 * lenmaxbytes bitů) bitové pole znamének (počet bitů v předchozí hodnotě) - 14 -

4 Ukázka reálných dat při kompresi HPEG Ukázka dat v Př. 4 pochází z podvzorkovaného Co kanálu, který je vyobrazen na Obr. 6. Pro názornost byla zvolena nejagresivnější kvantizace (4, 3, 3, 1) bitů na hodnotu. Obr. 6 Testová složka Co Ukázka reálných dat při kompresi HPEG # první blok podvzorkované Co složky 64 hodnot [118, 86, 86, 81, 53, 55, 55, 56, 56, 54, 54, 54, 54, 55, 61, 25, 46, 58, 29, 46, 46, 63, 55, 55, 54, 54, 63, 0, 0, 0, 96, 128, 128, 128, 126, 125, 128, 125, 125, 182, 160, 132, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 123, 123, 111, 112, 105, 126, 126, 128, 128, 128] # přeskládání [118, 86, 55, 118, 53, 86, 56, 118, 56, 86, 118, 81, hodnot pomocí zig-zag pro blok velikosti 8 x 8 55, 55, 56, 81, 53, 86, 53, 56, 55, 118, 86, 55, 86, 81, 86, 55, 86, 81, 86, 81, 86, 118, 56, 118, 53, 55, 86, 81, 55, 53, 55, 53, 55, 86, 55, 55, 81, 59, 53, 55, 86, 55, 57, 55, 81, 53, 118, 86, 86, 86, 55, 60] # zaokrouhlené hodnoty po MDCT první půl-blok 32 hodnot [-102, -67, -27, -10, -13, -17, -14, -12, -14, -17, -14, -7, -3, -5, -8, -7, -3, 0, 0, -3, -5, -3, 0, 2, 2, 3, 5, 4, -1, -6, -7, -3] # oddělení znamének a vytvoření pole absolutních hodnot bitarray('11111111111111111001110000001111') -> [255, 255, 156, 15] [102, 67, 27, 10, 13, 17, 14, 12, 14, 17, 14, 7, 3, 5, 8, 7, 3, 0, 0, 3, 5, 3, 0, 2, 2, 3, 5, 4, 1, 6, 7, 3] # kvantizace na (4, 3, 3, 1) bitů při použití kvantizačních koeficientů # [16, 6, 6, 22] [6, 11, 4, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Př. 4 Ukázka reálných dat při kompresi HPEG - 15 -

5 Rozbor výsledků komprese HPEG Při kompresi obrázku pomocí HPEG si uživatel může zvolit několik parametrů ovlivňujících jak kompresní poměr, tak i kvalitu výsledného obrazu. 5.1 Popis možných nastavení parametrů převodu obrázku do HPEG Úroveň podvzorkování (parametr -ls) může být nastavena v rozmezí <0; 4> ovlivňuje stupeň podvzorkování sytostních složek a alfa kanálu Úroveň podvzorkování Sytostní složky Alfa kanál 0 0 x 0 x 1 1 x 0 x 2 1 x 1 x 3 2 x 1 x 4 2 x 2 x Úroveň kvantizace (parametr -lq) může být nastavena v rozmezí <0; 7> ovlivňuje stupeň kvantizace všech složek obrázku Úroveň kvantizace Jasová složka Sytostní složky 0 0 0 0 1 1 0 1 2 2 1 2 3 3 2 3 4 4 3 4 5 5 4 4 6 6 5 5 7 7 6 6 Alfa kanál stupeň kvantizace u jasové a sytostních složek je dán počtem bitů pro jednotlivé hodnoty půl-bloku Stupeň kvantizace První hodnota Druhá hodnota Třetí hodnota Zbylé hodnoty 0 8 bitů 8 bitů 8 bitů 8 bitů 1 8 bitů 8 bitů 8 bitů 7 bitů 2 8 bitů 7 bitů 7 bitů 6 bitů 3 8 bitů 6 bitů 6 bitů 5 bitů 4 7 bitů 6 bitů 6 bitů 4 bitů 5 6 bitů 5 bitů 5 bitů 3 bitů 6 5 bitů 4 bitů 4 bitů 2 bitů 7 4 bitů 3 bitů 3 bitů 1 bitů - 16 -

stupeň kvantizace u alfa kanálu je dán počtem bitů pro hodnoty v rozmezí <2; 254>, který je pro stupeň nula osm bitů až pro stupeň šest dva bity; hodnoty 0, 1 a 255 jsou ošetřeny zvlášť a zabírají vždy jen jeden bit Velikost použitého bloku (parametr -lb) může být nastavena v rozmezí <0; 3> možné bloky jsou postupně 8 x 8, 16 x 16, 32 x 32 a 64 x 64 Oříznutí alfa kanálu (parametr -a) pokud obsahuje originální obrázek alfa kanál, budou z něj dopočteny hodnoty v ostatních složkách a bude zahozen; původně průhledné plochy budou vyplněny černou barvou Převod na stupně šedé (parametr -g) pokud byl obrázek barevný, bude převeden do odstínů šedi čímž ze tří složek vznikne jen jedna, se kterou bude nakládáno jako s jasovou složkou 5.2 Přehled kompresních poměrů a kvality vzhledem k parametrům Přehled kvality obrazu a kompresního poměru vzhledem k úrovni podvzorkování obsahuje Tab. 1. Úroveň podvzorkování Velikost souboru Kompresní poměr (128 x 128 x 4 = 65 536) Obraz (128 x 128) 0 39 415 bytů 1 : 1,66 2,41 bpp Bez podvzorkování 1 22 856 bytů 1 : 2,87 1,40 bpp 1 x Cg, Co 2 21 788 bytů 1 : 3,01 1,33 bpp 1 x Cg, Co, A 3 16 675 bytů 1 : 3,93 1,02 bpp 2 x Cg, Co 1xA 4 16 069 bytů 1 : 4,08 0,98 bpp 2 x Cg, Co, A Tab. 1 Přehled kvality obrazu a kompresního poměru vzhledem k podvzorkování - 17 - Poznámka

Přehled kvality obrazu a kompresního poměru vzhledem k úrovni kvantizace obsahuje Tab. 2. Úroveň kvantizace Velikost souboru Kompresní poměr (128 x 128 x 4 = 65 536) Obraz (128 x 128) Poznámka 0 39 415 bytů 1 : 1,66 2,41 bpp vše na 8 bitů 1 38 391 bytů 1 : 1,71 2,34 bpp alfa na 7 bitů jasová (8, 8, 8, 7) sytostní (8, 8, 8, 8) 2 35 665 bytů 1 : 1,84 2,18 bpp alfa na 6 bitů jasová (8, 7, 7, 6) sytostní (8, 8, 8, 7) 3 32 286 bytů 1 : 2,03 1,97 bpp alfa na 5 bitů jasová (8, 6, 6, 5) sytostní (8, 7, 7, 6) 4 29 092 bytů 1 : 2,25 1,78 bpp alfa na 4 bity jasová (7, 6, 6, 4) sytostní (8, 6, 6, 5) 5 25 145 bytů 1 : 2,61 1,53 bpp alfa na 4 bity jasová (6, 5, 5, 3) sytostní (7, 6, 6, 4) 6 20 587 bytů 1 : 3,18 1,26 bpp alfa na 3 bity jasová (5, 4, 4, 2) sytostní (6, 5, 5, 3) 7 15 957 bytů 1 : 4,11 0,97 bpp alfa na 2 bity jasová (4, 3, 3, 1) sytostní (5, 4, 4, 2) Tab. 2 Přehled kvality obrazu a kompresního poměru vzhledem ke kvantizaci - 18 -

Přehled kvality obrazu a kompresního poměru vzhledem k velikosti bloku obsahuje Tab. 3. Úroveň bloku Velikost souboru Kompresní poměr (128 x 128 x 4 = 65 536) Obraz (128 x 128) Poznámka 0 39 415 bytů 1 : 1,66 2,41 bpp blok 8 x 8 1 42 612 bytů 1 : 1,54 2,60 bpp blok 16 x 16 2 43 061 bytů 1 : 1,52 2,63 bpp blok 32 x 32 3 47 035 bytů 1 : 1,39 2,87 bpp blok 64 x 64 Tab. 3 Přehled kvality obrazu a kompresního poměru vzhledem k velikosti bloku Přehled kvality obrazu a kompresního poměru vzhledem k oříznutí alfa kanálu nebo převedení na odstíny šedi obsahuje Tab. 4. Úroveň bloku Velikost souboru Kompresní poměr (128 x 128 x 4 = 65 536) Obraz (128 x 128) Poznámka 0 39 415 bytů 1 : 1,66 2,41 bpp barevné provedení s alfa kanálem 1 36 305 bytů 1 : 1,81 2,22 bpp bez alfa kanálu 2 15 956 bytů 1 : 4,11 0,97 bpp převedeno na odstíny šedi Tab. 4 Přehled kvality obrazu a kompresního poměru při ořezu alfa kanálu a převodu na odstíny šedi - 19 -

Z výše uvedených tabulek je patrné: 1) Podvzorkování má velký vliv na kvalitu komprese, zatímco kvalita obrazu je při něm zhoršena jen minimálně. Jako úroveň o velice dobré kvalitě obrazu může být považována úroveň dva. Úroveň tři má již znatelný barevný posun, ale stále je dosti kvalitní. 2) Kvantizace má také velký vliv na kvalitu komprese, ale na rozdíl od podvzorkování může zcela zásadně ovlivnit kvalitu výsledného obrazu. Jako kvantizace s dobrou kvalitou obrazu může být považována ještě úroveň čtyři, úroveň pět již vykazuje viditelný šum. 3) Větší velikost bloku dle testu vykazuje jak zhoršení kvality obrazu, tak zhoršení kompresního poměru. A je tedy patrné, že nemá smysl se většími bloky po zbytek testu vůbec zabývat. 4) Oříznutí alfa kanálu nemá až tak velký význam na kompresní poměr, jak by se mohlo na první pohled zdát. Jisté ušetření však stále přináší. 5) Převedení obrazu na odstíny šedi dle očekávání výrazně zlepší kompresní poměr, ovšem za cenu kompletní ztráty barevné informace. Na základě těchto poznatků můžeme odhadovat, že nejlepší poměr komprese ku kvalitě obrazu pak bude mít nastavení -ls2 -q4 -lb0, případně -ls3 -q4 -lb0, které může být rozšířeno o oříznutí alfa kanálu. Srovnání těchto nastavení je možné vidět v Tab. 5. Nastavení parametrů Velikost souboru Kompresní poměr (128 x 128 x 4 = 65 536) Obraz (128 x 128) Poznámka 27 475 bytů 1 : 2,39 1,68 bpp Originální PNG -ls2 -lq4 -b0 14 803 bytů 1 : 4,43 0,90 bpp 1 x C g, C o, A alfa na 4 bity jasová (7, 6, 6, 4) sytostní (8, 6, 6, 5) -ls2 -lq4 -b0 -a 14 220 bytů 1 : 4,61 0,87 bpp 1 x C g, C o, A alfa na 4 bity jasová (7, 6, 6, 4) sytostní (8, 6, 6, 5) -ls3 -lq4 -b0 11 049 bytů 1 : 5,93 0,67 bpp 2 x C g, C o, 1 x A alfa na 4 bity jasová (7, 6, 6, 4) sytostní (8, 6, 6, 5) -ls3 -lq4 -b0 -a 10 520 bytů 1 : 6,23 0,64 bpp 2 x C g, C o, 1 x A alfa na 4 bity jasová (7, 6, 6, 4) sytostní (8, 6, 6, 5) Tab. 5 Přehled kvality obrazu a kompresního poměru při použití nejlepšího výběru parametrů vzhledem k originálu - 20 -

6 Porovnání komprese HPEG a JPEG Jelikož pro běžné fotografie a obrázky je stále nejrozšířenějším formátem ztrátová komprese JPEG, použijeme ji v tomto porovnání jako standard. 6.1 Porovnání kvality obrazu na srovnatelné kompresi odstíny šedi Na následujících ukázkách je možné porovnat originální obrázek PNG o velikosti 800 x 500 pixelů (původně získaný zmenšením jiného JPEG obrázku) na Obr. 7, jeho převod do formátu HPEG s kvantizační úrovní čtyři na Obr. 8 a do formátu JPEG o srovnatelné velikosti s HPEGem na Obr. 9. Při bližším prozkoumání těchto obrázků je možné konstatovat, že rozdíl mezi originálem a JPEGem je nepostřehnutelný, naopak u formátu HPEG si je možné všimnout zvýšeného šumu v oblasti oblohy, viditelných tmavších čtverců v původně velice světlém odlesku v řece a ztmavení části cihlové stěny napravo uprostřed. Obr. 7 Originální obrázek ve formátu PNG 292 502 bytů - 21 -

Obr. 8 Obrázek převedený do formátu HPEG (kvantizační úroveň 4) 193 794 bytů Obr. 9 Obrázek převedený do formátu JPEG 189 507 bytů - 22 -

Pokud stejný test provedeme s kvantizační úrovní pět, rozdíl v kvalitě při srovnatelném kompresním poměru HPEGu a JPEGu je zcela zřejmý viz Obr. 10 a Obr. 11. HPEG trpí oproti kvantizační úrovni čtyři navíc značným zašuměním se zřetelnými čtverci hlavně na rozmezí oblohy a střech domů, lépe komprimovaný JPEG na druhou stranu na kvalitě obrazu v podstatě vůbec neztratil. Obr. 10 Obrázek převedený do formátu HPEG (kvantizační úroveň 5) 157 537 bytů Obr. 11 Obrázek převedený do formátu JPEG 162 273 bytů - 23 -

6.2 Porovnání kvality obrazu na srovnatelné kompresi barevně Na následujících ukázkách je možné porovnat originální obrázek PNG o velikosti 400 x 250 pixelů (původně získaný zmenšením jiného JPEG obrázku) na Obr. 12, jeho převod do formátu HPEG s úrovní podvzorkování dva a kvantizační úrovní čtyři na Obr. 13 a do formátu JPEG o srovnatelné velikosti s HPEGem na Obr. 14. Na obrázcích Obr. 15 až Obr. 18 jsou postupně vyobrazeny vyšší komprese HPEG a velikostí souboru ekvivalentní JPEGy. Z porovnání je opět patrné, že JPEG dosahuje při srovnatelné kompresi lepších obrazových výsledků než HPEG. Obr. 12 Originální obrázek ve formátu PNG 169 194 bytů Obr. 13 Obrázek v HPEG (podvz. 2, kv. 4) 68 159 bytů Obr. 14 Obrázek v JPEG (podvz. 4:2:0) 66 115 bytů Obr. 15 Obrázek v HPEG (podvz. 3, kv. 4) 51 345 bytů Obr. 16 Obrázek v JPEG (podvz. 4:2:0) 51 552 bytů - 24 -

Obr. 17 Obrázek v HPEG (podvz. 3, kv. 5) 42 314 bytů Obr. 18 Obrázek v JPEG (podvz. 4:2:0) 42 087 bytů - 25 -

7 Závěr Výsledky porovnání ukazují, že komprese HPEG za kompresí JPEG zaostává a nedosahuje takových kompresních poměrů vzhledem k výsledné kvalitě obrazu. Na druhou stranu díky podpoře alfa kanálu, může v některých případech konkurovat kompresním poměrem se stále dobrou kvalitou obrazu formátu PNG, kde se ukazuje být výhodnou především pro menší obrázky. Na testech se také ukazují některé problémy jako viditelné bloky u velkých jednobarevných ploch apod., které nutí člověka k zamyšlení nad tím, zda předpokládaná podobnost MDCT s DCT II byla správným krokem a nebylo by dosaženo mnohem lepší obrazové kvality například za použití MDCT po řádcích a sloupcích s nějakou redukcí výsledné informace, tak aby v obraze nevznikaly nežádoucí artefakty. Za zmínku stojí i rychlost komprese, která byla optimalizována jen na úrovni MDCT (výpočet pomocí FFT), ale ostatní algoritmy zůstaly zcela bez ní. Obzvláště pak komprese MBC je velice časově náročná, a proto se doporučuje převádět obrázky o maximální velikosti 256 x 256 pixelů, jinak může proces trvat i několik desítek minut. - 26 -

Přehled zkratek DCT II FFT HPEG IMDCT JPEG MBC MDCT MVC PNG QC RGB RGBA RLE TDAC Y C b C r Y C g C o diskrétní kosinová transformace druhého typu (discrete cosine transform II) rychlá Fourierova transformace (fast Fourier transform) formát ztrátové komprese obrazu založený na MDCT inverzní MDCT (inverse MDCT) formát ztrátové komprese obrazu (joint photographic experts group) bezztrátová komprese nejmenšími možnými bity (minimum bits coding) modifikovaná diskrétní kosinová transformace (modified discrete cosine transform) bezztrátová komprese minimálním počtem bitů na maximální hodnotu (maximum value coding) formát bezztrátové komprese obrazu (portable network graphics) bezztrátová komprese minimálními bity dle kvantizace (quantization coding) aditivní barvový model červená-zelená-modrá (red, green, blue) RGB s průhledností (red, green, blue, alpha) bezztrátová komprese shlukování hodnot (run-length encoding) vyrušení chyby v časové oblasti (time-domain aliasing cancellation) barvový systém s oddělenou jasovou složkou (luma, blue-difference, red-difference) barvový systém s oddělenou jasovou složkou (luma, green-difference, orange-difference) Y C g C o A Y C g C o s průhledností (luma, green-difference, orange-difference, alpha) - 27 -

Seznamy Obrázky Obr. 1 Nákres průměrování hodnot při podvzorkování... 5 Obr. 2 Přehled vlivu podvzorkování sytostních složek na výslednou barevnou kvalitu obrazu... 6 Obr. 3 Detail vlivu podvzorkování... 7 Obr. 4 Detail vlivu dvojitého podvzorkování... 7 Obr. 5 Vzor zig-zag pro matici 8 x 8 pixelů... 7 Obr. 6 Testová složka C o... 15 Obr. 7 Originální obrázek ve formátu PNG 292 502 bytů... 21 Obr. 8 Obrázek převedený do formátu HPEG (kvantizační úroveň 4) 193 794 bytů... 22 Obr. 9 Obrázek převedený do formátu JPEG 189 507 bytů... 22 Obr. 10 Obrázek převedený do formátu HPEG (kvantizační úroveň 5) 157 537 bytů... 23 Obr. 11 Obrázek převedený do formátu JPEG 162 273 bytů... 23 Obr. 12 Originální obrázek ve formátu PNG 169 194 bytů... 24 Obr. 13 Obrázek v HPEG (podvz. 2, kv. 4) 68 159 bytů... 24 Obr. 14 Obrázek v JPEG (podvz. 4:2:0) 66 115 bytů... 24 Obr. 15 Obrázek v HPEG (podvz. 3, kv. 4) 51 345 bytů... 24 Obr. 16 Obrázek v JPEG (podvz. 4:2:0) 51 552 bytů... 24 Obr. 17 Obrázek v HPEG (podvz. 3, kv. 5) 42 314 bytů... 25 Obr. 18 Obrázek v JPEG (podvz. 4:2:0) 42 087 bytů... 25 Příklady Př. 1 Zpracování symbolických dat pomocí MDCT a jejich rekonstrukce... 8 Př. 2 Jednotlivé kroky analýzy MBC na příkladu... 12 Př. 3 Příklad komprese pomocí RLE... 13 Př. 4 Ukázka reálných dat při kompresi HPEG... 15 Tabulky Tab. 1 Přehled kvality obrazu a kompresního poměru vzhledem k podvzorkování... 17 Tab. 2 Přehled kvality obrazu a kompresního poměru vzhledem ke kvantizaci... 18 Tab. 3 Přehled kvality obrazu a kompresního poměru vzhledem k velikosti bloku... 19 Tab. 4 Přehled kvality obrazu a kompresního poměru při ořezu alfa kanálu a převodu na odstíny šedi... 19 Tab. 5 Přehled kvality obrazu a kompresního poměru při použití nejlepšího výběru parametrů vzhledem k originálu... 20-28 -