Sadržaj

Analiza JPEG XR formata

Sažetak

JPEG XR je standard razvijen od strane JPEG odbora 2009. godine. Razvijen je prvenstveno s ciljem da unaprijedi mogućnosti spremanja digitalnih fotografija. Postiže visoku kvalitetu slika uz razumnu vremensku i prostornu složenost što ga čini spojem najboljeg od JPEG i JPEG 2000 standarda. Uz mogućnost kompresije bez gubitka, širokim izborom modela boja, te potporom za HDR fotografiju, ima velik broj mogućih primjena.

Keywords: JPEG XR; JPEG; image formats; image compression; TIFF

Uvod

U današnje vrijeme, kada se digitalne tehnologije razvijaju iznimno brzo, digitalna fotografija i digitalne slike su postale vitalan dio svijeta oko nas. Taj razvoj je uvelike omogućen razvojem JPEG standarda. JPEG je razvijen od strane „Joint Photographic Experts Group“ (JPEG) odbora 1992. godine i od svojeg pojavljivanja čini jedan od najvažnijih standarda u digitalnom svijetu općenito [1]. JPEG standard je definirao metodu koja služi za kompresiju digitalnih fotografija uz gubitak. Uz to, omogućio je prilagodbu omjera gubitka kvalitete i smanjenja prostornog zauzeća ovisno o korisničkim potrebama. Međutim, zbog mnogo novih značajki i poboljšanja performansi u svijetu digitalne fotografije, JPEG tehnologija je počela dosezati svoja ograničenja te time usporavati razvoj tog područja. Iz tog se razloga javila potreba za razvojem novih i inovativnijih standarda koji prate potrebe modernog svijeta.

Nasljednici JPEG-a

Od 1997. do 2000. JPEG odbor je odgovorio na nove zahtjeve razvojem novog standarda nazvanog JPEG 2000. Taj je standard donio mnoge novine i funkcionalnosti, no zbog svojih visokih računalnih zahtjeva nikad nije imao većeg utjecaja u mobilnoj i fotografskoj industriji[2]. Brojni ozbiljni fotografi su stoga počeli koristiti „raw“ formate kako bi doskočili tehničkim ograničenjima postojećih JPEG formata. „Raw“ formati međutim imaju svoja ograničenja, kao što su veliki prostorni zahtjevi i slaba interoperabilnost. Zbog svega od navedenog, JPEG odbor je 2009. razvio novi sustav kodiranja slika pod nazivom „JPEG extended range“ (JPEG XR) koji služi za reprezentaciju slika „stalne boje“. To je vrsta slika kod kojih je svaki piksel prikazan točno jednom bojom, kao kod digitalnih fotografija. Slike dobivene rasterskim tehnikama stoga nije moguće prikazati ovim formatom. Dizajniran je kako bi se riješila ograničenja postojećih formata uz mogućnost prikaza slika visoke kvalitete, ali uz razumnu upotrebu računalnih i prostornih resursa. Sam naziv „prošireni raspon“ (extended range) govori o namjeri da format ima širi raspon primjena od originalnog JPEG formata. JPEG XR je kompresijski format baziran na Microsoftovoj „HD Photo“ tehnologiji koja je dizajnirana upravo kako bi zadovoljila rastuće zahtjeve digitalne fotografije. Također podržava fotografije HDR („High Dynamic Range“) formata koje su često korištene te sadrži brojne druge značajke kojima je cilj poboljšanje korisničkog iskustva. Širok raspon JPEG XR-a se konkretno odnosi i na broj bitova koji se koristi za prikaz boje koristeći RGB model. Kod JPEG-a fiksno koristi 8 ili 12 bitova za prikaz svake od boja, što često nije dovoljno da bi se zadovoljilo današnje potrebe. Isto tako, korisnici mogu imati vrlo ograničen prostor ili računalnu moć pa žele koristiti manje od 8 bitova za prikaz boja. Iz tog razloga, JPEG XR nema fiksno određen broj bitova te ga korisnik može prilagoditi svojim potrebama. Ovaj format također nudi i opciju prikaza brojem s pomičnom točkom ili pak korištenje RGBE formata u slučaju HDR fotografija. Na slici 1 se može vidjeti usporedba između slika spremljenih u različitim JPEG formatima u odnosu na originalnu („raw“ ) sliku. Vidi se da su JPEG 2000 i JPEG XR slične kvalitete, ali kvalitetniji od originalnog JPEG-a uz malo veće memorijsko zauzeće. U nastavku ovog rada detaljnije će biti pokriven JPEG XR format i njegove karakteristike.

