Professional Documents
Culture Documents
Kompresija Slika Bez Gubitka Informacija
Kompresija Slika Bez Gubitka Informacija
http://www.maturski.org
KOMPRESIJA SLIKE
1.UVOD
U dananje vrijeme sve su vei zahtjevi za prenosom to vee koliine podataka. To se
pokuava realizovati hardware-skim rjeenjima, koja ipak pomalo poinju dosezati svoje
realne granice (ogranienja koja nameu same tehnoloke mogunosti), pa se pribjegava
software-skim rjeenjima, koja nastoje sliku saeti na to manju veliinu, da bi se moglo
prenijeti vie slika u jedinici vremena, preko istog ogranienog prenosnog sistema.
Kompresijom podataka (slika) mogu se postii 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 prenos koristei brzu 64 Kbit/s ISDN liniju, dok je za
sliku kompresovanu u odnosu 10:1 potrebno 300 KB memorijskog prostora, a za njen
prenos je potrebno oko 30 sekundi. Prenos velikih slikovnih fajlova predstavlja usko grlo
distribuiranih sistema.
Kod kompresije vani su prenosivost i performance. Dananja rjeenja za kompresiju su
relativno prenosiva (izmeu razliitih platformi) budui da uveliko zadovoljavaju
meunarodne standarde.
Metode kompresije slike (intraframe compression) mogu se generalno podijeliti u dvije
grupe:
Postoje dvije vrste algoritama za kompresiju slike :
- kompresija bez gubitka podataka (lossless)
- kompresija bez gubitka podataka (lossless)
Slika 3.Kodovanje
kodnom tablicom
2.4. Kodovanje podruja
To je poboljana verzija run-length kodovanja koja iskoritava dvodimenzionalnu
karakteristiku slika. Algoritam pokuava pronai pravougle regije jednakih karakteristika
koje se zatim koduju u opisnoj formi kao elementi s dvije take i odreenom strukturom.
Cijela slika treba biti opisana da bi se omoguilo dekodovanje bez gubitaka. Mogue
performanse temelje se na vrlo kompleksnom problemu pronalaenja najveih podruja
jednakih karakteristika.
Karakteristike: Vrlo je efikasan nain kodovanja, ali zbog svoje nelinearnosti
onemoguuje hardware-sku implementaciju, te je relativno spor.
ako nam nije jako vaan kvalitet moemo postii visok stepen kompresije. Postoji jo
jedna vana injenica vezana za kvalitet slike. Moemo birati izmeu kvaliteta slike i
brzine dekodovanja, koristiti manje tane aproksimacije, ali zato jako brze i obrnuto.
Posmatrajui slike iz stvarnog ivota JPEG gubi puno manje informacija nego GIF, koji
predstavlja takoer jednu metodu kompresije slika. Jedini pravi nedostatak JPEG-a
sastoji se od toga da svaki put kada kompresujemo i ponovo dekompresujemo sliku
gubimo sve vie informacija. Vrlo je vano ograniiti broj kompresija i dekompresija
izmeu poetne i zavrne verzije slike. Postoje neke operacije, rotacija za 90 , koje se
mogu izvesti, uz neka ogranienja u veliini slike, bez dekompresije slike.
Posmatrajui GIF moemo zakljuiti da postoje izvjesne primjene u kojima daje bolje
rezultate ne samo u kvalitetu nego i odnosu poetne i kompresovane slike. Takve
primjene odnose se na slike koje sadre samo nekoliko razliitih 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 moe osigurati kompresiju 20:1 sa svim bojama bez vidljivih gubitaka informacija.
Nekompresovani podaci su veliine 24 bita po pixelu. Kompresija od 30:1 do 50:1
mogua je uz manje i srednje gubitke dok je, za primjene u kojima nije jako vaan
kvalitet, mogue postii kompresiju i 100:1.
Poetna, ne kompresovana slika, za GIF format mora biti veliine 8 bita po pixelu. Moe
se osigurati kompresija 3:1, a uz neke dodatne operacije i 5:1.
Osnovni JPEG format sprema se kao jedan prelaz preko slike od vrha do dna.
PROGRESIVNI JPEG podijeljen je u nekoliko prelaza preko slike. Prvi prelaz daje
sliku vrlo loeg kvaliteta, ali zauzima vrlo malo mjesta, sledei postupno poboljavaju
kvalitet slike. Prednost ovog naina je u tome, to se slika moe vidjeti odmah nakon
prenosa, u poetku loijeg kvaliteta, ali s vremenom kako stiu novi podaci kvalitet se
popravlja. Ovaj nain naao je svoju primjenu kroz popularnost World Wide Web-a i
njegovih pretraivaa, koji rade sa sporim modemskim vezama.
LOSSLESS JPEG je potpuno drugaiji princip od osnovnog JPEG-a, a najznaajnija
prednost mu je garancija istovjetnosti svih bitova deompresovane i originalne slike. Moe
izvriti kompresiju podataka sa svim bojama u odnosu 2:1, a upotrebljiv je iskljuivo na
slike sa kontinualnim prelazima boja.
Danas postoji i novi stanadard nazvan JPEG-LS koji omoguava vei nivo kompresije,
takoer bez gubitaka, ali je jo uvijek puno loiji, po odnosu originalne i kompresovane
slike, od osnovnog JPEG-a.
MPEG je standard za kompresiju pominih slika odnosno videa ("motion picture
compression"). Upotrebljava sline tehnike kao JPEG. Koristi se injenicom da su slike,
koje slijede jedna za drugom, a dio su nekog videa, u mnogoemu sline. Nedostaci se
LOSSLESS ALGORITMI
Lossless algoritmi
Huffman
Adaptive Huffman
Shannon-Fano
LZW (1984)
LZ77
(Lempel-Ziv 1977)
Primjena
MNP5
COMPACT
SQ
GIF
v.42bis
compress
ZIP
ARJ
LHA
PRIMJER
Input
A MAN A PLAN A CANAL
PANAMA
MAN A PLAN A CANAL
PANAMA
MAN A PLAN A CANAL
PANAMA
AN A PLAN A CANAL PANAMA
N A PLAN A CANAL PANAMA
A PLAN A CANAL PANAMA
A PLAN A CANAL PANAMA
PLAN A CANAL PANAMA
LAN A CANAL PANAMA
AN A CANAL PANAMA
A CANAL PANAMA
CANAL PANAMA
CANAL PANAMA
ANAL PANAMA
AL PANAMA
L PANAMA
PANAMA
PANAMA
ANAMA
MA
Output
New Code
A
<SPACE>
256='A<SPACE>'
M
A
N
<SPACE>
256
P
L
259
261
<SPACE>
C
259
A
L
<SPACE>
P
269
258
257='<SPACE>M'
258='MA'
259='AN'
260='N<SPACE>'
261='A'
262='A<SPACE>P'
263='PL'
264='LA'
265='AN<SPACE>'
266='<SPACE>A<SPACE>'
267='<SPACE>C'
268='CA'
269='ANA'
270='AL'
271='L<SPACE>'
272='<SPACE>P'
273='PA'
274='ANAM'
STATISTIKA KOMPRESIJE
String A MAN A PLAN A CANAL PANAMA ima 27 karaktera, 8 bita po karakteru,
to je ukupno 216 bita za predstavljanje stringa.
LZW proces koristi 20 znakova plus rjenik, to znai da je potrebno 9 bita za
predstavljanje svake LZW vrijednosti.
Ukupno je potrebno 180 bita za prestavljanje stringa, to je uteda od 17%.
Ako ponovimo isti string dva puta, uteda je 33%, a ako ponovimo isti string tri puta
uteda je 41%.
LZW DEKOMPRESIJA
Dekompresija LZW algoritmom je jednostavna, svaku kompresovanu rije treba
jednostavno prevesti iz rjenika. Kodnu tabelu nije potrebno kodirati uz kompresovani
sadraj, jer se moe odrediti dinamiki, upravo na osnovu kodiranog sadraja. Jedini
problem koji se moe javiti je da pokuamo dekompresovati rije koja nije definisana u
10
Output
A
B
Y
256
259
X
New Code
256='AB'
257='BY'
258='YA'
259='ABA'
260='ABAX'
Primjetimo da je kod 259 definisan u isto vrijeme kada i izlaz. Dekoder koji procesira
ovu sekvencu e proitati 259 prije nego to je kod 259 definisan. Ova kolizija se rjeava
na sledei nain: Izlaz neposredno prije 259 je 259 i njegova vrijednost je AB. Zadnji
karakter prethodnog kod (258) je A, pa je u rjeniku za 259 string AB+A=ABA.
OGRANIENJA U VELIINI KODOVA
Ako imamo string do 256 bajtova dovoljno je 9 bita za predstavljanje rjenika, za vee
stringove moramo koristiti 10 bita, za jo vee opet moramo poveati broj bita u rjeniku.
Postavlja se pitanje kako odabrati prikladnu veliinu bita u rjeniku, oigledno emo
imati lou kompresiju kod velikih input stream-ova. Rjeenje je u tome da se veliina
rjenika odreuje i poveava po potrebi dinamiki.
Na poetku kompresionog procesa svaka vrijednost se pamti koristei najmanji broj bita
(skoro uvijek 9). Kada broj kodova postane preveliki da bi se mogao predstaviti
trenutnom kodnom veliinom, ona se inkrementira za 1. Za 9 bita se poveava na 10 kada
dostigne kodnu rije broj 512, sa 10 na 11 bita kada dostigne kodnu rije broj 1024.
Maksimum veliine kodne rijei kod GIF formata je 12 bita. Kada se dostigne rije broj
212-1 prestaje se sa dodavanjem kodnih rijei u rjenik. U tom sluaju GIF koder moe
izdati clear code instrukciju, koja kae dekoderu da resetuje dekoder u inicijalno stanje.
Vrijednost clear code ne mora biti uvijek ista tj. instrukcija ne mora uvijek biti izdata kad
se dostigne broj 212-1.
Kada se zavri kodovanje koder alje instrukciju end code da oznai kraj kompresovanog
stream-a.
11
STRUKTURA RJENIKA
Do sada smo prikazivali rjenik kao niz stringova, meutim u praksi nije tako. Rjenik je
prestavljen u obliku stabla, kao na primjeru rijei ABABCABD.
256=AB
257=BA
258=ABC
259=CA
260=ABD
Kod moe biti preveden u string obilaskom stabla od lia prema korijenu, to u svakom
prolazu daje string u obrnutom redoslijedu. Dok obilazimo stablo svaki put kada naiemo
na list odgovarajui karakter se stavlja na stek. Kada dostignemo korijen stabla vadimo
sve elemente sa steka i tako dobijamo korektan redoslijed karaktera u stringu.
Maksimalna veliina steka je 212.
VREMENSKA KOMPLEKSNOST
Kompresija: O(n) gdje je n duina teksta koji se kompresuje
Dekompresija: O(n) gdje je n duina dekompresovanog teksta
PITANJE INTELEKTUALNE SVOJINE
1. LZW je zatien patentom, firma Unisys.
2. Prvi GIFje napravljen u firmi CompuServe ne znajui da je algoritam patentiran.
3. Nakon to je GIF postao jako popularan firma Unisys je zahtijevala da svi koji
koriste GIF format plate nadoknadu.
4. Ovaj sudski spor ubrzava raanje PNG formata, koji ubrzo postaje preporuen od
strane W3 konzorcijuma.
12
Windows Bitmap
13
Zaglavlje fajla
To je blok bajtova koji se koristi za identifikaciju. Aplikacije ga koriste da bi
utvrdile da li se radi o .bmp fajlu i da li je oteen. Veliina ovog zaglavlja je obino
14B, a podijeljeni na sledei nain:
o
o
o
o
Informaciono zaglavlje
Sadri informacije koje se koriste prilikom prikazivanja slike na ekranu. Postoje
dva formata ovog zaglavlja, jedan je razvijen za OS/2 (veliina zaglavlja je tano 12B), a
drugi je razvijen za Windows (veliina zaglavlja je najmanje 40B). Prva 4B u oba sluaja
definiu veliinu zaglavlja, tako da je lako utvrditi o kojem formatu se radi. Tipino
zaglavlje za Windows je podijeljeno na sledei nain:
o
o
o
o
o
o
o
o
o
o
o
14
Paleta boja
Paleta boja ne mora uvijek da postoji. Koriste je BMP slike koje piksel
predstavljaju sa najvie 8 bita. Slike sa vie od 1B/pixel su intenzitetske slike.
Tipian BMP fajl koristi RGB model. Kada paleta boja postoji sadri vie ulaza
(broj ulaza zavisi od broja boja koje se koriste), gdje svaki ulaz ima 4B. Prva tri bajta
predstavljaju plavu, zelenu i crvenu boju respektivno, dok se etvrti bajt ne koristi (mor
biti 0).
Pikseli
Ovaj blok sadri podatke koji zapravo predstavljaju sliku. Ako broj B kojima je
predstavljena horizontalna linija slike nije djeljiv sa 4, na kraj se dodaju nule. Recimo da
imamo sliku 1071x363, koja za svaki piksel koristi 24 bita. Znai imamo 1089B po redu.
Kako 1089 nije djeljivo sa 4 na kraj svakog reda se dodaju 3B, ija je vrijednost 0 tako da
dobijamo 1092B po redu.
15
GIF
16
Definicije blokova
Ovaj dio moe da sadri neogranien broj slika i 89a proirenja u bilo kojem
rasporedu.
Blokovi se mogu podijeliti u tri osnovne grupe: kontrolni blokovi, blokovi za tumaenje
slike, i blokovi za specijalne namjene. Tip bloka se moe odrediti na osnovu prvog bajta
u bloku: 0x00-0x7F (0-127) kontrolni blokovi, 0x80-0xF9 (128-249) blokovi za
tumaenje slike, 0xFA-0xFF (250 - 255 ) blokovi za specijalne namjene.
Blokovi slike sadre sledee informacije:
- Deskriptor slike,
17
- Lokalna paleta - ista struktura kao kod globalne, prvo se provjerava da li postoji
lokalna paleta, ako ne postoji koristi se globalna,
- Minimalna veliina LZW koda,
- Podaci o pikselima slike,
- Blok terminator - 1B koji sadri 0x00.
Minimalna veliina LZW koda zapravo odredjuje broj ulaza u inicijalnoj tabeli
koje se koristi pri kompresiji i dekompresiji. GIF podrava kodove duine do 12 bita.
Podaci o pikselima su podijeljeni u podblokove, svaki podblok poinje bajtom koji
odreuje njegovu veliinu (tako da jedan podblok moe da sadri najvie 255B).
Deskriptor slike sadri:
o
o
o
o
o
o
Svaka slika u GIF fajlu se sastoji iz deskriptora slike, lokalne palete (opcionalno) i
podataka o pikselima. Isto tako, svaka slika mora da odgovara granicama koje odreuje
deskriptor logikog ekrana.
18
LZW za GIF
LZW algoritam koji koristi GIF odgovara standardnom LZW algoritmu sa
sledeim razlikama:
- definie se dodatni parametar "clear code" koji resetuje sve parametre kompresije
na poetno stanje. Vrijednost ovog koda je 2n gdje je n minimalna vrijenost LZW
koda koja se nalazi prije samih piksela.
- definie se kod za kraj podataka ija je vrijednost jednaka "clear code" + 1. Mora
biti na kraju samih piksela slike. Kada se ovaj kod pojavi prekida se LZW
procesiranje.
- prvi kompresioni kod koji moe da se koristi je "clear code" + 2.
- duina koda nije stalna. Kree se sa duinom koda koja je jednaka minimalna
duina LZW kod + 1 do 12 bita po kodu. Najvea vrijednost za kod je 4095.
19