3KOMPRESIJA SLIKE

(Pripremili: Milorad Cvjetković i Miran Slade-Šilović)

1.UVOD

U današnje vrijeme sve su veći zahtjevi za prijenosom što veće količine podataka. To se pokušava realizirati hardware-skim rješenjima, koja ipak pomalo počinju dosezati svoje realne granice (ograničenja koja nameću same tehnološke mogućnosti), pa se pribjegava software-skim rješenjima, koja nastoje sliku sažeti na što manju veličinu, da bi se moglo prenijeti više slika u jedinici vremena, preko istog ograničenog prijenosnog sustava. Kompresijom podataka (slika) mogu se postići izvrsni rezultati, npr. slika dimenzija 1024 pixela x 1024 pixela x 24 bita, bez kompresije zauzima oko 3 MB memorijskog prostora i potrebno je oko 7 minuta za njen prijenos koristeći brzu 64 Kbit/s ISDN liniju, dok je za sliku kompresiranu u omjeru 10:1 potrebno 300 KB memorijskog prostora, a za njen prijenos je potrebno oko 30 sekundi. Prijenos velikih slikovnih datoteka predstavlja usko grlo distribuiranih sustava.

Kod kompresije važni su prenosivost i performance. Današnja rješenja za kompresiju su relativno prenosiva (između različitih platformi) budući da uvelike zadovoljavaju međunarodne standarde.

Postoje dvije vrste algoritama za kompresiju slike :

- bez gubitaka

- sa gubicima

Metode sa gubicima zasnivaju se na modelima ljudske percepcije (više kompresiraju one atribute slike koji manje doprinose ukupnom izgledu slike) , one uzrokuju degradaciju slike u svakom koraku (svakim slijedećim korakom kompresije/dekompresije slika se degradira) , ali najčešće omogućuju daleko veće omjere kompresije nego metode bez gubitaka.

 

 

 

 

2.Metode kompresije bez gubitaka :

Ove metode osiguravaju identičnost dekompresirane i izvorne slike. Ovo je vrlo važno u nekim područjima, npr. u medicini gdje je osim visoke razlučljivosti potrebno i osigurati nepromjenjeno arhiviranje slika, što je i zakonski regulirano.

2.1. Run-length kodiranje

To je vrlo jednostavna metoda koja koristi činjenicu da su u mnogim datotekama česti nizovi istih vrijednosti (npr. jako korelirane slike). Ovaj algoritam provjerava datoteku, te ubacuje specijalne znakove (engl. ‘token’) svaki put kad naiđe na niz od dva ili više jednakih znakova.

Karakteristike : Lako se implementira, software-ski ili hardware-ski, vrlo je brzo, lako se provjerava, ali ima ograničene kompresijske mogućnosti.

 

Slika 1.Run-length kod

2.2. Huffman kodiranje

Ovaj algoritam je razvio D.A.Huffman i temelji se na činjenici da se neki znakovi pojavljuju češće nego neki drugi. Na toj osnovi algoritam izgrađuje težinsko binarno stablo (na osnovu frekvencije pojavljivanja pojedinih znakova). Svakom elementu tog stabla pridružuje se nova kodna riječ određena pozicijom znaka u stablu. Najčešće ponavljani znak postaje korjen stabla i njemu se pridružuje najkraća kodna riječ, dok kodna riječ najrjeđe ponavljanog znaka može biti i dvostruko duža od samog znaka.

Karakteristike : Omjer kompresije iznosi oko 1 : 2 za nekorelirane slike, za tipične slike omjer kompresije iznosi oko 1 : 1.2 do 1 : 2.5.

Slika 2. Huffmanovo kodiranje

2.3. Entropijsko kodiranje

Najčešće se koristi pristup J.Ziv/Lempel (tzv. Lempel/Ziv ili LZ) koji se zasniva na tome da koder i dekoder sadrže jednak riječnik metasimbola od kojih svaki predstavlja cijelu sekvenciju ulaznih znakova. Ako se sekvencija ponovi nakon što je pronađen simbol za nju, onda se ona zamjenuje tim simbolom. Kodirani podaci ne trebaju sadržavati riječnik (nizovi znakova = simbol) budući da je riječnik sadržan u koderu i dekoderu.

