25
Elektronski fakultet u Nišu, Univerzitet u Nišu Tema: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem (seminarski rad) Studenti: Profesor:

Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

Embed Size (px)

Citation preview

Page 1: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

Elektronski fakultet u Nišu, Univerzitet u Nišu

Tema:Aritmetičko kodovanje u poređenju sa

Huffman-ovim kodovanjem(seminarski rad)

Studenti: Profesor:

Dragana Đorđević 12193 dr. Zoran PerićNenad Antonijević 12147

Niš, 2010.god.

Page 2: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

Sadržaj:

1. Uvod......................................................................................................................- 2 -

2. Binarno kodovanje................................................................................................- 3 -

2.1. Huffman-ovo kodovanje................................................................................- 4 -

2.1.1. Huffman-ovo kodovanje na primeru slike.....................................................- 4 -

2.1.2. Primer skalarnog Huffman-ovog kodovanja..................................................- 7 -

2.2. Aritmetičko kodovanje..................................................................................- 8 -

2.2.2. Primer Aritmetičkog skalarnog kodovanja....................................................- 9 -

3. Analiza uniformnog kvantizera Laplasove raspodele ........................................- 12 -

Literatura.......................................................................................................................- 17 -

1

Page 3: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

1. Uvod

Po International Electrotechnical Commission IEC 701, 702, 721 (telekomunikacije) kod predstavlja sistem pravila koja definišu jednoznačnu korespodenciju između informacije i njenog predstavljanja pomoću znakova, simbola ili elemenata signala. Kodovanje je način predstavljanja informacija pomoću simbola određenog skupa koji čine azbuku. U najopštijem smislu, azbuka (alfabet) se definiše kao skup svih mogućih simbola koji se koriste u određene svrhe. Drugim rečima, kodovanje je predstavljanje informacije (poruke) u kodovanom obliku i prevođenje informacije (poruke) u (željeni) kodovani oblik. Cilj kodovanja je predstavljanje informacija u obliku pogodnom za njihovu obradu, prenošenje ili zapis, kao i zaštita informacija od “izobličenja” koja nastaju usled delovanja smetnji ili poremećaja pri njihovom prenošenju kroz prostor i vreme, manipulaciji ili obradi, a isto tako i za sakrivanje sadržaja poruke od onih kojima poruka nije namenjena, tako da ne mogu da je “pročitaju” i/ili izmene. Ukoliko govorimo o kodovanju neizbežno nam se nameće i kompresija podataka.

Sa stanovišta telekomunikacija i prenosa podataka kompresija i kodovanje su veoma bitni faktori koji utiču na brzinu prenosa kao i na zaobilaženje fizičkih ograničenja medijuma za prenos. Dakle, kompresija i kodovanje predstavljaju način da se obavi redukovanje broja bitova u okviru, a da se pri tome zadrži značenje. Na taj način se smanjuje cena i skraćuje vreme prenosa. Kompresija podataka se koristi u različitim oblastima, kao što su fax mašine, DVD tehnologija i V.42 modemi. Koristi se i prilikom smeštanja na disk, a mnogi proizvođači softvera kompresuju svoje programe na diskovima i CD-ima radi uštede prostora.

Jedan od vidova kompresije i kodovanja su i frekventno zavisni kodovi. U ovu grupu kodova spadaju Huffman-ov kod i aritmetički kod. Pod frekventno zavisnim kodovima podrazumevamo da češće korišćeni karakteri odgovaraju kraćim kodovima što utiče na smanjeni broj bitova. Takođe, Huffman-ov i aritmetički kod spadaju u grupu binarnih kodova.

2

Page 4: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

2. Binarno kodovanje

Proces binarnog kodovanja je predstavljanje svakog mogućeg simbola iz konačnog alfabeta izvora sekvencama bita koje zovemo kodne reči. Kodne reči za sve moguće simbole čine kodnu knjigu. Simbol može da se odnosi na jedan ili nekoliko originalnih ili kvantizovanih parametara modela.

Da bi binarni kod bio upotrebljiv mora da zadovoljava sledeće osobine:

1. kod mora da bude jednoznačno dekodabilan, što znači da mora da postoji preslikavanje u odnosu jedan na jedan između kodne reči i simbola;

2. kod treba da bude trenutno dekodabilan, što znači da dekoder može da odredi kodnu reč odmah bez razmatranja ostalih bita odnosno preostalog dela kodne reči.

