Algorytmy kodowania entropijnego

Podobne dokumenty
Kompresja bezstratna. Entropia. Kod Huffmana

Nierówność Krafta-McMillana, Kodowanie Huffmana

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

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

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

Teoria informacji i kodowania Ćwiczenia

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

Kody Tunstalla. Kodowanie arytmetyczne

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

0-0000, , , itd

Definicja. Jeśli. wtedy

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

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

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

Temat: Algorytm kompresji plików metodą Huffmana

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Kodowanie informacji

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

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

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

Kwantyzacja wektorowa. Kodowanie różnicowe.

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

Kodowanie i entropia

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

Teoria Informacji - wykład. Kodowanie wiadomości

Podstawowe pojęcia. Teoria informacji

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

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

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

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

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

Elementy teorii informacji i kodowania

Podstawy kompresji danych

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

Kodowanie Shannona-Fano

ZADANIE 1. Rozwiązanie:

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

Przetwarzanie i transmisja danych multimedialnych. Wykład 6 Metody predykcyjne. Przemysław Sękalski.

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Kodowanie predykcyjne

Algorytmy i struktury danych

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

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

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

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

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

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

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

Algorytmy i struktury danych. wykład 8

Teoria Informacji i Metody Kompresji Danych

Kompresja danych - wprowadzenie. 1. Konieczno kompresji 2. Definicja, typy kompresji 3. Modelowanie 4. Podstawy teorii informacji 5.

Programowanie dynamiczne i algorytmy zachłanne

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

Wybrane metody kompresji obrazów

Algorytmy graficzne. Podstawy kompresji danych fragment wykładu. Marcin Wilczewski

Algorytmy i struktury danych

Wstęp do Programowania potok funkcyjny

Kody Huffmana. Konrad Wypyski. 11 lutego 2006 roku

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

Sortowanie. Bartman Jacek Algorytmy i struktury

Wstęp do Informatyki

1.1. Pozycyjne systemy liczbowe

Ćwiczenie nr 4: Kodowanie arytmetyczne, range coder

Tranzystor JFET i MOSFET zas. działania

Kompresja danych DKDA (7)

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 12,

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Przepustowość kanału, odczytywanie wiadomości z kanału, poprawa wydajności kanału.

AKD Metody słownikowe

Joint Photographic Experts Group

dr inż. Jacek Naruniec

Temat 7. Dekodery, enkodery

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

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

Podstawy Informatyki: Kody. Korekcja błędów.

Problem kodowania w automatach

Metody kompresji i przechowywania obrazów

Optymalizacja ciągła

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Kwantyzacja wektorowa. Plan 1. Zasada działania 2. Projektowanie. Algorytm LBG 3. Kwantyzatory strukturalne 4. Modyfikacje

Fundamentals of Data Compression

wiadomość komunikat - informacja Caius Julius Cesar Człowiek zasztyletowany przez senatorów na forum Romanum w Idy Marcowe roku DCCIX ab urbe condita

Podstawy Informatyki. Metody dostępu do danych

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Modelowanie motywów łańcuchami Markowa wyższego rzędu

Automatyka. Treść wykładów: Multiplekser. Układ kombinacyjny. Demultiplekser. Koder

Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych

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

SYSTEMY UCZĄCE SIĘ WYKŁAD 4. DRZEWA REGRESYJNE, INDUKCJA REGUŁ. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska

0 + 0 = 0, = 1, = 1, = 0.

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy i Struktury Danych

Języki formalne i automaty Ćwiczenia 9

EGZAMIN MATURALNY Z INFORMATYKI

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

Instrukcje dla zawodników

Transkrypt:

Algorytmy kodowania entropijnego 1. Kodowanie Shannona-Fano 2. Kodowanie Huffmana 3. Jednoznaczność kodów Huffmana. Kod o minimalnej wariancji 4. Dynamiczne kodowanie Huffmana

Poprzedni wykład - podsumowanie 1. Kompresja danych niezbędny element systemów multimedialnych 2. Algorytmy kompresji: stratne i bezstratne 3. Fazy budowy algorytmu: modelowania i kodowanie 4. Entropia miara średniej ilości informacji generowanej przez źródło. Shannon: średnia długość kodu w kompresji bezstratnej entropii 5. Kodowanie a. Minimalizacja średniej długości kodu b. Jednoznaczna dekodowalność 6. Kody prefiksowe wyróŝniona klasa kodów zapewniająca jednoznaczną dekodowalność i optymalność

