You are on page 1of 56

Kodovi i kodiranje

Kodiranje izvora informacije

prof. dr. sc. Ivo Ipi Odjel za informatiku Sveuilite u Rijeci

Literatura
1. I. Pandi i dr., Uvod u teoriju informacije i kodiranje, Element Zagreb 2007. 2. N. Roi, Informacije i komunikacije: kodiranje s primjenama, NIP Alinea Zagreb 1992. 3. . Paue, Uvod u teoriju informacije, kolska knjiga Zagreb 1989.

Uvod
Simboli koje odailje izvor informacije esto ne zadovoljavaju tehnikim zahtjevima koje postavlja kanal primjer: za pisanje teksta upotrebljavamo priblino sto simbola ako elimo pohraniti napisani tekst (poruku) u memoriji raunala ili je prenijeti elektronikom potom moramo simbole koje smo napisali zamijeniti sa odgovarajuim nizovima binarnih simbola

Uvod
Dodjeljivanje simbola jedne abecede simbolima druge abecede naziva se kodiranje. S kodiranjem koje se naziva kodiranje izvora dodjeljuju se simbolima abecede izvora simboli (ili nizovi simbola) iz abecede kda. Koder i dekoder izvora su sastavni dijelovi svakog komunikacijskog kanala.

Uvod
izvor informacije abeceda izvora A

koder izvora

komunikacijski kanal

abeceda kanala B

dekoder izvora

primatelj informacije

abeceda izvora A

Definicija kda izvora informacije


Dan je diskretan izvor informacije s konanim skupom simbola (abecedom izvora):
A={x1, x2, ..., xa} i dan je konani skup simbola: B={z1, z2, ..., zb} koji emo zvati abeceda kda.

Definicija kda izvora informacije


Kd izvora je trojka (a,b,f), gdje su: a broj simbola abecede izvora A, b broj simbola abecede kda B i f injektivno preslikavanje f: AC, gdje je C=Bm ili C=B1 U B2 U ... U Bm skup kodnih zamjena f(x), a m prirodni broj

Primjer
B={0,1} m=3 skup kdnih zamjena
C=B3={000,001,010,011,100,101,110,111} ili C=B1 U B2 U B3= ={0,1,00,01,10,11,000,001,010,011,100,101,11 0,111}

Klasifikacija kdova izvora


Ako je C=Bm, tj. ako je skup kdnih zamjena: f(xi); i=1,2,..,a sastavljen samo iz nizova simbola iz skupa B duljine m, kod izvora naziva se ravnomjerni kd.

Klasifikacija kdova izvora


Ako je skup kdnih zamjena sastavljen iz jednolanih, dvolanih, trolanih, itd. nizova iz skupa B, to jest, ako je C=B1 U B2 U ... U Bm , kd izvora se naziva neravnomjerni kd.

Dekodiranje kda izvora informacije


Ravnomjerni kd moe se jednoznano dekodirati samo, ako vrijedi: a bm. Za neravnomjerne kdove, se osim zahtjeva o mogunosti jednoznanog dekodiranja, esto postavlja zahtjev za trenutno dekodiranje, to jest dekodiranje bez kanjenja. Kdove koje je mogue dekodirati bez kanjenja nazivaju se trenutani kdovi.

Klasifikacija neravnomjernih kdova


Kd (a,b,f) je trenutani kd, ako ne sadri kdne zamjene koja moe biti prefiks neke druge kdne zamjene. Neravnomjerni kdovi koje je mogue jednoznano dekodirati mogu se razvrstati u dva skupa:
1. skup trenutanih kdova i 2. skup netrenutanih kdova .

Primjer
Uzmimo da je A={x1,x2,x3} i B={0,1}, te promotrimo sljedee kdove: A x1 x2 x3 P(xi) 0.5 0.3 0.2 kd A kd B kd C kd D 00 0 1 0 01 1 10 10 11 01 11 100