Ova druga osobina koda se odnosi na to da nijedna kodna reč nije istovremeno prefiks neke druge kodne reči . Ovaj tip koda se naziva prefiksni kod (slika 1.). Iako je trenutna dekodabilnost strožiji zahtev od jednoznačne dekodabilnosti i omogućava brzo dekodovanje, ona ipak ne uspostavlja granice kodne efikasnosti. Može se pokazati da prefiksni kod daje minimalnu bitsku brzinu među svim jednoznačno dekodailnim kodovima, za isti izvor. Sve praktične metode kodovanja proizvode prefiksne kodove.

Slika1. Sa kodnom knjigom na levoj strani (prefiksni kod) dati bitski niz se može trenutno dekodovati bez dekodovanja cele kodne reči. Sa kodnom knjigom na desnoj strani (neprefiksni kod) ne zna se da li prva nula u bitskom nizu odgovara kodnoj

reči nula ili je to prvi put u drugoj ili četvrtoj kodnoj reči. Tada je potrebno da se sačekaju ostali biti da bi se donela odluka . Zbog toga što je i drugi bit nula, ane postoji kodna reč koja počinje sa dve nule , tada se zna da je prva nula zapravo kodna reč

nula.

Očigledno, najjednostavniji binarni kod je binarna reprezentacija sa fiksnom dužinom za

sve moguće simbole. Ako je broj simbola L onda će bitska brzina biti [ ] bita/simbolu. najniža moguća bitska bzina jednaka bilo koje kodne reči jednaka je entropiji izvora. Sem ako izvor nema uniformnu raspodelu , kodna šema sa fiksnom dužinom biće veoma neefikasna zbog

3

Page 5: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

toga što će bitska brzina biti mnogo veća od entropije izvora. Da bi se smanjila bitska brzina potrebno je kodovnje sa promenljivom dužinom (Variable Length Coding - VLC), koje reči sa visokom verovatnoćom koduje kraćim kodnim rečima tako da je prosečna bitska brzina manja. Zato što bitska brzina pravilno projektovanog koda sa promenljivom dužino može da se približi entropiji izvora, VLC se naziva i entropijsko kodovanje.

Postoje tri popularne VLC metode. Huffman-ovo kodovanje konvertuje fiksni broj simbola u kodne reči promenljive dužine; LZW metoda konvertuje promenljivi broj simbola u kodne reči fiksne dužine, i konačno, aritmetičko kodovanje konvertuje promenljivi broj simbola u kodne reči promenljive dužine. Huffman-ova i aritmetička metoda su modeli bazirani na verovatnoći i oba mogu da približno dostignu granicu entropije. Aritmetičkim kodovanjem mogu se lakše postići asimptotske performanse i može se lakše prilagoditi varijacijama u statistici signala, ali je sa druge strane mnogo kompleksnije od Huffman-ovog kodovanja. LZWmetoda ne zahteva poznavanje statistike signala i zbog toga je univerzalno upotrebljiva, ali je manje efikasna nego li druge dve metode. Huffman-ovo i aritmetičko kodovanje su veoma implementirani u video kodovanje i mogu se dati brojni primeri na bazi video prenosa.

2.1. Huffman-ovo kodovanje

Huffman-ovo kodovanje je jedan od osnovnih postupaka za kompresiju slike. Upravo iz tog razloga najlakše je objasniti ga sa stanovišta kompresije mirne slike. U daljem tekstu Huffman-ov postupak biće objašnjen na primeru mirne slike.

Huffman-ova kodovanje je najpopularnija metoda kodovanja bez gubitaka diskretnih

izvora sa alfabetom i verovatnoćama pojavljivanja simbola . Projektuje se kodna knjiga za sve moguće simbole, tako da se simboli koji se češće javljaju koduju kraćim kodnim rečima. Za projektovanje kodne knjige Huffman-ovom metodom koristi se sledeća procedura:

1. Potrebno je urediti verovatnoće simbola , u opadajući redosled i zatim ih posmatrati kao čvorove grane drveta.

2. Sve dok postoji više od jednog čvora:a) Pronalaze se dva čvora sa najmanjom verovatnoćom i proizvoljno im se dodeljuju

nula i jedinicab) Ujedinjuju se ova dva čvora da bi se formira jedan čvor čija je verovatnoća

jednaka sumi verovatnoća ova da čvora. Ponovo se zatim prelazi na tačku 1.

2.1.1. Huffman-ovo kodovanje na primeru slike

Neka se monohromna slika koju treba komprimovati sastoji od piksela, pri čemu se za reprezentaciju intenziteta svakog piksela koristi B bita. Ovakva reprezentacija digitalne slike je poznata kao impulsna kodna modulacija (Pulse Code Modulation - PCM). Dakle,

originalna slika se sastoji od bita. Broj mogućih nivoa intenziteta je Osnovna ideja Huffman-ovog kodovanja slike je da se nivoi koji se cešće pojavljuju u

