Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Podobne dokumenty
Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Entropia Kodowanie. Podstawy kompresji. Algorytmy kompresji danych. Sebastian Deorowicz

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A

Kodowanie informacji

Kody Tunstalla. Kodowanie arytmetyczne

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

Kodowanie Huffmana. Platforma programistyczna.net; materiały do laboratorium 2014/15 Marcin Wilczewski

Teoria informacji i kodowania Ćwiczenia

Nierówność Krafta-McMillana, Kodowanie Huffmana

Przetwarzanie i transmisja danych multimedialnych. Wykład 5 Kodowanie słownikowe. Przemysław Sękalski.

Kompresja bezstratna. Entropia. Kod Huffmana

Kodowanie Shannona-Fano

Definicja. Jeśli. wtedy

Temat: Algorytm kompresji plików metodą Huffmana

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

teoria informacji Entropia, informacja, kodowanie Mariusz Różycki 24 sierpnia 2015

Granica kompresji Kodowanie Shannona Kodowanie Huffmana Kodowanie ciągów Kodowanie arytmetyczne. Kody. Marek Śmieja. Teoria informacji 1 / 35

Przetwarzanie i transmisja danych multimedialnych. Wykład 3 Kodowanie Shannona Fano i Huffmana. Przemysław Sękalski.

Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F

Algorytmy kodowania entropijnego

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Przetwarzanie i transmisja danych multimedialnych. Wykład 2 Podstawy kompresji. Przemysław Sękalski.

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

KODY SYMBOLI. Materiały KODA, A.Przelaskowski. Koncepcja przedziałów nieskończonego alfabetu

Kompresja danych DKDA (7)

Teoria Informacji - wykład. Kodowanie wiadomości

Kodowanie predykcyjne

KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Podstawowe pojęcia. Teoria informacji

Kodowanie predykcyjne

Ćwiczenie nr 4: Kodowanie arytmetyczne, range coder

teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015

Kwantyzacja wektorowa. Kodowanie różnicowe.

Wybrane metody kompresji obrazów

Teoria informacji i kodowania Ćwiczenia Sem. zimowy 2016/2017

Kompresja obrazów w statycznych - algorytm JPEG

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a

Podstawy kompresji danych

Kodowanie i entropia

Wstęp Statyczne kody Huffmana Dynamiczne kody Huffmana Praktyka. Kodowanie Huffmana. Dawid Duda. 4 marca 2004

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

0-0000, , , itd

Algorytmy zachłanne. dr inż. Urszula Gałązka

Stan wysoki (H) i stan niski (L)

AKD Metody słownikowe

Optymalizacja ciągła

Wygra Polska czy Brazylia, czyli o tym jak zwięźle zapisywać informacje

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

Przedmowa 11 Ważniejsze oznaczenia 14 Spis skrótów i akronimów 15 Wstęp 21 W.1. Obraz naturalny i cyfrowe przetwarzanie obrazów 21 W.2.

Zastosowanie kompresji w kryptografii Piotr Piotrowski

Kod IEEE754. IEEE754 (1985) - norma dotycząca zapisu binarnego liczb zmiennopozycyjnych (pojedynczej precyzji) Liczbę binarną o postaci

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

ZADANIE 1. Rozwiązanie:

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 1.

dr inż. Jacek Naruniec

Niech x 1,..., x n będzie ciągiem zdarzeń. ---

Kodowanie informacji. Przygotował: Ryszard Kijanka

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 12,

Wprowadzenie. Algorytmy kompresji danych. Sebastian Deorowicz. Politechnika Śląska. Sebastian Deorowicz (PŚl) Wprowadzenie / 60

Cyfrowe przetwarzanie i kompresja danych. dr inż.. Wojciech Zając

Kodowanie podpasmowe. Plan 1. Zasada 2. Filtry cyfrowe 3. Podstawowy algorytm 4. Zastosowania

Fundamentals of Data Compression

Micha Strzelecki Metody przetwarzania i analizy obrazów biomedycznych (2)

Teoretyczne Podstawy Informatyki

Kodowanie informacji. Kody liczbowe

Temat 7. Dekodery, enkodery