Primjer
Kd A je ravnomjeran kd, kdovi B, C i D su neravnomjerni. S obzirom da je 3<22 , kd A je mogue jednoznano dekodirati. Neravnomjerni kd B nije mogue jednoznano dekodirati.
Npr., ako je izvor poslao poruku:
x1x2x3 koja se kodira kodom B dobiva se: 0101.

0101 moe se dekodirati kao: x1x2x3 ili x1x2x1x2 ili kao x3x3 ili kao x3x1x2.

Primjer
S obzirom da kd B ne omoguava jednoznano dekodiranje svih poruka koje odailje izvor, kd B je neupotrebljiv. Neravnomjerni kdovi C i D omoguuju jednoznano dekodiranje, pri emu je
kd C mogue dekodirati tek po prijemu cjelokupne poruke (poruku dekodiramo poevi od zadnjeg simbola prema prvom simbolu), a kd D mogue dekodirati trenutano.

Primjer
Uzmimo da moramo dekodirati niz 10 koji je generirao kd C.
S obzirom da je niz sastavljen sa manje od tri simbola (tri je duljina najdue kdne zamjene u tom kdu), ne moe se dekodirati primljen niz kao kdna zamjena simbola x2 ve se mora poekati na prijem treeg simbola. Ako je trei simbol nula, dekodirati e se primljeni niz kao x3, a ako je jedan, prva dva primljena simbola dekodirati e se kao x2. Trei simbol niza moe biti kdna zamjena simbola x1 ili prvi simbol kdnih zamjena x2 i x3, zato ga se ne moe dekodirati, dok se ne prime jo sljedea dva simbola.

Kd C oito nije trenutani kd, jer je kdna zamjena f(x1) prefiks kdnih zamjena f(x2) i f(x3).

Primjer
Kd D je mogue uzastopno (sukcesivno) dekodirati poto ne sadri kdnu zamjenu koja bi ujedno bila i prefiks neke druge kdne zamjene.

Ekonomino kodiranje izvora


Ako si prilikom kodiranja postavimo zadatak da moramo kodirati informaciju koju odailje izvor s im manjim brojem simbola iz abecede kda, nazivamo takvo kodiranje izvora ekonomino kodiranje. Uzmimo da diskretan izvor odailje simbol xi s vjerojatnou
P(xi)=pi i=1,...,a pi =1 te da je duljina kdne zamjene f(xi) u kdu (a,b,f) jednaka ni (ni je broj simbola abecede B u kdnoj zamjeni f(xi) C)

Mjerenje ekonominosti kda


Najvie se upotrebljavaju sljedee mjere ekonominosti kda:
prosjena duljina kdnih zamjena uinkovitost kda

Mjerenje ekonominosti kda


Mjera ekonominosti kda izvora (a,b,f) je prosjena duljina njegovih kdnih zamjena n=pini Mjera ekonominosti kda izvora (a,b,f) je uinkovitost kda

H = bit/simbol n
gdje je H entropija izvora informacije.

Primjer
Pogledajmo koji kd izmeu etiri kda iz primjera ima najmanju prosjenu duljinu kdnih zamjena odnosno koji kd ima najveu uinkovitost. Znak x1 koji izvor odailje s vjerojatnou p1=0.5 ima u kdu A kdnu zamjenu f(x1)=00 duljine n1=2 simbola abecede B. Slino: p2=0.3, f(x2)=01 i n2=2, te p3=0.2, f(x3)=10 i n3=2

Primjer
Prosjena duljina kdnih zamjena kda A je: nA=p1n1+p2n2+p3n3=1.0+0.6+0.4=2.0, a prosjena duljina kdnih zamjena kdova B,C i D: nB=1.2, nC=1.7 te nD=1.5.

Primjer
Ako pretpostavimo da je dan izvor bez memorije, tada je entropija izvora
H = pi log d pi 1.48 bita
i =1 3

Primjer
Uinkovitost kda A je
A =
H 1.48 = =0.74 bita/simbol n 2.0

Uinkovitost kda B i C je

C = 0.87 bita/simbol D = 0.97 bita/simbol

Ekonomino kodiranje izvora