slici koduju sa manje bita, a nivoi koji se ređe pojavljuju sa više bita, tako da prosečan broj bita

4

Page 6: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

po pikselu bude manji od B. Neka je , funkcija gustina verovatnoće intenziteta

u slici, koja se može proceniti izračunavanjem histograma slike. Neka se kodna reč dužine bita koristi za kodovanje intenziteta i. Onda je prosečna dužina kodne reči:

(1) Iz teorije informacija je poznato da je donja granica prosečne dužine kodne reči data

entropijom slike:

(2)

Entropija slike je maksimalna kada predstavlja uniformnu raspodelu. Tada je

redundantnost slike mala, pa je prosečna dužina kodne reči jednaka B bita. Kada predstavlja neravnomernu raspodelu, entropija slike se smanjuje, pa se smanjuje i prosečna dužina kodne reči.

Za realizaciju Huffman-ovog kodera potrebno je odrediti dužine kodne reči na takav način da se minimizuje prosečna dužina kodne reči L data izrazom (1). U teoriji informacija je pokazano da se praktično može realizovati koder čija je prosečna dužina reči bliska entropiji slike:

(3) Takav koder se naziva Huffman-ov koder ili entropijski koder. Pošto su kodne reči kod Huffman-ovog kodovanja nejednake dužine, sve kodne reči

kojima se predstavljaju pikseli slike su spojene u neprekidni niz bitova. Iz takvog niza se pri dekodovanju moraju dešifrovati pojedinačne kodne reči. Ta činjenica postavlja jedno ograničenje za izbor kodnih reči da nijedna kraća kodna reč ne sme predstavljati prefiks (početak) duže kodne reči. Formiranje Huffman-ovog koda najbolje se može pokazati na konkretnom primeru. Stoga posmatrajmo jednostavan slučaj slike sa osam nivoa intenziteta (B=3). Prvo se verovatnoće pojavljivanja nivoa svrstaju u opadajući redosled i početnim čvorovima grafa (krajnje desno) se dodele odgovarajuće vrednosti verovatnoća, kao što je to pokazano na slici 2. Zatim se započinje iterativni postupak od 1B iteracija. U svakoj iteraciji se dva čvora sa najmanjim verovatnoćama spajaju i novom čvoru se dodeljuje zbir njihovih verovatnoća. Postupak se nastavlja sve dok se ne iskoriste svi intenziteti, tj. dok zbir verovatnoća čvorova koji se spajaju u poslednjem koraku ne postane jednak jedinici. Na takav način se dobija kodno stablo prikazano na slici 2. Zatim se kodno stablo tako preuredi da se eliminišu preseci grana, kao što je pokazano na slici 3. Kodne reci se konstruišu tako što se pođe od korena stabla (čvora sa verovatnoćom jednakom 1) i granama koje se u njega stiču dodele vrednosti 0 (gornja grana) i 1 (donja grana). Postupak dodeljivanja se nastavlja idući na desno sve dok se ne iscrpu sva moguća

5

Page 7: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

grananja. Kodna reč koja odgovara nekom intenzitetu sastoji se od nula i jedinica koje se nalaze na putu od korena do čvora koji odgovara tom intenzitetu, što je takođe prikazano na slici 3.

Slika 2. Konstrukcija Huffman-ovog stabla, formiranje stabla.

Slika 3. Preuređivanje stabla i dodela kodnih reči.

Na kraju se formira Huffman-ova kodna knjiga koja predstavlja tabelu preslikavanja između rednog broja nivoa i odgovarajućeg Huffman-ovog koda. Huffman-ova kodna knjiga za posmatrani primer predstavljena je Tabelom 1.

6

Page 8: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

Tabela 1.

U primeru konstrukcije Huffman-ovog koda sa slika 2. i 3., entropija originalne slike je , dok je dobijena prosečna dužina kodne reči . Realizovani stepen

kompresije samo je za 1.45% manji od maksimalnog mogućeg stepena

kompresije .

Huffman-ova kodna knjiga ima vrsta, a najduža kodna reč može imati do bita. Dakle, za veće vrednosti B neke kodne reči mogu imati relativno velike dužine, a obim kodne knjige postaje neprihvatljivo veliki. Da bi se to sprečilo predložena je jedna modifikacija Huffman-ovog koda, poznata pod nazivom prekinuti Huffman-ov kod. Kod prekinutog Huffman-

ovog koda se dužina kodne reči ograničava na bita. Prvih L nivoa sa najvećim verovatnoćama pojavljivanja se koduje standardnim Huffman-ovim kodom, a preostali nivoi se koduju sa prefiks kodom za kojim sledi kodna reč sa fiksnim brojem bita.