Algorytmy i struktury danych

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łan Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Detekcja i korekcja błędów w transmisji cyfrowej

SPRZĘTOWA REALIZACJA KODERA ARYTMETYCZNEGO DO KODOWANIA WSPÓŁCZYNNIKÓW 3D DWT

Systemy liczenia. 333= 3*100+3*10+3*1

Teoria Informacji i Metody Kompresji Danych

6.4 Podstawowe metody statystyczne

Teoria informacji i kodowania Ćwiczenia Sem. zimowy 2016/2017

Ż ż ć Ź ż Ż Ę

ź Ś Ż ć ć Ź Ś ł Ł ć Ś Ś Ż ć ć ŚĆ Ć ć Ś

ć ć ć ć ź ć

Ł ż ż Ł ż ż ż ż ż ż ż ż Ś ż ż ż ż ż ż ż ż ż ź ż ż ż ż ż ć ż ż ż ż ż ć ż

Zapis liczb binarnych ze znakiem

ć ź ć ć ć

ę ę ż ż ć ć ę ć ę ż ć ć ę Ś ę ę ę Ź Ź ż Ś ę ć ć ę ę ę ę ę ę ż ć ż ć ę ę ę Ź ę ż ę ę ę

Kodowanie informacji

Technologie Informacyjne

Elementy teorii informacji i kodowania

2 Kryptografia: algorytmy symetryczne

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Laboratorium ochrony danych

LZ77 LZ78. Kompresja danych. Tomasz Jurdziński. Wykład 5: kodowanie słownikowe

Metody Rozmyte i Algorytmy Ewolucyjne

Wprowadzenie Algorytm ByteRun ByteRun - przykład Algorytm RLE Przykład działania RLE Algorytm LZW Przykład kompresji LZW

O oszczędnym dziennikarzu, czyli czym jest

Techniki multimedialne

Krótki przegląd pierwszych standardów kompresji obrazów

Aproksymacja funkcji a regresja symboliczna

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Transkrypt:

Kompresja Kodowanie arytmetyczne Dariusz Sobczuk

Kodowanie arytmetyczne (lata 1960-te) Pierwsze prace w tym kierunku sięgają początków lat 60-tych XX wieku Pierwszy algorytm Eliasa nie został opublikowany (opisywany jest tylko w później wydanych książkach) Niezależne odkrycie kodowania arytmetycznego latach 1976 1980 przez różnych autorów Aktualnie patent posiada IBM kompresja danych 2

Kodowanie arytmetyczne - Pomysł W metodach entropijnych chodzi o zaokrąglanie rozkładu prawdopodobieństw symboli Ps, powodowane koniecznością zapisania poszczególnych słów kodowych na całkowitej liczbie bitów Najbardziej dokładne przybliżenie rozkładu Ps można uzyskać poprzez przypisanie jednego słowa kodowego całej sekwencji danych źródłowych Dokładność wyznaczania wartości prawdopodobieństwa wystąpienia całego ciągu jest ograniczona sposobem ustalenia jego wartości dla poszczególnych symboli kompresja danych 3

Kodowanie arytmetyczne Pomysł cd Chcemy wyznaczyć P(s we ) i zapisać je za pomocą bitowego ciągu kodowego Jednak dotychczasowy zapis As={a 1,...,a n } i Ps={p 1,...,p n } tak, że Ps: a i P(a i ) nie jest przydatny, gdyż prawdopodobieństwa wystąpienia dwóch symboli mogą być jednakowe Zamiast prawdopodobieństw można użyć dystrybuantę dyskretnego układu zmiennej losowej FP S i = p j= 1 j : i = 1,..., n = {p1, p1 + p2,..., p1 +... + pn} kompresja danych 4

Kodowanie arytmetyczne Pomysł cd Opis za pomocą dystrybuanty pozwala na jednoznaczne odwzorowanie symboli alfabetu As w rozłączne podprzedziały w postaci π s : a i As [F(a i-1 ), F(a i )) [0,1) Zakładając F(a 0 ) = 0 i F(a n ) =1 można dla dowolnego przedziału zapisać π [d,g) : a i As [d+f(a i-1 ) (g-d), d+f(a i ) (g-d)) [d,g) Opierając się na powyższych założeniach można podziały robić rekurencyjnie kompresja danych 5