Slika 1: Razlike kod slike spremljene u različitim JPEG formatima [3]

JPEG XR format datoteke

JPEG XR datoteke uobičajeno imaju ekstenziju „.jxr“. JPEG XR koristi skladišni format baziran na TIFF formatu koji je prikazan na slici 2. Sadrži IFH („Image File Header“) u kojem su zapisane osnovne informacije poput redoslijeda zapisa bajtova (little endian ili big endian), broj verzije koja se koristi i pomak do prvog IFD-a („Image File Directory“). TIFF format datoteke može imati spremljen više slika pa u tom slučaju ima onoliko IFD-ova koliko ima slika. Svaki IFD ima početno polje koje naglašava broj oznaka (tagova) koji slijedi. Zatim ima točno taj broj oznaka koje sadrže određene metapodatke o slici, a zadnja oznaka obično pokazuje na pomak na kojem je spremljena slika (bit-mapa). JPEG XR-a pod oznake sprema informacije o alfa kanalu, metapodacima slike, opcionalne XMP metapodatke, opcionalne Exif metapodatke i lokaciju slike. Slika je spremljena kao skup slijednih podataka na navedenoj lokaciji. Opcionalni alfa kanal se, ako postoji, kompresira kao zasebni podatak što omogućava dekodiranje podataka o slici neovisno o prozirnosti u aplikacijama koje ne podržavaju prozirnost. Mana korištenja TIFF formata jest to što datoteke tog formata imaju ograničenje veličine od 4GB pa što može predstavljati potencijalno ograničenje za neke korisnike.

Slika 2: TIFF format datoteke [4]

Funkcionalnosti

Kao što je navedeno u prošlom poglavlju, JPEG XR nudi mnogo funkcionalnosti koje nude širok spektar primjena u mnogim područjima. Neke od najvažnijih prednosti JPEG XR-a u odnosu na JPEG kriju se u algoritmu kompresije. JPEG XR nudi veću kompresiju slike za ekvivalentnu kvalitetu JPEG-u. Također, JPEG XR nudi kompresiju bez gubitka kvalitete s obzirom da je postupak jednak neovisno o željenoj kvaliteti kompresije. Još jedna važna značajka JPEG XR-a jest to da se kodirana slika može podijeliti u dijelove od kojih se svaki može dekodirati zasebno. To omogućava brzi pristup do nekih dijelova slike bez potrebe za dekodiranjem cijele slike. Sljedeća važna funkcionalnost jest već spomenuta u prethodnom poglavlju, a odnosi se na preciznost prikaza boje. Dok JPEG podržava samo YCbCr kodiranje boje, JPEG XR uz YCbCr podržava mnogo više različitih modela prikaza boje. Za prikaz u RGB prostoru, JPEG XR interno radi pretvorbu u YCoCg prostor. Također ima i neovisni „alfa“ kanal koji se može koristiti za kontrolu prozirnosti. Neki od različitih načina prikaza boje uključuju: 16-bitni RGB prikaz kod kojeg se za RGB koristi samo 5 bitova za prikaz svake boje; klasičan 24-bitni RGB prikaz sa 8 bita po boji; 32-bitni RGB prikaz s 10 bita za 2 boje i 12 bita za treću (kada se određena boja želi naglasiti); 48-bitni prikaz kod kojeg se komponente mogu prikazati kao cijeli brojevi, brojevi sa statičnom ili brojevi s pomičnom točkom (16 bita po komponenti); 96-bitni prikaz kod kojeg se komponente prikazuju s 32 bita po komponenti. JPEG XR također podržava i CYMK način prikaza boje kod kojeg se svaka komponenta prikazuje s 16 bita (ukupno 64 bita po pikselu). Također podržava i RGBE („Radiance“) model za vjerni prikaz HDR fotografija. Uz prethodno navedene modele, JPEG XR podržava i crno bijeli prikaz te multi-kanalne (s više komponenti) prikaze s proizvoljnim brojem kanala. JPEG XR također ima podršku za vremenski efikasne manipulacije sa slikom u kompresijskoj domeni, podršku za dodane privitke (thumbnail) i progresivno rafiniranje rezolucije. Svoju vremensku efikasnost JPEG XR postiže korištenjem isključivo operacije s cijelim brojevima (nikad dijeljenje) kod kompresije i dekompresije slika, čak i za slike koje rade s brojevima s pomičnom točkom za reprezentaciju boje u dekompresijskoj domeni. Bez obzira na to, ima garanciju će rezultati dekodiranja biti točni na bit i kod brojeva s pomičnom i brojeva s fiksnom točkom. JPEG XR standard definira sintaksu za reprezentaciju kompresiranih podataka i specificira pripadni proces dekodiranja. Iz tog razloga je JPEG XR primjenjiv za upotrebu u širokom spektru različitih računalnih, ugradbenih i mobilnih sustava.