Druga modifikacija Huffman-ovog koda takođe je učinjena radi smanjenja obima kodne knjige i maksimalnog broja bita u kodnoj reči. Kao što je poznato, celi broj i se može uvek predstaviti na sledeći način:

(4)

Prvih nivoa se koduje standardnim Huffman-ovim kodom. Preostali nivoi se koduju prefiks kodom, koji predstavlja celi deo količnika q, za kojim sledi terminacioni kod, koji predstavlja Huffman-ov kod ostatka r. Ova varijanta Huffman-ovog koda se naziva modifikovani Huffman-ov kod.

Eksperimentalno je ustanovljeno da je histogram video signala u dužem vremenskom periodu prilično uniforman, iako histogrami pojedinačnih slika mogu prilično odstupati od unifomnosti. Zbog toga se primenom Huffman-ovog koda ne može se postići veliki stepen kompresije kod monohromnih slika sa većim brojem nivoa sivog. Međutim, Huffman-ov kod, odnosno, entropijsko kodovanje, ima značajnu primenu u kombinaciji sa algoritmima za prediktivno ili transformaciono kodovanje, kao i u kombinaciji sa drugim tehnikama za kodovanje bez gubitaka. Osim toga, entropijsko kodovanje se uspešno koristi za kompresiju binarnih slika, kao što su grafika, faksimil, ili slike teksta dokumenata.

2.1.2. Primer skalarnog Huffman-ovog kodovanja

Primer Huffman-ovog skalarnog kodovanja je prikazan na slici 4. Na kojoj se izvor sastoji od četiri simbola. Simboli i njihove verovatnoće su prikazane u dve kolone na levoj strani. Rezultujuće kodne reči i dužine kodnih reči za te simbole su prikazane na desnoj strani u dve

kolone. Takođe su date prosečne bitske brzine R i entropija prvog reda . Vidimo da zaista važi :

(5)

7

Page 9: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

Nepopravljiva mana Huffman-ovog kodovanja je da kada je primenjeno na pojedinačne odmerke zahteva makar jedan bit za svaki odmerak. Da bi se i dalje smanjila bitska brzina grupa od N odmeraka se može smatrati jednim entitetom i svakoj grupi oddeliti jedna kodna reč. Ovo vodi ka vektorskom Huffman-ovom kodovanju , specijalan slučaj vektorskog kodovanja bez gubitaka.

Slika 4. Skalarno Huffman-ovo kodovanje

2.2. Aritmetičko kodovanje

Mana Huffman-ovog kodovanja je što ne može dovoljno blisko da dostigne granicu entropije, osim ako se mnogi odmerci ne koduju zajedno zbog toga što se za svaki odmerak (ili grupu odmeraka) koristi najmanje jedan bit. Zbog toga čak i za vrlo mali alfabet bitska brzina ne može biti manja od jednog bita po odmerku u slučaju skalarnog kodovanja, odnosno jednog bita po grupi odmeraka u slučaju vektorskog kodovanja. Jedini način da se izbegne ovakav problem je da se promenljiv broj odmeraka konvertuje u kodne reči promenljive dužine. Ova metoda je poznata kao aritmetičko kodovanje. Ono može mnogo bolje da dostigne granicu entropije od Huffman-ovoh kodovanja za standardne signale.

Ideja aritmetičkog kodovanja je da se sekvenca simbola predstavi intervalom linijskog segmenta od nule do jedinice, sa dužinom jednakom verovatnoći sekvence. Zbog toga što verovatnoće svih mogućih sekvenci daju jedan, intervali koji odgovaraju svim mogućim sekvencama će popuniti ceo linijski segment. Kodovani biti za sekvencu su u stvari binarna reprezentacija tačaka intervala koji odgovara toj sekvenci. Umesto da se čeka da se pojavi celokupna sekvenca pre određivanja intervala i njegove binarne reprezentacije počinje se od inicijalnog intervala, određenog na snovu predhodnog simbola i onda se rekurzivno deli prethodni interval posle pojavljivanja svakog novog simbola. Da bi se odredio interval gornje i donje granice intervali se predstavljaju binarno. Kad god je bit najveće težine (MSB) donje granice isti kao i kod gornje granice taj bit se izbacuje. Na kraju izvorne sekvence, svi biti koji su skupljeni predstavljali bi binarnu reprezentaciju srednje tacke u intervalu koji odgovara sekvenci. Što je sekvenca verovatnija, duži će biti interval i manje bita će biti potrebno da se specificira interval.

Neka ab = 1,2,…,L predstavlja L mogućih simbola izvora, pi je verovatnoća simbola ai i