Sa stajalita ekonominosti moe se rei da je kd A najloiji, A kd B najbolji, jer omoguava kodiranje poruka s najmanjom prosjenom duljinom kdnih zamjena. Meutim, zadatak traenja najekonominijih kdova mora se ograniiti samo na one neravnomjerne kdove koji se mogu jednoznano dekodirati.

Ravnomjerni kdovi
Ravnomjerni kdovi su u pravilu neekonomini kdovi izvora. Za prilagoavanje izvora tehnikim zahtjevima kanala u raunalskim sustavima za obradu i prijenos informacije skoro iskljuivo se upotrebljavaju ravnomjerni kdovi zbog jednostavnih postupaka kodiranja i dekodiranja te njihove nezavisnosti od statistikih osobina izvora.

Kd ASCII
ASCII kd je ravnomjerni kd (128,2,f), gdje je preslikavanje f standardizirano i dano tablicom. ASCII (American Standard Code for Information Interchange) ANSI (American National Standard Institution) kd Kdnim zamjena se najee dodaje osmi bit, koji slui za provjeru parnosti, to jest za otkrivanje neparnog broja greaka u kdnim zamjenama koje mogu nastati prilikom njihovog prijenosa po kanalu. Kd ASCII preporuuju meunarodne organizacije za standardizaciju CCITT (prporuka V-2) i ISO (preporuka 646).

Neravnomjerni kdovi
Ekonomini kdovi trae se izmeu neravnomjernih kdova koji se mogu jednoznano dekodirati. Za stacionarne diskretne izvore bez memorije u pravilu se trae u podskupu neravnomjernih kdova koje moemo jednoznano dekodirati trenutani kdovi.

Kraftov teorem
Kako se prepoznaju kdovi koji se mogu jednoznano dekodirati, te kako se prepoznaju trenutani kdovi? Kraftov i McMillanov teorem Potreban i dovoljan uvjet za postojanje trenutanog neravnomjernog kda (a,b,f) s duljinama kdnih zamjena {n1,n2,...na} je

b
i =1

ni

Kraftova nejednakost

ili, ako prirodni brojevi n1,n2,..na zadovoljavaju nejednakost, uvijek je mogue sastaviti trenutani kd u kojem kdne zamjene imaju duljine n1,n2,..,na

McMillanov teorem
Kraftova nejednakost vrijedi i za sve kdove koji se mogu jednoznano dekodirati. Potreban uvjet za postojanje jednoznanog neravnomjernog kda (a,b,f) s duljinama kdnih zamjena {n1,n2,..,na} je

b
i =1

ni

Kraftova nejednakost

ili obratno, jednoznani neravnomjerni kd s duljinama kdnih zamjena koje zadovoljavaju Kraftovu nejednakost postoji onda i samo onda, ako postoji trenutani kd s jednakim duljinama kdnih zamjena.

Kraftova nejednakost vrijedi za sve kdove koji se mogu jednoznano dekodirati. Skup kdova koji se mogu jednoznano dekodirati dijeli se na trenutane i netrenutane kodove. Ako je ispunjena Kraftova nejednakost za kd (a,b,f), s duljinama kdnih zamjena {n1,n2,...,na} onda:
postoji trenutani kd s jednakim duljinama kdnih zamjena, moe postojati netrenutani kd s jednakim duljinama kdnih zamjena,

Svaki trenutani kd moe se jednoznano dekodirati (obratno ne vrijedi!).

Grafiki prikaz kdova


Kdovi se prikazuju grafovima kdnim stablima. Kdna stabla sastavljena su iz vorova i grana. Iz svakog vora izlazi b grana. Svaka grana je oznaena jednim simbolom iz skupa: B={z1,z2,...,zb}. Dvije grane koje izlaze iz istog vora ne mogu biti oznaene istim simbolom iz B. Kdne zamjene su nizovi oznaka grana. Niz uvijek zapoinje oznakom grane koja izlazi iz korijena stabla, a zavrava na bilo kojem voru u unutranjosti stabla.

Primjeri
Kdna stabla za prijanji primjer kodova B,C i D
1 f(x2) 1 0 f(x3) 1 0 1 0 f(x1) 1 0 f(x1) 1 0 0 f(x1) 1 0 f(x2) f(x3) f(x3) f(x2)

