Ztrátové formáty

JPEG File Interchange Format

Formát JFIF – JPEG File Interchange Format – představuje v současnosti asi nejoblíbenější a nejšíře podporovaný standard pro „reálné“,  tj. True Color, obrázky. Přestože se jedná o implementačně vysoce složitou záležitost, setkáváme se s JPEG obrazy (jak je často a ne zcela správně tento formát také označován – JPEG značí jen typ komprese použité v souborech JFIF) prakticky kdekoli, zejména na webu. Protože je tento formát velmi rozšířen a je pro jeho úspěšné používání částečně třeba vidět do útrob použitých kompresních metod, podíváme se na JFIF poněkud podrobněji.

Kompresní metoda JPEG nabízí čtyři úrovně kódování dat – nejužívanější sekvenční, progresivní (tyto první dvě jsou ztrátové), hierarchické (které se téměř nepoužívá, ale má některé užitečné vlastnosti jako je rychlé nahlížení, podpora tisku, osvitu apod.; je rovněž ztrátové) a také bezztrátové (prediktivní). Většina dekodérů poskytuje podporu jen pro první dva způsoby kódování (totéž se týká obecně i webových prohlížečů).

Základní schéma komprese JPEG vypadá takto: barvy pixlů se musí nejprve transformovat ze vstupního barvového prostoru (nejčastěji RGB nebo CMYK) do prostoru YCbCr. Tato transformace probíhá podle uvedených transformačních rovnic a sama o sobě je bezztrátová. Složky v barevném prostoru YCbCr představují signály, kde Y nese informaci o světlosti pixlu bez ohledu na barevnost a ostatní dva signály jsou v jistém smyslu rozdílové barvové koeficienty pro modrou a červenou. Složka Y částečně odpovídá složce V resp. L v barvových systémech HSV resp. HLS.

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

Obraz se poté rozloží na bloky (nejčastěji 8×8 pixlů), které pak po celou dobu dalšího zpracování vystupují jako samostatné obrazové jednotky. V dalším kroku může dle nastavení docházet k tzv. podvzorkování barvových složek – několika sousedním pixlům je přiřknuta jediná „průměrná“ barva. Tento trik je založen na skutečnosti, že lidské oko daleko lépe vnímá světlost a její rozdíly než barvy. Proto dojde v podvzorkovaném obrázku (nejčastěji se průměrují oblasti 2×1, 1×2 nebo 2×2 pixely) k podstatnému úbytku informace bez většího vlivu na vizuální dojem. Další operace probíhají odděleně pro tři barvové složky. Hodnoty pixelů v blocích jsou transformovány diskrétní kosinovou transformací (DCT) a hodnoty DCT jsou kvantovány vhodnou kvantizační tabulkou (kodéry JPEG zpravidla obsahují několik kvantizačních tabulek pro různé typy dat; při kvantizaci dojde k dělení hodnot matice DCT hodnotami z kvantizační tabulky „člen po členu“). Snahou této části je dosáhnout stavu, kdy je mnoho hodnot v matici bloku nulových (vypočtené hodnoty byly zaokrouhlovány na celé číslo), ovšem právě zde nastává největší ztráta informace, protože zpětným přepočtem nemůže již být dosaženo naprosto identických původních hodnot barvových koeficientů.

Jednou ze zajímavých možností formátu JFIF je možnost ovlivnit velikost výsledného souboru pomocí koeficientu kvality Q. Pro různě nastavenou hodnotu Q kodér použije různou kvantizační tabulku (nebo interpolaci mezi dvěma nejbližšími) a do značné míry tak dojde k ovlivnění ztráty informace z obrazu. Kvantizační tabulky jsou navrženy podle vzoru, sestaveného na základě psychologických výzkumů. Výsledné matice obsahují na první pozici stejnosměrnou složku signálu (jakousi průměrnou hodnotu všech hodnot bloku) a na dalších pozicích lineární kombinace střídavých hodnot (vertikálních a horizontálních hran) klesající od levého horního rohu do pravého spodního, které se po kvantizaci linearizují od nejvyšších hodnot po nižší (neboli od nejnižší frekvence po nejvyšší), nulové hodnoty na konci odpadají. Tím se připraví tok dat pro Huffmannovo nebo aritmetické kódování, kterým se sníží jeho velikost. Obě kódování jsou bezztrátová a jsou založena na binárním stromu a zápisu často se opakujících hodnot nižším počtem bytů, než hodnot opakujících se zřídka. Zakódovaná data jsou uložena do JFIF souboru a doplněna hlavičkou, Exif informacemi a dalšími prvky.