konačno predstavlja kumulativnu verovatnoću sve do l-tog simbola. Neka dn , ln , un

8

Page 10: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

predstavljaju dužinu, donju granicu i gornju granicu interval u koraku n, respektivno, sa lo=0, uo=0 i do=1. Nakon primanja n-tog simbola izvorne sekvence ako je simbol ai , donja i gornja granica se izračunavaju koristeći sledeće formule:

(6)

Neka se binarna reprzentacija ln i un ( ), i ( ) respektivno. Ako su biti

isti onda se oni “izbacuju”. Inače, svi biti su zapamćeni. Algoritam onda nastavlja sa ispitivanjem sledećeg simbola.

2.2.2. Primer Aritmetičkog skalarnog kodovanja

Da bi proces aritmetičkog kodovanja bio jasniji najlakše ga je objasniti na primeru. Slika 5. prikazuje primer aritmetičkog kodovanja. Izvorni alphabet se sastoji od tri simbola “a”, “b”, i “c” sa raspodelom verovatnoća p(a)=1/2, p(b)=1/4 I p(c)=1/4. Intervali koji odgovaraju ovim simbilima su prikazani na slici 5. Prvi izvorni simbol je “a” koji odgovara prvom interval u prvoj koloni. Donja gornja granica su l1=0= (0000…) i u1=1/2 (1000…). Zbog toga što su biti najveća težina za l1 i u1 različiti nijedan bit se ne “izbacuje”. Sledeći izvorni symbol je “b” i zog toga uzima se drugi interval u koloni 2. Granice ovih intervalasu koristeći prethodnu formula l2=1/4=(0100…) i u2=3/8=(011000…). Prva dva bita su zajednička i zbog toga se ispisuje “01” u kodni bitski niz. Sledeći ovu proceduru, mogu se odrediti kodni bit za sledeće izvorne simbole.

9

Page 11: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

Slika 5. Aritmetičko kodovanje

Da bi s dekodovao prmljeni bitski niz, prvo se određuju donja i gornja granica intervala koji odgovara primljenim bitima. Ako interval spade u opseg koji se može povezati sa nekim određenim izvornim simbolima, onda je taj simbol dekodovan, a ako ne, ispituju se dodatni biti.

Proces dekodovanja za prethodni primer je pokazan na slici 6 . Prvi primljeni bit je “0” i moguća donja i gornja granica koje obe imaju “0” kao bite najveće težine su l = (0000…) = 0 i u = (01..)= (1000…) = 1/2. Iz prve kolone sa slike 5. , ovaj interval odgovara ”a” i zato može da se izbaci “a” kao dekodovan simbol. Sa sledećim primljenim bitom “1” moguća donja i gornja granica obe sa “01” kao prva dva bita su l =(0100…) = 1/4 i u =(01..) =(1000)= 1/2. Iz druge kolone sa slike 6 (a) oseg (1/4,1/2) može da ogovara ili “ab” ili ”ac”. Zbog toga u ovom koraku ne može da se dekoduje simbol. Sa tećim primljenim bitom “0”, donja i gornja granica su l = (010000…) = 1/4 i u=(0101..) = (011000…)= 3/8. Iz druge kolone sa slike 5. , ovaj interval odgovara “ab”. Zbog toga u ovom koraku može da se dekoduje “b”. Nastavljajući ovaj process mogu da se dekoduju svi simboli za dati bitski niz.

10

Page 12: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

Slika 6. Aritmetičko dekodovanje

Prethodni opis arimetičkog kodovanja je samo na konceptualnom nivou, koji pretpostavlja beskonačnu preciznost uizračunavanju granica interval. Što se više izbornih simbola obrađuje to interval koji odgovara ulaznoj sekvenci postaje sve manji. Da bi se obradila razumno dugačka sekvenca, bio bi potreban kompjuter sa ekstremno visokom preciznošću da bi se odredile granice intervala. Na sreću, nije neophodno da se zapisuju apsolutne vrednosti granica interval da bi process kodovanja i dekodovanja funkcionisao. Prethodno određeni interval se može reskalirati na dužinu jedan kada se izbaci zajednički bit gornje i donje granice. Ovakav tip implementacije se naziva aritmetičko kodovanje sa konačnom precižnošću. Umesto korišćenja realne aritmetike za izračunavanje gornje i donje granice, takođe je razvijena i celobrojna aritmetika koja je jednostavnija.

Granica za bitsku brzinu za aritmetičko kodovanje je određena sledećom formulom:

(7)