Primjer
Kdne zamjene kdova B i C nalaze se u unutranjost kodnog stabla, to ne vrijedi za kd D koji je trenutaan. Za trenutane kdove vrijedi da se kdna stabla ne granaju od izabrane kdne zamjene, jer u trenutanom kdu nijedna kdna zamjena nije prefiks neke druge kdne zamjene. Kraftovu nejednakost ispunjavaju kdovi A, C i D.

Ekonomini kdovi
uvjeti i postupci sastavljanja kdova koje moemo jednoznano dekodirati, ija je prosjena duljina mala

Granine vrijednosti prosjene duljine kdnih zamjena


Za zadani diskretni stacionarni izvor informacije bez memorije u kojem se simbol xi iz A odailje s vjerojatnou pi0 postoji kd (a,b,f) koji se moe jednoznano dekodirati s prosjenom duljinom kodnih zamjena iz intervala:
H1 H1 n +1 K log d b K log d b gdje je H1 = K pi log d pi
i =1 a

entropija izvora bez memorije.

Granine vrijednosti prosjene duljine kdnih zamjena


Za stacionarni izvor bez memorije je prosjena duljina kdnih zamjena najboljih (najekonominijih) kdova:
1. 2. u najboljem sluaju jednaka H1/K logdb nikada nije vea od H1/K logdb + 1

H1/K logdb je najmanja prosjena duljina kdnih zamjena koja se moe postii samo, ako vrijedi b-ni=pi i=1,2,..a to jest ako se mogu zapisati vjerojatnosti simbola abecede izvora pi i=1,2,..,a kao cjelobrojne potencije osnovice b.

Huffmanov kd
Huffmanov algoritam omoguava gradnju optimalnog trenutanog kda za zadane prirodne brojeve a i b (a>b) i za danu razdiobu vjerojatnosti p1,p2,..,pa (pi0, pi=1). Huffmanovim algoritmom popunjava se b-narno kdno stablo od listova stabla prema korijenu. (Za b=2 je stablo binarno.) Dubina stabla jednaka je najveoj razini nekog vora u stablu, s time da je razina korijena jednaka 1. Broj listova je a. Razina listova r nije unaprijed poznata.

Huffmanov algoritam za b=2


1. 2. korak: Abecedu izvora informacije A uredimo tako da je p1p2... pa. Simbole izvora smatramo listovima stabla korak: Sastavljamo novu abecedu A1 tako da udruimo dva zadnja simbola polazne abecede A u jedan simbol (obino ga oznaimo indeksima udruenih simbola) te mu pripiemo vjerojatnost koju dobivamo zbrajanjem vjerojatnosti udruenih simbola. Abeceda A1 ima a1=a-1 simbola. Smatramo ih vorovima stabla na r-1 razini. Granama koje spajaju vorove na r-toj razini i r-1 razini proizvoljno se dodjeljuje binarni znak 0 ili 1.

Huffmanov algoritam za b=2


3. korak: Postavimo A:=A1 i ponavljamo 1. i 2. korak sve dok se nova abeceda ne smanji na samo jedan simbol, odnosno dok se ne formira korijen stabla. 4. korak: Nakon formiranja kdnog stabla, kdna zamjena za simbol abecede izvora xi sastavlja se iz simbola 0 i 1 koji su bili dodijeljeni granama stabla u fazi njegove gradnje, i to tako da ih redamo jednog za drugim, idui od korijena stabla prema listu xi kroz sve vorove oznaenim udruenim simbolima s indeksom i.

Primjer
a=3, A={x1,x2,x3} P={P(x1)=0.6, P(x2)=0.3, P(x3)=0.1} b=2 i B={0,1} Tijek Huffmanovog algoritma:
0.6 x1 0 0.3 x2 0.4 x23 0.1 x3 1.0 x123 0 1 1

Primjer
kdne zamjene, njihove duljine, prosjena duljina kdnih zamjena, entropija izvora bez memorije i uinkovitost kda su:
f ( x1 ) = 0 f ( x2 ) = 10
3