Kodowanie arytmetyczne - Kodowanie Pierwszy symbol pojawiający się w kodowanym ciągu s 1 = a k, a k As powoduje zawężenie przedziału kodu do π (1) = π s (a k ) = [F(a k-1 ), F(a k ) [0,1). Drugi symbol ciągu wejściowego powoduje zawężenie przedziału π (1) w proporcjach, które wynikają z linii prawdopodobieństwa do π (2) itd. Mamy więc zasadę zwężania kodu π (i) π (i-1) kompresja danych 6

Kodowanie arytmetyczne Kodowanie cd Kod arytmetyczny K=A 0 : As [0,1]) z jedną linią prawdopodobieństwa Πs = {[F(a i-1 ), F(a i )), i=1,...n} na podstawie kodu wejściowego s i =a k modyfikuje aktualny przedział w następujący sposób: A 0 (π s (a k ), π (i-1) ) = π (i) gdzie π (i) =[D (i),g (i) ) oraz: D (i) = D (i-1) + R (i-1) F(a k-1 ), G (i) = D (i-1) + R (i-1) F(a k ), dla i=1,2,... Długość przedziału kodowego: R (i-1) = π (i-1) = G (i-1) -D (i-1) kompresja danych 7

Kodowanie arytmetyczne - Dekodowanie Ponieważ π (t) π (1), to pozwala określić do jakiego przedziału Πs trafia L t, co pozwala zdekodować pierwszy symbol s 1 = a k L t [F(a k-1 ), F(a k )) Dalej przeskalowujemy liczby zgodnie ze wzorem: L i-1 = (L i - F(a k-1 ))/(F(a k ) - F(a k-1 )) i rzutując na linie prawdpodobieństw otrzymujemy symbol s i = a k L t [F(a k-1 ), F(a k )) Dodatkowo jest potrzebna liczba ciągu wejściowego, bo inaczej kodowanie się zapętli. Po osiągnięciu tej liczby dekodowanie kończy się kompresja danych 8

Kodowanie arytmetyczne - Przykład Kodujemy słowo ARYTMETYKA a 1 = A ; P(a 1 )=0.2; π s (a 1 )=[0, 0.2) a 2 = E ; P(a 2 )=0.1; π s (a 2 )=[0.2, 0.3) a 3 = K ; P(a 3 )=0.1; π s (a 3 )=[0.3, 0.4) a 4 = M ; P(a 4 )=0.1; π s (a 4 )=[0.4, 0.5) a 5 = R ; P(a 5 )=0.1; π s (a 5 )=[0.5, 0.6) a 6 = T ; P(a 6 )=0.2; π s (a 6 )=[0.6, 0.8) a 7 = Y ; P(a 7 )=0.2; π s (a 7 )=[0.8, 1.0) kompresja danych 9

Kod. arytmetyczne Przykład cd i s i = a k D (i) G (i) R (i) 0 INI 0 1 1 1 A 0.0 0.2 0.2 2 R 0.1 0.12 0.02 3 Y 0.116 0.12 0.004 4 T 0.1184 0.1192 0.0008 5 M 0.11872 0.1188 0.00008 6 E 0.118736 0.118744 0.000008 7 T 0.1187408 0.1187424 0.0000016 8 Y 0.11874208 0.1187424 0.00000032 9 K 0.118742176 0.118742208 0.000000032 10 A 0.118742176 0.1187421824 0.0000000064 kompresja danych 10

Kod. Arytmetyczne - Przykład cd. i Liczba kodowa L i s i = a k F(a k-1 ) F(a k ) ΔF(a k ) 1 0.118742176 A 0.0 0.2 0.2 2 0.59371088 R 0.5 0.6 0.1 3 0.9371088 Y 0.8 1.0 0.2 4 0.685544 T 0.6 0.8 0.2 5 0.42772 M 0.4 0.5 0.1 6 0.2772 E 0.2 0.3 0.1 7 0.72 T 0.6 0.8 0.2 8 0.86 Y 0.8 1.0 0.2 9 0.3 K 0.3 0.4 0.1 10 0 A 0.0 0.2 0.2... 0 A 0.0 0.2 0.2 kompresja danych 11

