Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

8.3.2001SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Aritmetické kódování.

Podobné prezentace


Prezentace na téma: "8.3.2001SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Aritmetické kódování."— Transkript prezentace:

1 SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Aritmetické kódování

2 SWI072 Algoritmy komprese dat2 Aritmetické kódování u C.Shannon (1948) u P.Elias (1960?), Jelinek(1968) u Pasco, Rissanen (1976) u Pennebaker, Mitchell,Langdon,Arps (198?) Q-kodér (IBM) u Witten,Neal,Cleary (1987)

3 SWI072 Algoritmy komprese dat3 Aritmetické kódování - příklad u Zakódujeme zprávu BILL GATES

4 ABEGILST

5 SWI072 Algoritmy komprese dat5 Kódování u d:=0 ; h:=1; read(znak)  while znak  EOF do délka-intervalu := h - d d := d + délka-intervalu * dolní-mez(znak) h := d + délka-intervalu * horní-mez(znak) read(znak) od u return d

6 SWI072 Algoritmy komprese dat6 Dekódování u d:=0 ; h:=1 u repeat u délka-intervalu := h - d  najdi znak takový, aby dolní-mez(znak)  (kod-d)/ délka-intervalu < horní-mez(znak) u output(znak) u d := d + délka-intervalu * dolní-mez(znak) u h := d + délka-intervalu * horní-mez(znak) u until není dekódováno celé vstupní slovo ABEGILST kod =

7 SWI072 Algoritmy komprese dat7 Implementace v celočíselné aritmetice  interval   interval  d  h  d, h-1

8 SWI072 Algoritmy komprese dat8 Implementace v celočíselné aritmetice u abeceda A = {1, 2,…, k} u f i = četnost i-tého znaku ve zprávě Z= z 1 z 2 … z n

9 SWI072 Algoritmy komprese dat9 Příklad - kódování u zakódujeme vstup acba

10 SWI072 Algoritmy komprese dat10 Příklad - kódování u zakódujeme vstup acba u w=8 d (0) = 0 = ( ) 2 h (0) = 255 = ( )

11 SWI072 Algoritmy komprese dat11 Příklad - kódování u zakódujeme vstup acba u w=8 d (0) = 0 = ( ) 2 h (0) = 255 = ( )

12 SWI072 Algoritmy komprese dat12 Příklad - kódování acba - 2.krok

13 SWI072 Algoritmy komprese dat13 Příklad - kódování acba - 2.krok

14 SWI072 Algoritmy komprese dat14 Příklad - kódování acba - 2.krok u output(1); d (2) <<= 1 d (2) = ( ) 2 h (2) << 1; h (2) ++ h (2) = ( )

15 SWI072 Algoritmy komprese dat15 Příklad - kódování acba - 2.krok u d (2) = ( ) 2 h (2) = ( )

16 SWI072 Algoritmy komprese dat16 Příklad - kódování acba - 2.krok u d (2) = ( ) 2 h (2) = ( ) 2 d (2) = ( ) 2 h (2) = ( ) !

17 SWI072 Algoritmy komprese dat17 Příklad - kódování acba - 2.krok u d (2) = ( ) 2 h (2) = ( ) 2 d (2) = ( ) 2 h (2) = ( ) 2  d (2) = ( ) 2  d (2) = ( ) 2 = 28 h (2) = ( ) 2  h (2) = ( ) 2 = 175 u zavedeme čítač, inicializace čítač := 0 čítač !

18 SWI072 Algoritmy komprese dat18 Příklad - kódování acba - 3.krok u d (2) = ( ) 2 = 28 h (2) = ( ) 2 = 175 u u output(1); d (3) <<= 1 d (3) = ( ) 2 = 36 h (3) <<= 1; h (3) ++ h (3) = ( ) 2 = 41 u output(0); čítač -- u output(0); d (3) <<= 1 d (3) = ( ) 2 = 72 h (3) <<= 1; h (3) ++ h (3) = ( ) 2 = 83