Karakteristike : Omjer kompresije iznosi do 1 : 8 za prosječne GIF slike, relativno su problematični za implementaciju budući da sadrže tablice koje rastu s izvođenjem algoritma.

 

Slika 3.Kodiranje kodnom tablicom

2.4. Kodiranje područja

To je poboljšana verzija run-length kodiranja koja iskorištava dvodimenzionalnu karakteristiku slika. Algoritam pokušava pronaći pravokutne regije jednakih karakteristika koje se zatim kodiraju u opisnoj formi kao elementi s dvije točke i određenom strukturom. Cijela slika treba biti opisana da bi se omogućilo dekodiranje bez gubitaka. Moguće performanse temelje se na vrlo kompleksnom problemu pronalaženja najvećih područja jednakih karakteristika.

Karakteristike: Vrlo je efikasan način kodiranja, ali zbog svoje nelinearnosti onemogućuje hardware-sku implementaciju, te je relativno spor.

 

3.Metode kompresije sa gubicima :

Ove metode sastoje se od tri komponente :

Prvi dio, modeliranje slike, usmjeren je na iskorištavanje statističkih karakteristika slike (npr. korelacija). Pokušava se da što manji broj koeficijenata u transformiranoj domeni sadrži što veći dio informacija originalne slike, ova faza najčešće ne rezultira nikakvim gubitkom informacija.

Cilj kvantizacije je da smanji količinu podataka potrebnu za predstavljanje informacija u novoj domeni. Kod kvantizacije u većini slučajeva dolazi do gubitka informacija.

Kodiranje optimizira reprezentaciju informacija, te se može unijeti detekcija grešaka.

3.1. Transformacijsko kodiranje

Slika dimenzija NxN se dijeli u manje blokove dimenzija nxn i na svakom od njih se primijenjuje unitarna transformacija. Cilj transformacije je da dekorelira originalni signal, što najčešće rezultira raspodjelom najvećeg dijela energije u nižim koeficijentima transformacije. Na taj način mnogi koeficijenti se mogu zanemariti nakon kvantizacije.

 

Cijeli proces može se svesti na četiri koraka :

Transformacijsko kodiranje vrši se u dva koraka: segmentacija (podjela slike na dvodimenzionalne vektore), te transformiranje (primjena izabrane transformacije).

Naknadno se vrši kvantizacija koja se može provesti na više načina. Klasični pristupi su primjena ‘zonalnog kodiranja’, koje se sastoji od skalarne kvantizacije koeficijenata koji pripadaju predefiniranom području i primjena ‘kodiranja pragom’ kod kojeg se odbacuju koeficijenti čija apsolutna vrijednost prelazi neku unaprijed zadanu vrijednost praga. Postoji još jedna mogućnost, tzv. vektorska kvantizacija, koja omogućuje veće omjere kompresije. JPEG i MPEG algoritmi koriste transformacijsko kodiranje.

3.2. Vektorska kvantizacija

Vektor-kvantizator se može matematički definirati kao transformacijski operator koji transformira R-K prostor u konačan podskup X u R-K prostoru predstavljen sa N vektora. Taj podskup X postaje vektorska kodna knjiga.

Linde , Buzo i Graz su generalizirali metodu optimalnog skalarnog kvantizatora koju su predložili Lloyd i Max, a koja se temelji na iteraciji slijedećih jednostavnih koraka :

Jednom kad je kodna knjiga generirana, kodiranje se sastoji u primjeni operatora na vektore originalne slike. U praksi svaka grupa od n pixela bit će kodirana kao adresa u vektorskoj kodnoj knjizi , tj. broj od 1 do N.

 

 

3.3. Segmentacija i aproksimacijske metode

Ovim metodama slika se modelira kao mozaik regija, od kojih je svaka karakterizirana određenim stupnjem uniformnosti svojih pixela.