Gde je N broj simbola u sekvenci koja se koduje, Hn (F) je entropija N- tog reda sekvence. Prisetimo se da ako se koduje cela dužina N koristeći vektorsko Huffman-ovo kodovanje, bitska brzina će biti ograničena entropijom izvora. U skladu sa tim, obe metode mogu da se približe bilisko granici entropije kada je N dovoljno veliko. Međutim, kod Huffman-ovog kodovanja mora se projektovati i memorisati kodna knjiga za sve moguće sekvence dužine N koje ima kompleksnost koja raste eksponencijalno sa N. Ova ograničava dužinu sekvence koja može da se koristi u praksi. Kod arimetičkog kodovanja nije potrebno da se kodna knjiga projektuje unapred za svaku moguću izvornu sekvencu. Bolje, biti se sekvencijalno dobijaju kad god donja i gornja granica identifikovanoig intervala imaju zajedničke bite najveće težine. Dužina kodne sekvence može biti dugačka kao dužina izvora. Zbog toga u praksi arimetičko kodovanje se može blisko približiti granice entropije. Druga prednost arimetičkog kodovanja je ta što se ono može jednostavno prilagoditi promenama u statistici izvora ažuriranjem tabele verovatnoće simbola. Može takođe, vrlo lako realizovati uslovno kodovanje, koristeći drugaćije tabele verovatnoća za drugaćija uslovna stanja. Kod Huffman-ovog kodovanja mora se

11

Page 13: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

redizajnirati kodna knjiga zasnovana na ažuriranim tabelama verovatnoća ili se posedovati više kodnjih knjiga za različita uslovna stanja.

Zbog visoke kodne efikasnosti i lake prilagodljivosti, arimetičko kodovanje je bolje alternative od Huffman-ovog kodovanja, sve dok je uključeno proračunavanje u prihvatljivoj meri.

12

Page 14: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

3. Analiza uniformnog kvantizera Laplasove raspodele uz korišćenje Huffmano-vog koda

Pri digitalizaciji nekog signala prvi i neophodan korak je proces odabiranja pri čemu se u određenim trenucima vremena uzimaju uzorci amplitude signala. Drugi neophodan korak je kvantizacija analognog signala. Kvatizacija je proces pri kome se veličina uzorka klasifikuje u jednom od intervala kvantizacije i zaokružuje na vrednost reprezentacionog nivoa koja odgovara tom intervalu. U ovom slučaju korišćen je uniformni kvantizer pa stoga kvantizer ima jednako razmaknute nivoe kvantizacije u celom opsegu. Ovo rezultuje za niže vrednosti i amplitude signala veću grešku u zaokruživanju.

Po izlasku iz kvantizera odmerci se koduju Huffman-ovim kodom. Huffman-ov kod izabran je zbog toga što uniformni kvantizer sa Huffman-ovim kodovanjem postiže niže vrednosti prosečne bitske brzine tj. veći je stepen kompresije.

Uniformni kvantizer ima sve intervale kvantizacije podjednake veličine. U ovom primeru signal jedinične varijanse ima Laplasovu raspodelu prestavljenu izrazom:

(8)

a izraz za distorziju uniformnog kvantizera dat je izrazom:

(9)

pri čemu je Δ korak kvantizacije, p(x) Laplasova raspodela, a yn predstavlja reprezentacione nivoe koji se u ovom primeru ne nalaze na sredini već se računaju kao centroidi

(10)

Takođe, izračunat je odnos signal-šum radi procene performansi kvantizera. Odnos signal-šun SQNR dat je izrazom:

(11)

U ovom primeru korišćen je program Mathlab za konstruisanje uniformnog kvantizera Laplasove raspodele. Od zadatog broja kvantizera izabran je optimalni na osnovu rezultata dobijenog u programu.

13

Page 15: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

Prikaz koda u programu Mathlab:

function uniformnisyms xN=8; R=3;tt=[]; deltad=[]; yy=[]; DD=[]; SQNRS=[]; xmaxvek=[]; p=1/(sqrt(2))*exp(-abs(x)*sqrt(2));for xmax=1:0.1:10 delta=2*xmax/N; deltad=[deltad delta]; for i=1:N+1 t(i)=-xmax+((i-1)*delta); %proracun t1,t2...tn tt=[tt t(i)]; %dodavanje nivoa odlucivanja t1,t2...tn u niz y(i)=double(int(x*p,t(i),t(i)+delta)/int(p,t(i),t(i)+delta)); %proracun centroida yy=[yy y(i)]; %dodavanje centroida u niz ends=double(int(x*p,xmax,(xmax-delta)/int(p,xmax,(xmax-delta)))); %yn (postavljeno u

novu promenljivu) koje figurise u Dp Dg=((delta^2)/6)*double(int(p,0,xmax)); Dp=double(int(((x-s)^2*p),xmax,inf)); D=Dg+Dp; SQNR=10*log10(1/D); DD=[DD D]; SQNRS=[SQNRS SQNR]; end deltad %vrednosti za delta smestene u niz tt %vrednosti za t smestene u niz yy %vrednosti za y(centroidi) smestene u niz DD %vrednsti za distorziju SQNRS %vrednosti za odnos signal-sum for br=1:0.1:10 xmaxvek=[xmaxvek br]; %pravi niz xmaxvek end plot (xmaxvek, DD, '*-') xlabel('Xmax'); ylabel('Ukupna distorzija') xmaxvekfor l=1:90 if DD(l)<=min(DD) Dopt(l)=DD(l); l; Xopt=xmaxvek(l) %uporedjuje niz DD i xmaxvek i nalazi Xopt end