n1 = 1 n2 = 2

f ( x3 ) = 11 n3 = 2 n = pi ni = 1.4 simbola
i =1

H1 = pi log 2 pi = 1.295 bita


i =1

H1 = 0.925 bita/simbol n

Dekodiranje Huffmanovog kda


1. korak: Dekodiranje zapoinje u korijenu stabla. 2. korak: U svakom voru stabla dekodiranje se usmjerava s obzirom na simbol iz niza kdnih zamjena:
u korijenu stabla s obzirom na prvi simbol u voru na drugoj razini stabla s obzirom na drugi simbol, trei, itd. dok se ne stigne do vora na zadnjoj razini stabla gdje je upisan simbol iz abecede A. simbol iz abecede A se pamti

Dekodiranje Huffmanovog kda


3. korak: Ako nije kraj poruke, 2. korak se ponavlja do zadnjeg simbola poruke.

Primjer
Pogledajmo kako se dekodira poruka 11100010011 pomou kodnog stabla kojeg prokazuje slika:

0.6 x1 0 0.3 x2 0.4 x23 0.1 x3 1.0 x123 0 1 1

Primjer
ponavljanjem koraka 2 dobivamo poruku: x3x2x1x1x2x1x3

Lempel Ziv Welch (LZW) kd


Huffmanov kd zahtjeva a priori poznavanje razdiobe vjerojatnosti simbola u poruci koju se eli kodirati. Ako razdioba simbola u poruci nije poznata, moe se dana poruka ekonomino kodirati tako da se u poruci sukcesivno trae krai nizovi (segmenti) simbola i pohranjuju u rjenik. Kada se u tekstu naie na segment koji je ve u rjeniku, isti se kdira svojim indeksom u rjeniku.

Algoritam kodiranja LZW


Algoritam ekonominog kodiranja LZW temelji na traenju segmenata poruke teksta kdom ASCII. Mjesta z rjeniku izmeu 0 i 255 zauzeta su simbolima koji mogu nastupiti u ulaznom tekstu (to su znakovi abecede + brojevi 0 do 9 + posebni znakovi). Mjesto upisa simbola u rjenik je odreeno ASCII kdom simbola (npr. slovo A je upisano na 65-to mjest, jer je ASCII kd slova A 6510=010000012 Na poetku postupka w je prvi znak teksta.

Algoritam kodiranja LZW


Opis algoritma:
pretpostavimo da smo u tekstu, koji elimo kdirati, proitali segment w uzmimo da je a simbol koji slijedi segmentu w ako wa nije u rjeniku onda:
1. upiemo indeks w-a u izlaznu datoteku (datoteka s kodiranom porukom) 2. upiemo wa u rjenik 3. umjesto starog segmenta w uzimamo da je a novi segment (wa) i prelazimo na obradu sljedeeg simbola

ako je wa ve u rjeniku, onda prelazimo na obradu sljedeeg simbola u tekstu s novim segmentom wa umjesto starog w (w wa)

Primjer
Pretpostavimo da elimo kodirati sljedei niz simbola ACAGAATAGAGA mjesta u rjeniku izmeu 0 i 255 zauzeta su simbolima koji mogu nastupiti u tekstu

Primjer

Algoritam dekodiranja LZW


Opis algoritma:
proitaj kd c iz ulazne datoteke (datoteke kdirane poruke) upii u izlaznu datoteku (datoteka s dekodiranom porukom) segment w koji je u rjeniku upisan na mjestu c upii u rjenik niz wa, gdje je a prvi simbol sljedeeg segmenta

Primjer
pretpostavimo da elimo dekodirati sljedei niz kdnih zamjena: 65, 67, 65, 71, 65, 65, 84, 259, 264, 256

Primjer dekodiranja

Zakljuak
postupak LZW komprimira podatke 30 50% Huffmanov algoritam relaiziran UNIXovom comandom pack LZW algoritam UNIX-ovom komandom compress i kodiranje slike u GIF formatu pkzip

You might also like