Klasični primjeri ovih metoda su polinomska aproksimacija i aproksimacija teksturama. Polinomska aproksimacija zasniva se na rekonstrukciji regija na osnovi srednjih vrijednosti polinomskih funkcija, dok se aproksimacija teksturama temelji na sintezi parametriziranih tekstura baziranih na nekom modelu.

3.4. ‘Spline’ aproksimacijske metode

Osnovni koncept se zasniva na interpolaciji podataka iz grupe točaka koje dolaze iz originalne slike na takav način da zadovoljavaju određeni kriterij greške. Dobar interpolator mora zadovoljavati određene vizualne kriterije. Bilinearna interpolacija se lako implementira i daje vrlo dobre vizualne rezultate. Regularizacija koristi principe minimizacije energije.

3.5. Fraktalno kodiranje

Ovaj način kodiranja zasnovan je na opisu slike pomoću fraktala (njihovih parametara), dobar je za prirodne scene. U srednjim osamdesetim se započelo s proučavanjem ovih načina kodiranja, zabilježeni su izvrsni rezultati, omjeri kompresije oko 10000 : 1 i veći, ali problem je bio izrazito velika kompleksnost, te jako dugo vrijeme izvođenja takvih algoritama (za jednu sliku bilo je potrebno oko 100 sati rada na Cray-u), pa je njihova primjena za komercijalne svrhe bila neprihvatljiva. Tijekom godina ti algoritmi su unapređivani, tako da danas postoje njihove upotrebljive verzije, a radi se i na njihovoj implementaciji u hardware-ski oblik.

3.6. Usporedba metoda sa gubicima

Performanse algoritama za kodiranje s gubicima se najčešće izražavaju preko dva faktora :

  1. faktor kompresije
  2. distorzija proizvedena nakon rekonstrukcije

Prvi faktor je objektivan, dok drugi uvelike ovisi o samom izboru slike.

Danas se najčešće koristi transformacijsko kodiranje kao što je npr. JPEG budući da postoje već neki oblici standardizacije procesa.

4. PRIMJENE NAVEDENIH METODA

U nastavku navedeni su neki od primjera standardiziranih formata za kompresiju slike u kojima se upotrebljavaju navedeni principi odnosno algoritmi.

JPEG (Joint Photographic Experts Group), ime dolazi izravno iz imena vijeća koje je sastavilo taj standard, a predstavlja način kompresije koji najbolje djeluje na slike s puno boja ili slike sastavljene od nivoa sive boje, koje prikazuju scene iz stvarnog svijeta. Dobar je za fotografije, ali nije baš uspješan pri kompresiji jednostavnih crtanih slika ili linija, ima problema s oštrim rubovima. Služi isključivo za kompresiju mirnih slika.

Napravljen je tako da koristi nesavršenosti ljudskog oka, odnosno činjenicu da se okom bolje primjećuju male razlike u svjetlini nego u boji. Ova činjenica može stvarati izvjesne probleme, ako slike obrađene na ovaj način ne analizira čovjek nego stroj.

Važno svojstvo JPEG metode je u mogućnosti traženja kompromisa između veličine slike i njene kvalitete. Za dobru kvalitetu, slike se ne mogu jako kompresirati, ali ako nam nije jako bitna kvaliteta možemo postići visok stupanj kompresije. Postoji još jedna važna činjenica vezana uz kvalitetu slike. Možemo birati između kvalitete slike i brzine dekodiranja, koristiti manje točne aproksimacije, ali zato jako brze i obrnuto.

Promatrajući slike iz stvarnog života JPEG gubi puno manje informacija nego GIF, koji predstavlja također jednu metodu kompresije slika. Jedini pravi nedostatak JPEG-a sastoji se od toga da svaki put kada kompresiramo i ponovo dekompresiramo sliku gubimo sve više informacija. Vrlo je važno ograničiti broj kompresija i dekompresija između početne i završne verzije slike. Postoje neke operacije, rotacija za 90° , koje se mogu izvesti, uz neka ograničenja u veličini slike, bez dekompresije slike.