14

Page 16: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

end

Slika 7. Grafik koji se dobija funkcijom plot u Mathlabu za odredjivanje xopt

Dobijeni rezultati:

delta = 0.2500 0.2750 0.3000 0.3250 0.3500 0.3750 0.4000 0.4250 0.4500 0.4750 0.5000 0.5250 0.5500 0.5750 0.6000 0.6250 0.6500 0.6750 0.7000 0.7250 0.7500 0.7750 0.8000 0.8250 0.8500 0.8750 0.9000 0.9250 0.9500 0.9750 1.0000 1.0250 1.0500 1.0750 1.1000 1.1250 1.1500 1.1750 1.2000 1.2250 1.2500 1.2750 1.3000 1.3250 1.3500 1.3750 1.4000 1.4250 1.4500 1.4750 1.5000 1.5250 1.5500 1.5750 1.6000 1.6250 1.6500 1.6750 1.7000 1.7250 1.7500 1.7750 1.8000 1.8250 1.8500 1.8750 1.9000 1.9250 1.9500 1.9750 2.0000 2.0250 2.0500 2.0750 2.1000 2.1250 2.1500 2.1750 2.2000 2.2250 2.2500 2.2750 2.3000 2.3250 2.3500 2.3750 2.4000 2.4250 2.4500 2.4750 2.5000

Distorzija =0.3381 0.3335 0.3269 0.3186 0.3090 0.2983 0.2868 0.2749 0.2627 0.2504 0.23830.2265 0.2152 0.2043 0.1940 0.1844 0.1755 0.1673 0.1599 0.1531 0.1471 0.14180.1372 0.1333 0.1300 0.1274 0.1253 0.1238 0.1229 0.1224 0.1225 0.1230 0.12390.1252 0.1270 0.1290 0.1314 0.1342 0.1372 0.1405 0.1441 0.1480 0.1521 0.15640.1609 0.1657 0.1706 0.1757 0.1810 0.1865 0.1922 0.1980 0.2039 0.2100 0.2163

15

Page 17: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

0.2227 0.2292 0.2359 0.2427 0.2496 0.2567 0.2639 0.2712 0.2786 0.2861 0.29380.3016 0.3095 0.3175 0.3256 0.3338 0.3421 0.3506 0.3591 0.3678 0.3766 0.38540.3944 0.4035 0.4127 0.4220 0.4314 0.4409 0.4506 0.4603 0.4701 0.4801 0.49010.5003 0.5105 0.5209

SQNRS =4.7098 4.7696 4.8562 4.9673 5.1005 5.2534 5.4235 5.6084 5.8056 6.0129 6.22806.4486 6.6724 6.8973 7.1212 7.3417 7.5568 7.7645 7.9627 8.1496 8.3233 8.48248.6255 8.7515 8.8595 8.9490 9.0196 9.0716 9.1051 9.1207 9.1192 9.1017 9.06919.0226 8.9635 8.8931 8.8126 8.7231 8.6259 8.5220 8.4125 8.2981 8.1797 8.05827.9341 7.8080 7.6804 7.5518 7.4225 7.2930 7.1635 7.0341 6.9052 6.7770 6.64956.5228 6.3972 6.2726 6.1491 6.0268 5.9058 5.7859 5.6674 5.5501 5.4341 5.31955.2061 5.0940 4.9831 4.8735 4.7652 4.6581 4.5522 4.4475 4.3440 4.2417 4.14054.0404 3.9414 3.8436 3.7467 3.6509 3.5562 3.4624 3.3696 3.2778 3.1870 3.09713.0080 2.9199 2.8327