19 SWI072 Algoritmy komprese dat19 Příklad - kódování acba - 3.krok u d (3) = ( ) 2 = 72 h (3) = ( ) 2 = 83 u output(0); d (3) <<= 1 d (3) = ( ) 2 = 144 h (3) <<= 1; h (3) ++ h (3) = ( ) 2 = 167 u output(1); d (3) <<= 1 d (3) = ( ) 2 = 32 h (3) <<= 1; h (3) ++ h (3) = ( ) 2 = 79 u output(0); d (3) <<= 1 d (3) = ( ) 2 = 64 h (3) <<= 1; h (3) ++ h (3) = ( ) 2 = 159 u čítač ++ ;d (3) = ( ) 2 = 0 h (3) = ( ) 2 = 191

20 SWI072 Algoritmy komprese dat20 Příklad - kódování acba - 4.krok u d (3) = ( ) 2 = 0 h (3) = ( ) 2 = 191

21 SWI072 Algoritmy komprese dat21 Kódování - popis expanze intervalu  E 1 :  0, 0.5)  0, 1)  E 1 (x) = 2x  if  d,h  then output(0) while čítač >0 do output(1) čítač -- od d := 2d; h := 2h + 1 fi

22 SWI072 Algoritmy komprese dat22 Kódování - popis expanze intervalu  E 2 :  0.5, 1)  0, 1)  E 2 (x) = 2(x-0.5)  if  d,h  then output(1) while čítač >0 do output(0) čítač -- od d := 2d; h := 2h + 1 fi

23 SWI072 Algoritmy komprese dat23 Kódování - popis expanze intervalu  E 3 :  0.25, 0.75)  0, 1)  E 3 (x) = 2(x-0.25)  if  d,h  then čítač++ d := 2d - 2 w-1 ; h := 2h - 2 w fi

24 SWI072 Algoritmy komprese dat24 Kódování v celočíselné aritmetice u d:=0 ; h:= 2 w -1; read(znak)

25 SWI072 Algoritmy komprese dat25 Kódování v celočíselné aritmetice u d:=0 ; h:= 2 w -1; read(znak)  while znak  EOF do while lze provést expanzi intervalu do expanze  d, h+1) read(znak) od u return d

26 SWI072 Algoritmy komprese dat26 Dekódování v celočíselné aritmetice u Do kod načti w bitů kódového slova u d := O ; h := 2 w -1 u repeat u rozsah := h - d + 1 u index :=  ((kod - d +1)  n - 1)/ rozsah  u najdi znak takový, aby n(znak-1)  index < n(znak) u output(znak) u aktualizuj d, h pomocí vzorců z procedury kódování (předchozí stránka) u while lze provést expanzi do expanze d, h, kodu (bitový posuv, na místo nejméně významného bitu se doplní 0 pro d, 1 pro h, na do kodu se načte další bit kódového slova) od u until není dekódováno celé vstupní slovo.

27 SWI072 Algoritmy komprese dat27 Implementační poznámky u Velikost četností –pracujeme v intervalu  0, 2 w ) –n - délka vstupu (=součet četností všech znaků) –1/4  2 w  n u Ztráta přesnosti při celočíselných operacích Witten,Neal & Cleary uvádějí empirické údaje –zaokrouhlovací chyby prodlouží délku kódu o bitu/symbol 0,002% délky vstupu –škálování četností: pro vstup délky 10 5 až 10 6 B 0.25% délky vstupu

28 SWI072 Algoritmy komprese dat28 Implementační poznámky u Ukončení znakem EOF –zakóduj EOF –pro jednoznačnost output(01) nebo output(10) dle toho, zda (d,h  obsahuje 2. či 3. čtvrtinu intervalu –doplň na hranici byte (max 7 bitů)  Použití speciálního znaku EOF pro zakódování vstupu délky t při použití celočíselné aritmetiky v intervalu  0, N) prodlouží délku kódu celkem o < 8t/(N ln2) + log 2 N + 7 bitů.

29 SWI072 Algoritmy komprese dat29 Adaptivní verze u Aktualizace kumulovaných četností n(x) u Pro snížení počtu aktualizací je možno pole upořádat dle četností u Periodické škálování četností –interval  0, 8B  –if n=2B then for all i do f i := f i /2

30 SWI072 Algoritmy komprese dat30 Další celočíselné implementace aritmetického kódování u Pennebaker, Mitchell,Langdon,Arps (1988) Q-kodér u P.G.Howard (1992) Kvaziaritmetické kódování


Stáhnout ppt "8.3.2001SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Aritmetické kódování."

Podobné prezentace


Reklamy Google