Promatrajući GIF možemo zaključiti da postoje izvjesne primjene u kojima daje bolje rezultate ne samo u kvaliteti nego i omjeru početne i kompresirane slike. Takve primjene odnose se na slike koje sadrže samo nekoliko različitih boja, kao što su nacrtane linije ili jednostavne crtane slike. Crno-bijele slike ne bi se smjele pretvarati u JPEG format, potrebno je barem 16 sivih nivoa da bi to imalo smisla.

JPEG može osigurati kompresiju 20:1 sa svim bojama bez vidljivih gubitaka informacija. Ne kompresirani podaci su veličine 24 bita po pixelu. Kompresija od 30:1 do 50:1 moguća je uz manje i srednje gubitke dok je, za primjene u kojima nije jako važna kvaliteta, moguće postići kompresiju i 100:1.

Početna, ne kompresirana slika, za GIF format mora biti veličine 8 bita po pixelu. Može se osigurati kompresija 3:1, a uz neke dodatne operacije i 5:1.

Osnovni JPEG format sprema se kao jedan prijelaz preko slike od vrha do dna. PROGRESIVNI JPEG podijeljen je u nekoliko prijelaza preko slike. Prvi prijelaz daje sliku vrlo loše kvalitete, ali zauzima vrlo malo mjesta, slijedeći postupno poboljšavaju kvalitetu slike. Prednost ovog načina je u tome, što se slika može vidjeti odmah nakon prijenosa, u početku lošije kvalitete, ali s vremenom kako stižu novi podaci kvaliteta se popravlja. Ovaj način našao je svoju primjenu kroz popularnost World Wide Web-a i njegovih pretraživača, koji rade sa sporim modemskim vezama.

LOSSLESS JPEG je potpuno drugačiji princip od osnovnog JPEG-a, a najznačajnija prednost mu je garancija istovjetnosti svih bitova deompresirane i originalne slike. Može izvršiti kompresiju podataka sa svim bojama u omjeru 2:1, a upotrebljiv je isključivo na slike s kontinuiranim prijelazima boja.

Danas postoji i novi stanadard nazvan JPEG-LS koji omogućuje veći nivo kompresije, također bez gubitaka, ali je još uvijek puno lošiji, po omjeru originalne i kompresirane slike, od osnovnog JPEG-a.

MPEG je standard za kompresiju pomićnih slika odnosno videa ("motion picture compression"). Upotrebljava slične tehnike kao JPEG. Koristi se činjenicom da su slike, koje slijede jedna za drugom, a dio su nekog videa, u mnogočemu slične. Nedostaci se sastoje u prvom redu u tome što je potrebno puno proračuna za generiranje kompresirane sekvence, vrlo je teško editirati MPEG sekvencu na razini pojedine sličice.

Vrlo često pojavljuje se M-JPEG, koji je vrlo popularan za editiranje videa, ali je problem što nije definiran kao standard.

Postoji čitav niz korisničkih programa koji omogućuju gledanje slika, neki od njih su:

X WINDOWS odličan za gledanje JPEG, GIF i dr. , može raditi konverzije između različitih formata, te neke jednostavnije transformacije sa slikama.

QPV je vrlo brz, ali se nešto gubi na kvaliteti slike, posebno kod slika sa 256 ili manje boja. Primjenjiv kod pretraživanja velikog broja slika.

SEA je novi program za gledanje i konverziju formata JPEG, PNG, GIF i dr., brži je od prethodnog. Može čitati i progresivne JPEG-ove.

DVPEG u nekim primjenama brz jednako kao i QPV, u nekim je sporiji, ali daje slike bolje kvalitete.

WinJPEG prikazuje i vrši konverziju JPEG, GIF, TIFF, BMP. Sadrži funkcije poput podešavanja boja i " slideshow-a ".

ACDsee je brz, dobar za JPEG, GIF, PNG , i dr. Nije moguće vršiti editiranje slika niti konverzije formata.

Photo shop 5.0 ima mogućnost prikaza progresivnog JPEG-a.

PIE posebno za korisnike digitalnih kamera, može rotirati slike u JPEG formatu bez gubitaka.