Xmax sa korakom 0.1 =1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.00002.1000 2.2000 2.3000 2.4000 2.5000 2.6000 2.7000 2.8000 2.9000 3.0000 3.10003.2000 3.3000 3.4000 3.5000 3.6000 3.7000 3.8000 3.9000 4.0000 4.1000 4.20004.3000 4.4000 4.5000 4.6000 4.7000 4.8000 4.9000 5.0000 5.1000 5.2000 5.30005.4000 5.5000 5.6000 5.7000 5.8000 5.9000 6.0000 6.1000 6.2000 6.3000 6.40006.5000 6.6000 6.7000 6.8000 6.9000 7.0000 7.1000 7.2000 7.3000 7.4000 7.50007.6000 7.7000 7.8000 7.9000 8.0000 8.1000 8.2000 8.3000 8.4000 8.5000 8.60008.7000 8.8000 8.9000 9.0000 9.1000 9.2000 9.3000 9.4000 9.5000 9.6000 9.70009.8000 9.9000 10.0000

Xopt = 3.9000

Nakon nalaženja optimalnog kvantizera primenjen je Huffman-ov koder realizovan već

gotovim kodov u programu Mathlab za kodovanje reprezentacionih nivoa koji su dobijeni na izlazu iz vec pomenutog kvantizera. Neka je dat izvor S sa simbolima s i (i=0,1,…q) čije su verovatnoće pojavljivanja Pi (i=0,1,…q) koje se mogu izračunati :

(12)

gde su xi nivoi odlučivanja. Pre nego što se verovatnoće ubace u Mathlab prgramski kod moraju se poređati u nerastući redosled. U nastavku prikazan je kod urađen u programu Mathlab za dati optimalni kvantizer i Huffman-ov koder.

Prikaz koda:

function xoptsyms x

16

Page 18: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

N=8; R=3; tt=[]; yy=[]; pverp=[]; sym=[]; sigmaref=1;p=1/(sqrt(2)*sigmaref)*exp(-abs(x)*sqrt(2)/sigmaref); xmax=7.5; delta=2*xmax/N; for i=1:N+1 t(i)=-xmax+((i-1)*delta); %proracun t1,t2...tn tt=[tt t(i)]; %dodavanje nivoa odlucivanja t1,t2...tn u niz y(i)=double(int(x*p,t(i),t(i)+delta)/int(p,t(i),t(i)+delta)); %proracun centroida yy=[yy y(i)]; %dodavanje centroida u niz end s=yy(8); Dg=((delta^2)/6)*double(int(p,0,xmax)); %provera koliko je yn za Dp Dp=double(int((((x-s)^2)*p),xmax,inf)); D=Dg+Dp; SQNR=10*log10(1/D); N delta %vrednosti za delta smestene u niz D %vrednst distorzije SQNR %vrednost za odnos signal-sum tt for w=1:N sym=[sym yy(w)]; %niz sym=[y1,y2,...,yn]endsymfor k=1:N pver(k)=double(int(p,tt(k),tt(k+1))); %izracunavanje verovatnoce simbola i smestanje

u niz pverp pverp=[pverp pver(k)]; end pverpo=sort((pverp),'descend')' %sortiranje niza pverp u nerastuci redosled b=sum(pverpo) %provera da li su elementi niza jedaki jedinici [dict,avglen] = huffmandict(sym,pverpo) kodovani = huffmanenco(pverpo,dict) avglen(kodovani)

Dobijeni rezultati:

N = 8

Xmax = 7.5

Y = [y1,y2,…, yn] = [-6.1898, -4.3148, -2.4398, -0.5648, 0.5648, 2.4398, 4.3148, 6.1898]

17

Page 19: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

P=[ p1,p2,…, pn] = [0.4647, 0.4647, 0.0328, 0.0328, 0.0023, 0.0023, 0.0002, 0.0002]

Primenom Huffman-ovog koda se dobija sledeci niz:

Enco=[0 11 100 1011 10100 10100 101011 1010101 1010100]

Slika 8. Huffman-ovo kodovanje

18

Page 20: Aritmetičko kodovanje u poređenju sa Huffman-ovim kodovanjem

Literatura

1. Kodovanje video signala, Naučni podmladak - Stručni časopis studenata Univerziteta u Nišu, SKC Niš 2009.

2. www.wikipedia.com Arithmetic coding

3. I.H. Witten, R.M. Neal, J.G. Cleary Arithmetic coding fordata commpresion, Commun ACM 1987.

4. William A.Shay Savremene komunikacione tehnologije i mreže, Kompjuter biblioteka 2004.

5. Daniel Marco, David L. Neuhoff On Midpoints and centroids of uniform scalar quantizers

6. Zoran H. Perić, Jelena R. Lukić, Dragan B. Denić Analiza kvantizera Laplasove raspodele sa promenljivom dužinom kodnih reči za male brzine, Telekomunikacioni forum TELFOR 2010.

19