Professional Documents
Culture Documents
Kodowanie arytmetyczne
Kodowanie i kompresja informacji - Wykad 3 Filip Zagrski
8 marca 2010
Filip Zagrski
Kody Tunstalla
ale Wszystkie sowa kodowe maja ta sama dugo sc jeden kod mo ze kodowa c r zna liczbe liter alfabetu wej sciowego.
Filip Zagrski
Kody Tunstalla
ale Wszystkie sowa kodowe maja ta sama dugo sc jeden kod mo ze kodowa c r zna liczbe liter alfabetu wej sciowego. rednia Chcemy zmaksymalizowa cs liczbe symboli z pierwotnego alfabetu reprezentowanych przez sowa kodowe.
Filip Zagrski
Kody Tunstalla
ale Wszystkie sowa kodowe maja ta sama dugo sc jeden kod mo ze kodowa c r zna liczbe liter alfabetu wej sciowego. rednia Chcemy zmaksymalizowa cs liczbe symboli z pierwotnego alfabetu reprezentowanych przez sowa kodowe. Alfabet wej sciowy: litery a1 , a2 , . . . , aN z prawdopodobienstwami p1 , p2 , . . . , pN (N symboli).
Filip Zagrski
Kody Tunstalla
ale Wszystkie sowa kodowe maja ta sama dugo sc jeden kod mo ze kodowa c r zna liczbe liter alfabetu wej sciowego. rednia Chcemy zmaksymalizowa cs liczbe symboli z pierwotnego alfabetu reprezentowanych przez sowa kodowe. Alfabet wej sciowy: litery a1 , a2 , . . . , aN z prawdopodobienstwami p1 , p2 , . . . , pN (N symboli). Kody sa dugo sci n bitw.
Filip Zagrski
Filip Zagrski
Filip Zagrski
Filip Zagrski
Filip Zagrski
Filip Zagrski
Filip Zagrski
Przykad
We zmy alfabet a, b, c (N = 3) z prawdopodobienstwami P (a) = 0.6, P (b) = 0.3 i P (c ) = 0.1.
Filip Zagrski
Przykad
We zmy alfabet a, b, c (N = 3) z prawdopodobienstwami P (a) = 0.6, P (b) = 0.3 i P (c ) = 0.1. Ustalmy n = 3 (8 sw kodowych).
Filip Zagrski
Przykad
We zmy alfabet a, b, c (N = 3) z prawdopodobienstwami P (a) = 0.6, P (b) = 0.3 i P (c ) = 0.1. Ustalmy n = 3 (8 sw kodowych). Mamy 3 sowa kodowe odpowiadajace a 0.6, b 0.3 i c 0.1.
Filip Zagrski
Przykad
We zmy alfabet a, b, c (N = 3) z prawdopodobienstwami P (a) = 0.6, P (b) = 0.3 i P (c ) = 0.1. Ustalmy n = 3 (8 sw kodowych). Mamy 3 sowa kodowe odpowiadajace a 0.6, b 0.3 i c 0.1. Zastepujemy a i otrzymujemy 5 kodw: aa 0.36, ab 0.18, ac 0.06, b 0.3 c 0.1.
Filip Zagrski
Przykad
We zmy alfabet a, b, c (N = 3) z prawdopodobienstwami P (a) = 0.6, P (b) = 0.3 i P (c ) = 0.1. Ustalmy n = 3 (8 sw kodowych). Mamy 3 sowa kodowe odpowiadajace a 0.6, b 0.3 i c 0.1. Zastepujemy a i otrzymujemy 5 kodw: aa 0.36, ab 0.18, ac 0.06, b 0.3 c 0.1. Zastepujemy aa i otrzymujemy 7 kodw: aaa 0.216, aab 0.108, aac 0.036, ab 0.18, ac 0.06, b 0.3 i c 0.1.
Filip Zagrski
Przykad
We zmy alfabet a, b, c (N = 3) z prawdopodobienstwami P (a) = 0.6, P (b) = 0.3 i P (c ) = 0.1. Ustalmy n = 3 (8 sw kodowych). Mamy 3 sowa kodowe odpowiadajace a 0.6, b 0.3 i c 0.1. Zastepujemy a i otrzymujemy 5 kodw: aa 0.36, ab 0.18, ac 0.06, b 0.3 c 0.1. Zastepujemy aa i otrzymujemy 7 kodw: aaa 0.216, aab 0.108, aac 0.036, ab 0.18, ac 0.06, b 0.3 i c 0.1. aaa aab 000 001 aac ab ac b c ??? 010 011 100 101 110 111
Filip Zagrski Kody Tunstalla. Kodowanie arytmetyczne
Przykad
Filip Zagrski
Przykad
Filip Zagrski
Przykad
Filip Zagrski
Przykad
Zakodujmy tekst abcaabbaa. Otrzymujemy: 001110001101??. tekstu mo Na koncu ze pojawi c sie blok dla ktrego nie ma sowa kodowego, wtedy wysyamy specjalny kod i normalne kody liter.
Filip Zagrski
Przykad
Zakodujmy tekst abcaabbaa. Otrzymujemy: 001110001101??. tekstu mo Na koncu ze pojawi c sie blok dla ktrego nie ma sowa kodowego, wtedy wysyamy specjalny kod i normalne kody liter. 001110001101111kod (a)kod (a)
Filip Zagrski
Srednia dugo sc
bitw na jeden symbol wej Srednia ilo sc sciowy.
2n 1
P (ei )
i =1
n , |ei |
Filip Zagrski
Srednia dugo sc
bitw na jeden symbol wej Srednia ilo sc sciowy.
2n 1
P (ei )
i =1
n , |ei |
gdzie ei - sowo odpowiadajace i -temu kodowi. Dla przykadu z poprzedniego slajdu: 3 (0.216 + 0.108 + 0.036) 3 + 3 (0.18 + 0.06) 2 + (0.3 + 0.1) 3 = 1.92 1
Filip Zagrski
Srednia dugo sc
bitw na jeden symbol wej Srednia ilo sc sciowy.
2n 1
P (ei )
i =1
n , |ei |
gdzie ei - sowo odpowiadajace i -temu kodowi. Dla przykadu z poprzedniego slajdu: 3 (0.216 + 0.108 + 0.036) 3 + 3 (0.18 + 0.06) 2 + (0.3 + 0.1) 3 = 1.92 1 kodu Huffmana dla tego przypadku Srednia dugo sc to 1.4.
Filip Zagrski Kody Tunstalla. Kodowanie arytmetyczne
Filip Zagrski
blokw wej Zmienna dugo sc sciowych, staa dugo sc wyj sciowych. na przekamania. Kompresja i odporno sc
Filip Zagrski
blokw wej Zmienna dugo sc sciowych, staa dugo sc wyj sciowych. na przekamania. Kompresja i odporno sc kodowania i dekodowania. Jednoznaczno sc
Filip Zagrski
Kodowanie arytmetyczne
Filip Zagrski
Kodowanie arytmetyczne
Tekst wej sciowy zostaje odwzorowany na liczbe z przedziau [0, 1). tekstu i liczba z Kod tekstu to liczba n - dugo sc (znacznik) reprezentowany z odpowiednio dobrana dokadno scia.
Filip Zagrski
Kodowanie arytmetyczne
Tekst wej sciowy zostaje odwzorowany na liczbe z przedziau [0, 1). tekstu i liczba z Kod tekstu to liczba n - dugo sc (znacznik) reprezentowany z odpowiednio dobrana dokadno scia. Elementom alfabetu a1 , . . . , aN z prawdopodobienstwami p1 , . . . , pN przyporzadkowujemy przedzia [F (i ), F (i + 1)), gdzie i 1 F (i ) = j =1 pi .
Filip Zagrski
Kodowanie
Filip Zagrski
Kodowanie
Filip Zagrski
Kodowanie
Filip Zagrski
Kodowanie
Filip Zagrski
Kodowanie
Filip Zagrski
Kodowanie
Filip Zagrski
Przykad
Filip Zagrski
Przykad
Filip Zagrski
Przykad
We zmy alfabet a, b, c z prawdopodobienstwami 0.7, 0.1, 0.2. Zakodujmy tekst abc . Na poczatku mamy przedzia: [0, 1).
Filip Zagrski
Przykad
We zmy alfabet a, b, c z prawdopodobienstwami 0.7, 0.1, 0.2. Zakodujmy tekst abc . Na poczatku mamy przedzia: [0, 1). F (1) = 0, F (2) = 0.7, F (3) = 0.8, F (4) = 1.
Filip Zagrski
Przykad
We zmy alfabet a, b, c z prawdopodobienstwami 0.7, 0.1, 0.2. Zakodujmy tekst abc . Na poczatku mamy przedzia: [0, 1). F (1) = 0, F (2) = 0.7, F (3) = 0.8, F (4) = 1. Kodujemy a i otrzymujemy przedzia [0, 0.7).
Filip Zagrski
Przykad
We zmy alfabet a, b, c z prawdopodobienstwami 0.7, 0.1, 0.2. Zakodujmy tekst abc . Na poczatku mamy przedzia: [0, 1). F (1) = 0, F (2) = 0.7, F (3) = 0.8, F (4) = 1. Kodujemy a i otrzymujemy przedzia [0, 0.7). Kodujemy b i otrzymujemy przedzia [0.49, 0.56).
Filip Zagrski
Przykad
We zmy alfabet a, b, c z prawdopodobienstwami 0.7, 0.1, 0.2. Zakodujmy tekst abc . Na poczatku mamy przedzia: [0, 1). F (1) = 0, F (2) = 0.7, F (3) = 0.8, F (4) = 1. Kodujemy a i otrzymujemy przedzia [0, 0.7). Kodujemy b i otrzymujemy przedzia [0.49, 0.56). Kodujemy c i otrzymujemy przedzia [0.546, 0.56).
Filip Zagrski
Przykad
We zmy alfabet a, b, c z prawdopodobienstwami 0.7, 0.1, 0.2. Zakodujmy tekst abc . Na poczatku mamy przedzia: [0, 1). F (1) = 0, F (2) = 0.7, F (3) = 0.8, F (4) = 1. Kodujemy a i otrzymujemy przedzia [0, 0.7). Kodujemy b i otrzymujemy przedzia [0.49, 0.56). Kodujemy c i otrzymujemy przedzia [0.546, 0.56). Za znacznik mo zemy przyja c 0.553.
Filip Zagrski
Wasno sci
Dla ustalonej dugo sci tekstu n, ka zdy ciag jest odwzorowany na przedzia rozaczny z przedziaami odpowiadajacymi innym ciagom. Gwarantuje to kodowania. jednoznaczno sc
Filip Zagrski
Wasno sci
Dla ustalonej dugo sci tekstu n, ka zdy ciag jest odwzorowany na przedzia rozaczny z przedziaami odpowiadajacymi innym ciagom. Gwarantuje to kodowania. jednoznaczno sc Wygenerowanie znacznika dla konkretnego ciagu nie wymaga wyznaczania bad z pamietania znacznikw innych ciagw.
Filip Zagrski
Dekodowanie
Filip Zagrski
Dekodowanie
Filip Zagrski
Dekodowanie
Filip Zagrski
Dekodowanie
Filip Zagrski
Dekodowanie
Filip Zagrski
Dekodowanie
Filip Zagrski
Dekodowanie
Ciag oryginalny to x1 , . . . , xn .
Filip Zagrski
Przykad
P (a) = 0.7, P (b) = 0.1, P (c ) = 0.2, z = 0.55 i n = 3.
Filip Zagrski
Przykad
P (a) = 0.7, P (b) = 0.1, P (c ) = 0.2, z = 0.55 i n = 3. F (1) = 0, F (2) = 0.7, F (3) = 0.8 i F (4) = 1.
Filip Zagrski
Przykad
P (a) = 0.7, P (b) = 0.1, P (c ) = 0.2, z = 0.55 i n = 3. F (1) = 0, F (2) = 0.7, F (3) = 0.8 i F (4) = 1. l = 0 i p = 1.
Filip Zagrski
Przykad
P (a) = 0.7, P (b) = 0.1, P (c ) = 0.2, z = 0.55 i n = 3. F (1) = 0, F (2) = 0.7, F (3) = 0.8 i F (4) = 1. l = 0 i p = 1. Dla a mamy 0 0.55 < 0.7, stad x1 = a, l = 0 i p = 0.7.
Filip Zagrski
Przykad
P (a) = 0.7, P (b) = 0.1, P (c ) = 0.2, z = 0.55 i n = 3. F (1) = 0, F (2) = 0.7, F (3) = 0.8 i F (4) = 1. l = 0 i p = 1. Dla a mamy 0 0.55 < 0.7, stad x1 = a, l = 0 i p = 0.7. Dla b mamy 0.49 0.55 < 0.56, stad x2 = b , l = 0.49 i p = 0.56.
Filip Zagrski
Przykad
P (a) = 0.7, P (b) = 0.1, P (c ) = 0.2, z = 0.55 i n = 3. F (1) = 0, F (2) = 0.7, F (3) = 0.8 i F (4) = 1. l = 0 i p = 1. Dla a mamy 0 0.55 < 0.7, stad x1 = a, l = 0 i p = 0.7. Dla b mamy 0.49 0.55 < 0.56, stad x2 = b , l = 0.49 i p = 0.56. Dla c mamy 0.546 0.55 < 0.56, stad x3 = c , l = 0.546 i p = 0.56.
Filip Zagrski
Przykad
P (a) = 0.7, P (b) = 0.1, P (c ) = 0.2, z = 0.55 i n = 3. F (1) = 0, F (2) = 0.7, F (3) = 0.8 i F (4) = 1. l = 0 i p = 1. Dla a mamy 0 0.55 < 0.7, stad x1 = a, l = 0 i p = 0.7. Dla b mamy 0.49 0.55 < 0.56, stad x2 = b , l = 0.49 i p = 0.56. Dla c mamy 0.546 0.55 < 0.56, stad x3 = c , l = 0.546 i p = 0.56. Odkodowany ciag to abc
Filip Zagrski
Wasno sci
Jak reprezentowa c znacznik (liczba rzeczywista) aby by jak najkrtszy.
Filip Zagrski
Wasno sci
Jak reprezentowa c znacznik (liczba rzeczywista) aby by jak najkrtszy. Niech x = x1 , . . . , xn bedzie ciagiem danych o prawdopodobienstwie wystapienia P (x ) = n z znacznika z do i =1 P (xi ). Zaokraglenie m(x ) = log 1 +1 P (X )
Filip Zagrski
Wasno sci
Jak reprezentowa c znacznik (liczba rzeczywista) aby by jak najkrtszy. Niech x = x1 , . . . , xn bedzie ciagiem danych o prawdopodobienstwie wystapienia P (x ) = n z znacznika z do i =1 P (xi ). Zaokraglenie m(x ) = log 1 +1 P (X )
kodowania. bitw gwarantuje jednoznaczno sc Kod arytmetyczny dla ustalonej dugo sci tekstu jest kodem preksowym.
Filip Zagrski
Przykad
Filip Zagrski
Przykad
P (a) = 0.7, P (b) = 0.1, P (c ) = 0.2. Kod dla tekstu abc to 0.553 = (0.100011011)2 .
Filip Zagrski
Przykad
P (a) = 0.7, P (b) = 0.1, P (c ) = 0.2. Kod dla tekstu abc to 0.553 = (0.100011011)2 . P (abc ) = 0.014.
Filip Zagrski
Przykad
P (a) = 0.7, P (b) = 0.1, P (c ) = 0.2. Kod dla tekstu abc to 0.553 = (0.100011011)2 . P (abc ) = 0.014. 1 log 0.014 +1=8
Filip Zagrski
Przykad
P (a) = 0.7, P (b) = 0.1, P (c ) = 0.2. Kod dla tekstu abc to 0.553 = (0.100011011)2 . P (abc ) = 0.014. 1 log 0.014 +1=8 Czyli do zakodowania tekstu wystarczy wysa c 10001101.
Filip Zagrski
Usprawnienia
Dla dugich ciagw potrzebujemy dugich liczb i przetwarzanie wymaga przeczytania caego ciagu.
Filip Zagrski
Usprawnienia
Dla dugich ciagw potrzebujemy dugich liczb i przetwarzanie wymaga przeczytania caego ciagu. Mo zna zmodykowa c algorytm do pracy przyrostowej - znacznik powstaje etapami i mo zna wysya c go fragmentami.
Filip Zagrski
Kodowanie ze skalowaniem
Po zakodowaniu kolejnej litery: Je sli [l , p) [0, 0.5):
Filip Zagrski
Kodowanie ze skalowaniem
Po zakodowaniu kolejnej litery: Je sli [l , p) [0, 0.5):
[l , p) na [2l , 2p); zamien
Filip Zagrski
Kodowanie ze skalowaniem
Po zakodowaniu kolejnej litery: Je sli [l , p) [0, 0.5):
[l , p) na [2l , 2p); zamien doacz do kodu sowo 01licznik ;
Filip Zagrski
Kodowanie ze skalowaniem
Po zakodowaniu kolejnej litery: Je sli [l , p) [0, 0.5):
[l , p) na [2l , 2p); zamien doacz do kodu sowo 01licznik ; licznik 0.
Filip Zagrski
Kodowanie ze skalowaniem
Po zakodowaniu kolejnej litery: Je sli [l , p) [0, 0.5):
[l , p) na [2l , 2p); zamien doacz do kodu sowo 01licznik ; licznik 0.
Filip Zagrski
Kodowanie ze skalowaniem
Po zakodowaniu kolejnej litery: Je sli [l , p) [0, 0.5):
[l , p) na [2l , 2p); zamien doacz do kodu sowo 01licznik ; licznik 0.
Filip Zagrski
Kodowanie ze skalowaniem
Po zakodowaniu kolejnej litery: Je sli [l , p) [0, 0.5):
[l , p) na [2l , 2p); zamien doacz do kodu sowo 01licznik ; licznik 0.
Filip Zagrski
Kodowanie ze skalowaniem
Po zakodowaniu kolejnej litery: Je sli [l , p) [0, 0.5):
[l , p) na [2l , 2p); zamien doacz do kodu sowo 01licznik ; licznik 0.
Filip Zagrski
Kodowanie ze skalowaniem
Po zakodowaniu kolejnej litery: Je sli [l , p) [0, 0.5):
[l , p) na [2l , 2p); zamien doacz do kodu sowo 01licznik ; licznik 0.
Filip Zagrski
Kodowanie ze skalowaniem
Po zakodowaniu kolejnej litery: Je sli [l , p) [0, 0.5):
[l , p) na [2l , 2p); zamien doacz do kodu sowo 01licznik ; licznik 0.
Filip Zagrski
Kodowanie ze skalowaniem
Po zakodowaniu kolejnej litery: Je sli [l , p) [0, 0.5):
[l , p) na [2l , 2p); zamien doacz do kodu sowo 01licznik ; licznik 0.
Filip Zagrski
Kodowanie ze skalowaniem
Po zakodowaniu kolejnej litery: Je sli [l , p) [0, 0.5):
[l , p) na [2l , 2p); zamien doacz do kodu sowo 01licznik ; licznik 0.
Analogicznie mo zna zmodykowa c procedure dekodowania aby dekodowanie odbywao sie na podstawie otrzymywanych fragmentw.
Filip Zagrski Kody Tunstalla. Kodowanie arytmetyczne
Przej scie z arytmetyki zmiennoprzecinkowej na arytmetyk e cakowitoliczbowa: zastapienie przedziau m [0, 1) przez przedzia liczb cakowitych [0, 2 1].
Filip Zagrski
Przej scie z arytmetyki zmiennoprzecinkowej na arytmetyk e cakowitoliczbowa: zastapienie przedziau m [0, 1) przez przedzia liczb cakowitych [0, 2 1]. Problem: Jak dobra c m aby unikna c bedw zaokragle n.
Filip Zagrski
Filip Zagrski
odwzorowujemy 0 na 000 . . . 0
Filip Zagrski
odwzorowujemy 0 na 000 . . . 0
m razy
odwzorowujemy 1 na 111 . . . 1
Filip Zagrski
odwzorowujemy 0 na 000 . . . 0
m razy
odwzorowujemy 1 na 111 . . . 1
m1 razy
odwzorowujemy 0, 5 na 1 00 . . . 0
Filip Zagrski
odwzorowujemy 0 na 000 . . . 0
m razy
odwzorowujemy 1 na 111 . . . 1
m1 razy
odwzorowujemy 0, 5 na 1 00 . . . 0
Filip Zagrski
odwzorowujemy 0 na 000 . . . 0
m razy
odwzorowujemy 1 na 111 . . . 1
m1 razy
odwzorowujemy 0, 5 na 1 00 . . . 0
Zamieniamy wyra zenia aktualizujace tak, aby uwzgledniay zaokraglenia. Skalowanie dziaa tak, jak w przypadku oryginalnego algorytmu.
Filip Zagrski Kody Tunstalla. Kodowanie arytmetyczne
Filip Zagrski
1 m W przypadku kodowania Huffmana teoretyczna warto sc jest maa, jednak dla du zych warto sci m kody Huffmana sa niepraktyczne. H (S ) lH H (S ) +
Filip Zagrski Kody Tunstalla. Kodowanie arytmetyczne