Arhitektura

Sljedeća važna stavka JPEG XR-a jest njegova arhitektura. JPEG XR standard definira sintaksu i semantiku kodiranih slika te pripadni proces dekodiranja koji ponovno generira izlaznu sliku iz kodiranih slika. Ulazna slika je obrađena uz pomoć kodera koji kreira JPEG XR kodiranu sliku. Dekoder tada obrađuje kodiranu sliku i taj proces rezultira slikom koja je ili približna ili točna reprezentacija ulazne slike (ovisno o vjernosti kodera). Specifikacija kodiranja slike uključuje skladišni format baziran na oznakama za spremanje i razmjenu kodiranih slika. Također su specificirani profili i razine koji određuju potrebnu razinu sukladnosti za kodere i dekodere. JPEG XR je dizajniran kako bi bio što vremenski i memorijski efikasniji te što prikladniji za ugradbene sustave. Kao što je već prethodno spomenuto, ima male prostorne zahtjeve i koristi isključivo operacije s cijelim brojevima bez dijeljenja kako bi bio što vremenski efikasniji. Također je vrlo prikladan za paralelizaciju zbog čega je prikladan za implementaciju čak i u slabijim procesorskim sustavima. JPEG XR je baziran na transformaciji bloka i koristi uobičajene postupke koji se koriste kod kompresije slika, poput pretvorbe boje, prostorne transformacije, skalarne kvantizacije, skeniranja koeficijenata i entropijskog kodiranja. Prostorna transformacija služi za pretvorbu podataka u frekvencijsku domenu za što se koristi LBT („Lapped Biorthogonal Transform“) transformacija. Ta transformacija zahtijeva relativno malen broj operacija s cijelim brojevima i za kodiranje i za dekodiranje. Također je potpuno reverzibilna zbog čega je podržana kompresija bez gubitka kvalitete. Ta je transformacija bazirana na dva osnovna operatora: transformacija jezgre i opcionalno filtriranje preklapanja. Transformacija jezgre je bazirana na često korištenoj DCT („Discrete Cosine Transform”) transformaciji koja koristi prostornu korelaciju unutar bloka za optimizaciju postupka. Filtriranje preklapanja je pak zaduženo da koristi korelaciju između blokova. Za što vjerniju kvantizaciju baziranu na osjetljivosti ljudskog oka, JPEG XR koristi fleksibilnu kvantizaciju koeficijentima kontroliranu parametrima kvantizacije. Odabir tih parametara varira ovisno o prostornim regijama, frekvencijskim pojasevima te kanalima boje. Kako bi se što više produbila kvaliteta kompresije, koristi se predviđanje koeficijenata kako bi se smanjile redundancije među blokovima. Skeniranje koeficijenata se koristi kako bi se dvodimenzionalno polje koeficijenata transformacije pretvorilo u jednodimenzionalni vektor za kodiranje. Uzorci skeniranja se tako dinamički prilagođavaju bazirano na lokalnim statistikama kodiranih koeficijenata. Konačno, na koeficijente transformacije se primjenjuje entropijsko kodiranje. U tu svrhu se koristi pristupa zasnovan na VLC („Variable-length coding“) tablicama. Jedna VLC tablica je odabrana iz fiksnog skupa prethodno definiranih tablica, uz prilagodljiv odabir baziran na lokalnim statistikama. Na slici 3 može se vidjeti postupak dekodiranja slike koji je zapravo samo obrnuti prikaz kodiranja slike s obzirom da je postupak reverzibilan.

Slika 3: Postupak dekodiranja slike [2]

Algoritam kompresije

Algoritam kompresije JPEG XR-a jest konceptualno vro sličan JPEG-u. Izvorna slika se obično pretvara u YUV (YCbCr) prostor, nakon čega se opcionalno mogu poduzorkovati ravnine [5]. Nakon toga se ravnine dijele u već spomenute blokove fiksne veličine koji se zatim transformiraju u frekvencijski prostor, nakon čega se radi kvantizacija koeficijenata i entropijsko kodiranje spomenuto u prethodnom poglavlju. Neovisno o sličnosti s JPEG-ovim algoritmom, razlike ipak postoje i bit će detaljnije opisane u nastavku. Prva razlika je već spomenuta, a to je da JPEG XR podržava do 32 bita po komponenti uz mogućnost prikaza brojem s pomičnom točkom. JPEG podržava samo 8 ili 12 bita bez opcije prikaza broja s pomičnom točkom. JPEG interno koristi linearnu transformaciju iz RGB prostora u YCbCr koja ponekad ima gubitaka zbog zaokruživanja. JPEG XR koristi transformaciju bez gubitaka, koja je za RGB definirana s:

<font 14px/inherit;;inherit;;inherit>V = B - R,
U = G - R - ⌈V/2⌉,
Y = G - ⌈U/2⌉.</font>

JPEG koristi 8×8 blokove za svoju frekvencijsku transformaciju, dok JPEG XR obično koristi 4×4 transformaciju uz mogućnost 2×4 i 2×2 transformacija ovisno poduzorkovanju ravnina. Transformacija se kod JPEG XR-a provodi hijerarhijski u dvije razine, na 4×4 blokove unutar 16×16 makro-blokova, dok se kod JPEG-a transformacija provodi samo u jednoj fazi. Razlika postoji i u samoj transformaciji koja se koristi, dok JPEG koristi klasičnu DCT transformaciju koja ima neke gubitke, JPEG XR koristi PCT („Photo Core Transform”) transformaciju koja nema gubitaka i prilagođena je za upotrebu s cijelim brojevima. Već spomenuto filtriranje preklapanja je još jedan korak koji originalni JPEG ne koristi. JPEG XR radi predviđanje koeficijenata na način da se blokovi 4×4 grupiraju u makro-blokove 16×16 te se 16 koeficijenata iz 4×4 blokova zatim provlači kroz još jednu razinu frekvencijske transformacije. Na taj se način dobivaju tri vrste koeficijenata, koeficijenti makro-blokova, koeficijenti blokova i koeficijenti pojedinačnih piksela koji se zatim entropijski kodiraju. JPEG XR također podržava kodiranje slike po pravokutnim dijelovima (pločama) što omogućava brzi pristup dijelovima slike. Sam postupak entropijskog kodiranja JPEG XR algoritma je također kompleksniji od JPEG-a. JPEG XR općenito ima puno adaptivniji postupak pa tako koristi adaptivno preslagivanje koeficijenata (JPEG ima „cik cak“ redoslijed) te oblik adaptivnog Huffmanovog kodiranja za same koeficijente. Razlike postoje i kod kvantizacije. S obzirom da JPEG XR sve ostale faze provodi bez gubitaka, kodiranje je provedeno bez gubitaka kada su svi koeficijenti kvantizacije postavljeni na 1. JPEG nema faze bez gubitaka pa nema mogućnost kompresije bez gubitaka. Kada bi pokušali staviti JPEG XR u kontekst sa starijim JPEG formatima, možemo reći da JPEG XR nudi kvalitetu slike blisku JPEG 2000 uz vremensku i memorijsku efikasnost bližu JPEG-u. Još jedna vrlo zanimljiva karakteristika JPEG XR formata jest to da su slike kompresirane bez gubitaka obično oko 2.5 puta manje od originalnih slika. Iako mu je kvaliteta malo lošija od JPEG 2000 i malo je računalno zahtjevniji od JPEG-a, JPEG XR zasigurno nudi najbolje od oba svijeta.

Zaključak

Sve u svemu, JPEG XR standard ima brojne funkcionalne prednosti nad svojim prethodnicima. Ima bolji algoritam kompresije, više opcija po pitanju modela boja, mogućnost dekodiranja i prikaza samo dijelova slike, i to sve uz vremensku složenost usporedivu s originalnim JPEG formatom. Njegova arhitektura koja se sastoji od kodera i dekodera unosi neke inovacije poput PCT-a koje ne uzrokuju gubitak informacija. Stoga je JPEG XR specifičan i po tome što podržava kompresiju bez gubitka te u takvom načinu rada može smanjiti originalnu sliku do čak 2.5 puta. Neke od njegovih mana su povezane s formatom datoteke koja je bazirana na TIFF arhitekturi koja ima neka ograničenja. Međutim, JPEG XR zasigurno predstavlja bolju alternativu puno poznatijem prethodniku JPEG-u u slučaju da je korisniku potrebna veća kvaliteta u malom prostoru.

Literatura

[1] https://en.wikipedia.org/wiki/JPEG
[2] https://ieeexplore.ieee.org/document/5230820
[3] https://commons.wikimedia.org/wiki/File:Comparison_between_JPEG,_JPEG_2000_and_JPEG_XR.png
[4] https://www.fileformat.info/format/tiff/egff.htm
[5] https://en.wikipedia.org/wiki/JPEG_XR