Formát JPEG 2000 se měl stát náhradou za JPEG. Byl vytvořen stejným výborem v roce 2000. Jádro formátu (část 1) je standardizováno mezinárodním standardem ISO/IEC 15444–1 neboli doporučením ITU-T T.800. Proti JPEGu přináší řadu vylepšení, vyšší kompresní poměr při stejné kvalitě, vyšší odolnost k chybám atd. Komprese i dekomprese je však výpočetně náročnější.
Rozsekání na dlaždice
JPEG 2000 smývá rozdíl mezi ztrátovou a bezeztrátovou kompresní metodou. Jádrem tohoto formátu je diskrétní vlnková transformace (DWT). Následující text popisuje pouze jádro tohoto formátu (část 1).
Na obrázku výše vidíme schéma komprese metodou JPEG 2000. Předzpracování znamená transformaci barevného modelu obrazu a jeho rozsekání na dlaždice. Následně se na každé dlaždici spočítá diskrétní vlnková transformace (DWT). Koeficienty DWT se pak kvantují a některé z nich mohou být předsunuty před ostatní (ROI). Posledním krokem je kompresní algoritmus EBCOT, který kóduje DWT po bitových rovinách.
Ke ztrátové kompresi používá formát JPEG 2000 stejně jako JPEG modelu YCbCr. Převod z RGB lze provést podle rovnice níže.
Tato transformace vstupních složek se nazývá ICT (Irreversible Color Transform). Pro bezeztrátovou kompresi se použije transformace RCT (Reversible Color Transform), vizte rovnici níže, kterou lze vypočíst aritmetikou celých čísel (integer). Po převodu do YCbCr může následovat podvzorkování barvonosných složek. Složky jsou dále zpracovávány nezávisle.
Pro snížení výpočetní náročnosti je možné vstupní obraz rozsekat do dlaždic, které jsou dále zpracovávány nezávisle. Dlaždice jsou obdélníkové oblasti stejných rozměrů. Jejich velikost je definována v segmentu markeru SIZ .
Diskrétní vlnková transformace
Na každé dlaždici je pak spočtena diskrétní vlnková transformace. Výsledkem transformace je několik úrovní rozkladu a tak i několik rozlišení. Každá úroveň (rozlišení) se skládá ze tří podpásem HL, LH a HH. Na nejvyšší úrovni rozkladu (nejmenším rozlišení) se nachází zbývající podpásmo LL. Jednotlivé úrovně rozkladu odpovídají jednotlivým rozlišením, která jsou s každou další úrovní v každém rozměru poloviční.
Pro ztrátovou kompresi se používá vlnka CDF 9/7, pro bezeztrátovou CDF 5/3 (lze počítat v celočíselné aritmetice). Další část standardu (část 2) umožňuje použít libovolnou diskrétní vlnku. Na obrázku výše je zobrazena vlnka CDF 5/3 použitá pro bezeztrátovou kompresi.
Pohled dovnitř
Podívejme se nyní, jak JPEG 2000 funguje uvnitř. Každá barevná složka je rozsekána na dlaždice. Na každé z nich je spočtena DWT. Jednotlivá rozlišení jsou u DWT znázorněna barevně. Každá úroveň rozkladu obsahuje tři podpásma (HL, LH, HH). Poslední úroveň sestává pouze z podpásma LL.
Podpásma jsou rozdělena na oblasti a bloky kódování. Každý blok je po bitových rovinách zkomprimován algoritmem EBCOT. Komprimovaný tok je přeorganizován do vrstev a následně zaobalen do paketů. Kvantování (kvantizace) je proces, při kterém jsou reálné koeficienty DWT převedeny na celá čísla (integer).
Oblast zájmu (regions of interest, ROI) je část obrazu, která je komprimována prioritně vůči ostatním méně důležitým částem (pozadí). Při dekompresi je tedy ROI známa dříve než pozadí. To může být užitečné třeba při načítání velkých obrázků po síti. Kompresor může vyznačit jako ROI například všechny obličeje na fotografii. Při dekompresi jsou nejprve dekódovány tváře spolu s hrubým náhledem na pozadí, později je pozadí upřesněno. Pokud je komprimovaný datový tok utnut uprostřed přenosu, jsou tváře dekomprimovány ve výrazně vyšší kvalitě než zbytek obrazu.
Jádro formátu JPEG 2000 využívá k vyznačení ROI algoritmus Maxshift. Druhá část standardu pak definuje ještě další možnost vyznačení ROI pomocí obdélníků a elips. Principem algoritmu Maxshift je posunout magnitudy koeficientů popředí (ROI) nad koeficienty pozadí o s bitových rovin. To lze interpretovat jako násobení magnitud koeficientů hodnotou 2s. Dekodéru je známa velikost posunu s a umí tedy rozlišit, které koeficienty jsou posunuty. Kompresní algoritmus EBCOT kóduje koeficienty po bitových rovinách (od MSB po LSB) a zpracuje tedy všechny koeficienty popředí ještě před koeficienty pozadí. Posun s musí být větší nebo roven počtu bitových rovin maximálního koeficientu pozadí.
Jednotlivá podpásma jsou dále rozdělena na obdélníkové oblasti (precinct). Oblasti odpovídají prostorovým částem obrazu a jsou tak využitelné při sekvenčním pořadí progresivního přenosu. Velikostí oblasti je v důsledku omezena velikost paketů (dále). Informace o oblastech jsou uloženy v segmentech COD nebo COC. Oblasti se dále dělí na bloky kódování.
Pro účely kódování koeficientů algoritmem EBCOT jsou podpásma rozčleněna do obdélníkových oblastí zvaných bloky kódování (code-blocks). Velikost těchto bloků je v každém směru mocninou dvou je stejná pro všechny úrovně a podpásma DWT. Pokud blok přesahuje hranice podpásma, kódují se z něj jen ty koeficienty, které do podpásma ještě spadají. Profil 0 omezuje velikost bloku na 32×32 nebo 64×64 koeficientů.
Datový tok (pakety) je rozdělen na tzv. vrstvy (layers). Účelem je postupné zvyšování kvality s každou další dekódovanou vrstvou. Vrstvy se dále skládají z paketů. Každá vrstva obsahuje další bity z bloků kódování.
Algoritmus EBCOT kóduje za pomoci aritmetického kodéru (MQ) koeficienty bloků do toku bitů. Kódování probíhá po bitových rovinách od nejvýznamnějšího (MSB) po nejméně významný bit (LSB). Kódování každé bitové roviny probíhá v pořadí ve třech průchodech – propagace významnosti, upřesnění magnitudy a úklid (cleanup). Na nejvýznamnější bitové rovině se začíná úklidem (zatím není žádný významný koeficient). Při propagaci významnosti se kódují bity koeficientů, u kterých je velmi pravděpodobné, že se stanou významné (bity s významnými sousedy). Upřesnění magnitudy upřesní bity již dříve významných koeficientů.
Při úklidu se zakódují všechny zbývající bity. V rámci bitové roviny se bity zpracovávají po proužcích výšky čtyři bity, v rámci proužku pak po sloupcích (obrázek výše). Bity jsou v jednotlivých průchodech kódovány kontextovým aritmetickým kodérem s kontextem osm okolních bitů. Proud bitů produkovaný tímto algoritmem lze v mnoha bodech přerušit. Dekódovaný obraz pak kvalitativně odpovídá počtu použitých bitů. Pro bezeztrátový režim se zpracují všechny bity.
Formování datového toku
Všechna komprimovaná data obrazu jsou nakonec zformována do paketů. Paket je spojitý segment, který obsahuje data z jedné konkrétní dlaždice, vrstvy (kvalita), barevné složky, rozlišení a oblasti (pozice). Pakety jsou uvozeny svou hlavičkou. Pořadí, v jakém se pakety v datovém toku objevují, může být určeno čtyřmi osami – vrstva (kvalita), barevná složka, rozlišení a oblast (pozice). Toto pořadí může být v průběhu datového toku měněno.
Datový tok je uložen do nízkoúrovňového formátu, který má shodnou syntaxi s formátem JIF. Jsou však použity odlišné markery. Tento datový tok je pak zaobalen do souborového formátu. První část standardu definuje souborový formát JP2 s příponou .jp2. Ten umožňuje přiložit metadata ve formě XML (např. XMP).
(Autorem obrázků je David Bařina.)