Kod. Arytmetyczne - Przykład cd. i Liczba kodowa L i s i = a k F(a k-1 ) F(a k ) ΔF(a k ) 1 0.11874218 A 0.0 0.2 0.2 2 0.5937109 R 0.5 0.6 0.1 3 0.937109 Y 0.8 1.0 0.2 4 0.685546 T 0.6 0.8 0.2 5 0.427725 M 0.4 0.5 0.1 6 0.27725 E 0.2 0.3 0.1 7 0.725 T 0.6 0.8 0.2 8 0.8625 Y 0.8 1.0 0.2 9 0.3125 K 0.3 0.4 0.1 10 0.125 A 0.0 0.2 0.2... 0.625 T 0.6 0.8 0.2 kompresja danych 12

Częstość występowania symboli w badanej sekwencji tekstowej Jakżeż ja się uspokoję Pełne strachu oczy moje, Pełne grozy myśli moje, Pełne trwogi serce moje, Pełne drżenia piersi moje Jakżeż ja się uspokoję... Symbol L. wyst. Symbol L. wyst. a 6 p 7 c 3 r 6 d 1 s 7 e 18 ś 1 ę 4 t 2 g 2 u 3 h 1 w 1 i 7 y 3 j 10 z 2 k 4 ż 5 l 1, 3 ł 4. 3 m 5 2 n 5 <spacja> 20 o 11 <nw> 6 kompresja danych 13

Kodowanie arytmetyczne przykładowa sekwencja 0 0,0392 0,2288 0,2745 0,3399 0,3660 0,9608 1,0000 a i j k <nw> 0,2745 0,2784 0,2788 0,3373 0,3399 a c <nw> 0,274510,27461 0,27521 0,27545 0,27546 0,27697 0,27707 a j k <nw> kompresja danych 14

Kodowanie arytmetyczne cechy W teorii wymagane są operacje na liczbach o bardzo dużej precyzji (rzędu milionów cyfr) Dzięki takiemu podejściu możliwe jest uzyskanie kodu o średniej długości odpowiadającej entropii (kod całej wiadomości będzie dłuższy o nie więcej niż 2 bity od kodu wynikającego z entropii) Operacje na liczbach o takiej precyzji są bardzo czasochłonne kompresja danych 15

Kodowanie arytmetyczne podejście praktyczne Przedziały stają się bardzo małe, a co za tym idzie pierwsze cyfry obu końców są identyczne Wykorzystując to implementuje się kodowanie arytmetyczne na liczbach o niewielkiej liczbie cyfr znaczących (typowo na liczbach 32-bitowych) Znacząco większa prędkość działania takiej implementacji Nieznaczne pogorszenie współczynnika kompresji kompresja danych 16

Koder binarny Koder binarny jest szczególnym przypadkiem realizacji kodu arytmetycznego dla dwuelementowego alfabetu As={0,1} Binarne kodowanie adaptacyjne jest najbardziej efektywną, entropijną metodą kodowania przy kompresji obrazów (JBIG, JBIG2, MPEG-4, JPEG, JPEG200) Większość realizacji kodowania arytmetycznego dotyczy alfabetu binarnego kompresja danych 17

Algorytm kodowania binarnego Przy alfabecie As={a 1,a 2 } podział linii prawdopodobieństw Πs zależy od jednej wartości F(a 1 )=P(a 1 )=p 1. Mamy wówczas dwa podprzedziały [0, p 1 ) oraz [p 1,1). Aktualna postać przedziału kodowego π (i) =[D (i),g (i) ) o długości R (i) = π (i) = G (i) -D (i) zależy od wartości liczby R 1 (i-1) = R (i-1) p 1. kompresja danych 18

Algorytm kodowania binarnego cd Algorytm kodowania: Jeśli kodujemy s i = a 1 to π (i) =[D (i-1), D (i-1) + R 1 (i-1) ) Jeśli kodujemy s i = a 2 to π (i) =[D (i-1) ) +R 1 (i-1), G (i-1) ) W pierwszym przypadku modyfikowana jest tylko górna granica. W drugim przypadku modyfikowana jest tylko dolna granica. kompresja danych 19