Kodowanie entropijne Sformułowanie problemu: Źródło S generuje symbole (litery a i z alfabetu A Zadany jest model probabilistyczny określający prawdopodobieństwa P(a i i entropię H źródła Znaleźć kod prefiksowy minimalizujący redundancję R = l P ( a i i i Historycznie pierwszy taki algorytm Shannon (Bell Labs, Fano (MIT, 1949 H

Kodowanie Shannona - Fano 1. Tworzymy listę liter 2. Sortujemy ją wg. malejących częstości wystąpienia (prawdopodobieństw 3. Dzielimy listę na dwie podlisty, tak by sumy częstości na obu były jak najbliŝsze 4. Wszystkim literom na górnej liście przypisujemy 0, na dolnej 1 5. Stosujemy rekursywnie krok 3 i 4 dopóki kaŝdy z symboli stanie się liściem w drzewie Przykład: Alfabet {a, b, c, d, e} opisany częstościami: a b c d e 15 7 6 6 5

Kodowanie Shannona-Fano c.d. {a,b,c,d,c;39} {a,b;22} {c,d,e;17} 0 1 15 7 6 {d,e;11} 0 1 0 1 6 5 a b c 0 1 d e Litera Częst. P(a i H(a i c (a i l i *p(a i a b c 15 7 6 0.385 0.179 0.154 0.530 0.444 0.416 00 01 10 0.770 0.358 0.308 R=0.096 = 4.4%H d 6 0.154 0.416 110 0.462 e 5 0.128 0.380 111 0.384 39 1.000 2.186 2.282

Kody Shannona-Fano własności Łatwy do zaprogramowania, dość efektywny algorytm Z konstrukcji kod prefiksowy Kod typu od góry do dołu (od korzenia do liści. Czy jest to kod optymalny (czy dla danego modelu probabilistycznego minimalizuje średnią długość? Odpowiedź niekoniecznie!!!

Kodowanie Huffmana Przesłanki cechy kodu optymalnego 1. Symbolom występującym częściej odpowiadają w kodzie optymalnym krótsze słowa kodowe 2. Dwa najrzadziej występujące symbole mają w kodzie optymalnym równe długości Podstawa tworzenia kodu: do 1 i 2 dodajemy zasadę: słowa kodowe odpowiadające najmniej prawdopodobnym symbolem róŝnią się tylko jednym bitem a, b najmniej prawd. symbole, P(a P(b c(a=m*0, c(b=m*1

Kodowanie Huffmana algorytm Przepis na konstrukcję drzewa binarnego kodu: 1. Utwórz listę symboli; posortuj wg prawdopodobieństw 2. Utwórz wierzchołki zewn. (liście odpowiadające wyjściowym symbolom 3. Weź dwa węzły odpowiadające symbolom o najmniejszym prawdopodobieństwie. Przypisz im odpowiednio 0 i 1. Utwórz węzeł reprezentujący ich sumę (z prawdopodobieństwem równym sumie 4. Dodaj nowo utworzony węzeł do listy węzłów. Usuń z tej listy jego węzły macierzyste 5. Powtarzaj całą procedurę dopóki nie pozostanie tylko jeden węzeł (utoŝsamiony z korzeniem drzewa

Kodowanie Huffmana przykład 1 0 24 0 1 13 11 0 1 0 1 a,15 b,7 c,6 d,6 e,5 Litera Częst. P(a i H(a i c (a i l i *p(a i a b c 15 7 6 0.385 0.179 0.154 0.530 0.444 0.416 1 000 001 0.385 0.537 0.462 R=0.044 = 2.0 % H d 6 0.154 0.416 010 0.462 e 5 0.128 0.380 011 0.384 39 1.000 2.186 2.230

Kody Huffmana własności Łatwy do zaprogramowania Z konstrukcji kod prefiksowy Kod typu od dołu do góry (od liści do korzenia Jest to kod optymalny (dla danego modelu probabilistycznego Ograniczenia na średnią długość kodu: H(S l H(S + e e = p max gdy p max > 0.5 e = p max + 0.086 gdy p max 0.5

Jednoznaczność kodów Huffmana Dany jest model probabilistyczny P(a i. Czy określa on kod w jednoznaczny sposób? Odpowiedź niekoniecznie. Powód róŝne moŝliwości sortowania w trakcie tworzenia kodu RóŜne kody będą miały tą samą średnią długość; róŝnić się będą wariancją Najkorzystniej uŝywać kodu o minimalnej wariancji Przykład: alfabet {a, b, c, d, e} z modelem probabilistyczym: a b c d e 0.4 0.2 0.2 0.1 0.1

Jednoznaczność kodów Huffmana c.d. I sposób 1 0 0.6 0 1 0.4 0 1 0.2 0 1 a b c d e II sposób 0 0.6 1 0 0.4 1 0.2 0 1 0 1 a b c d e

Jednoznaczność kodów Huffmana c.d. Litera Praw. Kod 1 Kod 2 Dl. 1 Dl. 2 Kw.1 Kw.2 a 0.4 1 00 0.4 0.8 0.576 0.016 b 0.2 01 01 0.4 0.4 0.008 0.008 c 0.2 000 11 0.6 0.4 0.128 0.008 d 0.1 0010 010 0.4 0.3 0.324 0.064 e 0.1 0011 011 0.4 0.3 0.324 0.064 1.0 2.2 2.2 1.360 0.160 Znaczenie praktyczne im większa wariancja, tym trudniej zaprojektować bufor przy transmisji przez kanał telekomunikacyjny Zasada tworzenie kodu o minimalnej wariancji symbole złoŝone umieszczamy na liście sortowania maksymalnie wysoko

Rozszerzone kody Huffmana Gdy alfabet mały, prawdopodobieństwa wystąpienia liter silnie zróŝnicowane duŝa redundancja Litera P(a i H(a i k i l i l i P(a i a 0.9 0.1368 0 1 0.9 b 0.1 0.3322 1 1 0.1 SUMA 1.0 0.4690 1.0 R= l śr H = 1.0 0.469=0.531= 113% H MoŜliwe rozwiązanie kodowanie ciągów liter o ustalonej długości k (k = 2, 3,... Rozszerzony alfabet: litery to ciągi k-elementowe oryginalnego alfabetu Gdy m rozmiar wyjściowego alfabetu; to rozmiar rozszerzonego alfabetu = m k

Rozszerzone kody Huffmana c.d. Litery P(a i H(a i k i l i l i P(a i aa 0.81 0 1 0.81 ab 0.09 11 2 0.18 ba 0.09 100 3 0.27 bb 0.01 101 3 0.03 SUMA 1.00 0.938 1.29 R zn = (1.29 0.938/2 = 0.176 = 37.5% H Gdy kodujemy trójki R zn = 13.6% H Wynik ogólny średnia długość kodu ograniczona poprzez: H(S l H(S + 1/k Wada silny (wykładniczy wzrost rozmiaru alfabetu

Kodowanie dynamiczne Omawiane wyŝej modele wymagają znajomości modelu probabilistycznego na ogół nie jest on znany. MoŜliwe wyjście procedura dwuprzebiegowa. Nawet gdy model znany, to jego przekazanie (zwłaszcza w przypadku modelu wyŝszego rzędu stanowi dodatkowe obciąŝenie. Wyjście pozbawione powyŝszych wad kodowanie dynamiczne (adaptacyjne.

Kodowanie dynamiczne zasada Ogólny schemat kodowania dynamicznego: KODER Inicjalizuj_model(; while ((a=getchar(input!= eof { koduj(a,output; update_model(a; } DEKODER Inicjalizuj_model(; while ((a=dekoduj(input!= eof { putc(a,output; update_model(a; } Koder i dekoder uŝywają tych samych procedur inicjalizuj_model i update_model to powoduje, Ŝe model ewoluuje tak samo dla nadawcy (kodera i odbiorcy (dekodera.

Dynamiczne kodowanie Huffmana Model opisany przez drzewo binarne. Liście (wierzchołki zewnętrzne kwadraty, wierzchołki wewnętrzne kółka. Dla alfabetu o n literach jest 2*n 1 wierzchołków Dodatkowe elementy opisu Waga wierzchołka (dla zewnętrznych liczba wystąpień; dla wewnętrznych suma wag jego potomstwa Numer wierzchołka jednoznacznie go identyfikujący Wierzchołki o mniejszym numerze mają niŝsze wagi. Dla kaŝdego 1 j n wierzchołki y 2j-1 i y 2j są potomkami tego samego rodzica, którego numer jest większy y 2j-1 i y 2j własność rodzeństwa. Dodatkowy wierzchołek NYT o wadze 0 odpowiadający symbolom jeszcze nie dołączonym do drzewa Zbiór wierzchołków o takiej samej wadze nazywamy blokiem

Inicjalizacja Przed rozpoczęciem kaŝdej literze alfabetu przypisujemy wejściowy kod (taki sam dla kodera i dekodera określony następująco: niech m rozmiar alfabetu. Wybieramy e i r takie, Ŝe m = 2 e + r, 0 r < 2 e Dla 1 k 2 r kodem a k jest (e+1 bitowa binarna reprezentacja liczby (k-1, dla pozostałych k kodem a k jest e bitowa binarna reprezentacja liczby (k-r-1 Przykład: litery angielskie, m=26, e=4, r=10. Kod a (k=1 00000, kod b (k=2 00001, kod a 22 1011 Początkowe drzewo: jeden wierzchołek NYT o wadze 0

Procedura uaktualniająca

Kodowanie dynamiczne - przykład Zakodować ciąg [aardv] zakładając, Ŝe alfabet zawiera 26 małych liter angielskich Inicjalizacja: 1. m=26 e=4, r=10 2. Kody startowe liter: c(a = 00000, c(d = 00011, c(r = 10001, c(v = 1011 Kodowanie: 1. Zakodowany ciąg ma postać: 00000 1 0 10001 00 00011 000 1011 2. Kolejne drzewa reprezentacje modelu są pokazane na następnej stronie.

Procedura uaktualniająca - działanie

Procedura kodująca

Procedura dekodująca

Kody Huffmana - zastosowania Zwykle w połączeniu z innymi metodami (jako część procedury; np. LZ, JPEG Kompresja tekstu typowy stopień kompresji 1 : 1.65 Słabiej nadaje się do bezstratnej kompresji obrazu i dźwięku osiągany stopień kompresji 1 : 1.7 (gdy kodujemy róŝnice między pikselami lub kolejnymi próbkami dźwięku