Progresivní kódování vzdáleně připomíná prokládaný mód jiných formátů. Při sestavování datového toku z kvantovaných bloků nedochází k jejich načtení od nejnižších frekvencí signálů po nejvyšší, nýbrž k postupnému načítání jednotlivých skupin frekvencí počínaje stejnosměrným členem a nízkofrekvenčními členy, ale ze všech bloků obrazu za sebou. Tím se ve výsledku dosáhne toho, že při načítání jsou nejprve zobrazeny stejnosměrné a nízkofrekvenční členy, které už po načtení malého objemu obrázku dají hrubý vizuální dojem, který je s dalšími načtenými daty zpřesňován.

U neztrátové prediktivní komprese jsou ukládány pouze rozdíly mezi predikovanou a skutečnou hodnotou v obraze, které jsou spočteny na základě matematického predikčního modelu. K úspoře dochází, protože rozdílové hodnoty mají obecně nižší statistické charakteristiky (rozptyl aj.) než původní data. Tato metoda JPEG není obecně implementována ve všech dekodérech JPEG a podporuje ji spíše komerční software. Lze její pomocí dosáhnout kompresního poměru až 2 : 1.

FlashPix

Zajímavým obrazovým formátem je FlashPix. Byl vytvořen konsorciem Eastman Kodak, Live Picture, Microsoft a Hewlett-Packard a umožňuje uchovat v rámci jediného souboru jeden obraz ve více rozlišeních. Obraz je možné doplnit velkým množstvím popisných informací. Primárně použitá komprese je JPEG, ale díky několika obrazům v souboru je jeho velikost dokonce větší, než srovnatelného nekomprimovaného souboru. Pokud má však soubor zobrazit webový prohlížeč nebo grafický program, načte se pouze rozlišení nejblíže vhodné pro aktuální rozlišení obrazovky a tím dochází k úspoře přenosové kapacity. Formát se v kartografii prakticky nepoužívá.

JPEG2000

Kompresní algoritmus JPEG, který se používá již od roku 1988, přestal po několika letech zcela vyhovovat potřebám grafického odvětví a přistoupilo se proto k hledání nástupné technologie, která by zejména umožnila vyšší stupeň komprese při zachování kvality. Algoritmus JPEG2000 je založen na wavelet-transformaci (česky někdy též vlnková transformace). Má jednotnou kompresní a dekompresní strukturu a je sám o sobě progresivní, dokonce je možné při ukládání uvést, které prvky se budou načítat jako první (řazení dle kvality, pozice, rozlišení, barvy). Hodí se daleko lépe než JFIF pro zpracování nízkobitových obrazů a obrazů obsahujících ostré hrany (text apod.). Zajímavostí je možnost zaheslovat dokument a nechat volně přístupnou jen určitou kvalitu (formát umožňuje ovládání komprese faktorem kvality podobně jako u JPEG). Umožňuje také podobně jako JFIF ukládat v bezztrátovém režimu, který je zde mnohem silnější a dává lepší kompresní výsledky. Je možno uložit metadata a další popisné údaje k obrazu.

Nevýhodou formátu je, že je částečně patentově chráněn (vlastníkem společnost LuraTech), což neumožňuje jeho rychlejší implementaci – rozšíření tohoto formátu je zatím malé. Přestože jsou k dispozici plug-iny pro základní komerční grafické editory i pro webové prohlížeče, k rapidnějšímu užívání JPEG2000 na webu ani jinde zatím nedochází.

Enhanced Compression Wavelet

Formát ECW založený podobně jako JPEG2000 na wavelet-transformaci, potkal dokonce i podobný osud – přes velmi dobré kompresní poměry při daleko lepším vizuálním dojmu než JFIF doplatil na špatnou licenční politiku a jeho rozšíření a podpora jsou velmi malé. Dává při podobném kompresním poměru poněkud horší vizuální výsledky než JPEG2000, přesto je pro použití např. na ortofotomapy nebo satelitní snímky nesrovnatelně vhodnější a úspornější než všudypřítomná komprese JPEG.

Další kapitoly tématu