Algorytm kodowania binarnego cd Algorytm dekodowania: Jeśli L - D (i-1) < R 1 (i-1), to dekodujemy s i = a 1 oraz π (i) =[D (i-1), D (i-1) + R 1 (i-1) ) Jeśli L - D (i-1) R 1 (i-1), to dekodujemy s i = a 2 oraz π (i) =[D (i-1) ) +R 1 (i-1), G (i-1) ) Wartość przedziału kodowego w praktyce można ustalić za pomocą zmiennych DÓŁ i GÓRA kompresja danych 20

Kodowanie Huffmana a kodowanie arytmetyczne Kodowanie Huffmana: kod optymalny w klasie kodów o długościach będącymi liczbami całkowitymi stosunkowo łatwy do obliczania współczynnik kompresji zwykle niewiele gorszy od teoretycznego optimum brak ograniczeń patentowych Kodowanie arytmetyczne: kod optymalny stosunkowo trudny do obliczania niewysoka wydajność wynikająca z konieczności wykonywania operacji arytmetycznych bardzo dobry współczynnik kompresji (zbieżny do entropii) ograniczenia patentowe kompresja danych 21

Paradygmat modelowanie kodowanie Modelowanie uaktualnienie modelu Modelowanie uaktualnienie modelu sekwencja wejściowa Kodowanie dane skompresowane Dekodowanie sekwencja wyjściowa kompresja danych 22

Kodowanie adaptacyjne Kod budowany na podstawie częstości wystąpień symboli w dotychczas zakodowanym fragmencie Zalety: brak konieczności przekazywania do dekodera informacji o prawd. występowania symboli dobry współczynnik kompresji Wady: niska prędkość działania (konieczność modyfikacji kodu po zakodowaniu każdego symbolu) kompresja danych 23

Adaptacyjne kodowanie Huffmana Model początkowy zakłada, że prawdopodobieństwo wystąpienia każdego symbolu alfabetu jest jednakowe Kod Huffmana konstruowany jest dla takiego modelu Po zakodowaniu każdego symbolu kod Huffmana jest przebudowywany, aby symbole, które w przeszłości występowały częściej otrzymały krótsze kody kompresja danych 24

Adaptacyjne kodowanie Huffmana cechy Zalety: brak konieczności przesyłania do dekodera informacji o modelu dobry współczynnik kompresji Wady: wolne uaktualnianie drzewa Huffmana po zakodowaniu każdego symbolu kompresja danych 25

Adaptacyjne kodowanie arytmetyczne Model początkowy zakłada jednakowe prawdopodobieństwo występowania każdego symbolu alfabetu Przedział [0, 1) dzielony jest na podprzedziały równej długości Po zakodowaniu każdego symbolu modyfikowane jest prawdopodobieństwo jego występowania, aby zwiększyć względną długość podprzedziału mu odpowiadającego kompresja danych 26

Adaptacyjne kodowanie arytmetyczne cechy Zalety: brak konieczności przesyłania do dekodera informacji o modelu dobry współczynnik kompresji Wady: konieczność przechowywania statystyk występowania symboli w specjalnych strukturach danych umożliwiających szybki dostęp i aktualizację wolniejsze niż kodowanie statyczne kompresja danych 27

Czym jest tak naprawdę kodowanie? Algorytmy kodowania służą do przydzielenia symbolom kodów w taki sposób aby średnia długość kodu w kodowanej sekwencji była jak najmniejsza Algorytmy te bazują na rozkładzie prawdopodobieństwa występowania symboli, który jest dostarczany przez algorytm modelowania kompresja danych 28

Plan kolejnego wykładu Algorytmy kompresji bezstratnej ogólnego przeznaczenia: metody Ziva Lempela (LZ) metody predykcji przez częściowe dopasowanie (PPM) metody oparta na transformacie Burrowsa Wheelera (BWT) Porównanie wydajności algorytmów kompresja danych 29