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

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

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

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

Nierówność Krafta-McMillana, Kodowanie Huffmana

Definicja. Jeśli. wtedy

Kompresja bezstratna. Entropia. Kod Huffmana

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

Temat: Algorytm kompresji plików metodą Huffmana

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

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

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Kodowanie informacji

Algorytmy kodowania entropijnego

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

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

0-0000, , , itd

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Sortowanie. Bartman Jacek Algorytmy i struktury

Kody Tunstalla. Kodowanie arytmetyczne

Teoria Informacji - wykład. Kodowanie wiadomości

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

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

Teoria informacji i kodowania Ćwiczenia

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

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

Algorytmy i Struktury Danych

ZADANIE 1. Rozwiązanie:

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

Kodowanie Shannona-Fano

Wstęp do Informatyki

Kody Huffmana. Konrad Wypyski. 11 lutego 2006 roku

Sortowanie bąbelkowe

Wysokość drzewa Głębokość węzła

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

Algorytmy i struktury danych. wykład 8

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Matematyka dyskretna - 7.Drzewa

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Cyfrowy zapis informacji

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

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

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

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

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

Tadeusz Pankowski

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

Elementy teorii informacji i kodowania

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

dr inż. Jacek Naruniec

Kodowanie i entropia

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

ALGORYTMY I STRUKTURY DANYCH

PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych

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

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Python: JPEG. Zadanie. 1. Wczytanie obrazka

liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:

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

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

EGZAMIN MATURALNY Z INFORMATYKI

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Kodowanie informacji

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

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych

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

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 12,

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

Joint Photographic Experts Group

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

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

Ćwiczenie nr 4: Kodowanie arytmetyczne, range coder

Algorytmy sortujące i wyszukujące

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Algorytmy i struktury danych

7. Teoria drzew - spinanie i przeszukiwanie

Definicja pliku kratowego

Kodowanie predykcyjne

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Indukowane Reguły Decyzyjne I. Wykład 3

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

ALGORYTMY I STRUKTURY DANYCH

Lista 0. Kamil Matuszewski 1 marca 2016

Szeregowanie zadań. Wykład nr 3. dr Hanna Furmańczyk

Wstęp do Programowania potok funkcyjny

Podstawy Automatyki. Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych. dr inż. Jakub Możaryn. Instytut Automatyki i Robotyki

Podstawowe pojęcia. Teoria informacji

Kwantyzacja wektorowa. Kodowanie różnicowe.

Algorytmy stochastyczne, wykład 05 Systemy Liendenmayera, modelowanie roślin

Algorytmy i struktury danych

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

ALGORYTMY I STRUKTURY DANYCH

Podstawy kompresji danych

Transkrypt:

KODY SYMBOLI Materiały KODA, A.Przelaskowski Koncepcja drzewa binarnego Metoda S-F Kod Huffmana Adaptacyjne drzewo Huffmana Problemy implementacji Koncepcja przedziałów nieskończonego alfabetu Proste kody przedrostkowe (skrajnie równoważone) Kod Golomba w różnych wersjach Inne kody przedziałowe Podsumowanie

Kod Shannona-Fano Na wejściu rozkład: P S ={p 1,,p n }, czyli kod entropijny Naturalny pomysł budowy drzewa binarnego od góry Dzielimy na podgrupy o zbliżonym prawdopodobieństwie

Algorytm S-F 1. Określ wagi symboli 2. Uszereguj symbole w nierosnącym porządku wag (grupa początkowa) 3. Podziel grupę symboli na dwie części o możliwie równej sumie wag symboli, z zachowaniem porządku listy (tj. jedna podgrupa obejmuje częściej występujące symbole, druga mniej prawdopodobne). 4. Przyporządkuj symbolom z jednej podgrupy binarne 0, a symbolom z drugiej 1. 5. Rekursywnie powtórz kroki 3 i 4 dla utworzonych przez ostatni podział podgrup o przynajmniej dwóch symbolach 6. Przypisz kolejnym symbolom z listy słowa kodowe, składające się z bitów kolejno przyporządkowanych grupom, do których trafiał dany symbol w kolejnych podziałach

Przykład S-F Procedura podziałów: Efekt: A 01 B 00 C 110 D 10 E 111

Efektywność S-F w przykładzie H(S DMS ) = 2, 176 wobec L S-F = Σ i P(a i ) ς i = 2, 258 S-F stosowana w WinZip i produkcie firmy Microsoft: Cabarc

Optymalny Kod Symboli Metoda: budowa drzewa binarnego od dołu 0 1 a b c d e Optymalne drzewo binarne kodu symboli liść symbolu o najmniejszej wadze ma najdłuższe słowo, czyli leży najgłębiej w drzewie liść symbolu o drugiej w kolejności najmniejszej wadze ma także najdłuższe słowo (lokalnie pełne drzewo binarne)

Algorytm Huffmana (optymalny) 1. Określ wagi symboli; symbole wraz z wagami przypisz liściom wolnym węzłom 2. Sortuj listę wierzchołków wolnych w nierosnącym porządku wag 3. Połącz dwa wolne wierzchołki z najmniejszymi wagami w nowe, większe poddrzewo Przypisz gałęziom prowadzącym od rodzica do węzłów-dzieci różne etykiety: 0 i 1 (np. lewa gałąź 0, prawa 1) 4. Usuń z listy wierzchołków wolnych dwa połączone węzły i wpisz na tę listę nowy wierzchołek rodzica (o wadze równej sumie wag dzieci) 5. Powtarzaj kroki 3-4 aż do momentu, gdy na liście wierzchołków wolnych pozostanie tylko korzeń drzewa 6. Odczytaj ze struktury drzewa słowa kodowe kolejnych liści (symboli) - od korzenia do danego liścia

Przykład Huffmana Procedura łączenia A 100 B 0 C 110 D 101 E 111 drzewo S-F (przypomnienie) A 01 B 00 C 110 D 10 E 111

Efektywność kodu Huffmana efektywność S-F (przypomnienie) H(S DMS ) = 2, 176 wobec L S-F = Σ i P(a i ) ς i = 2, 258 i L huff = 2, 226 (-1,5%)

Wersje kodu Huffmana Zastosowań jest wiele (JPEG, Deflate, uproszczenia niemal wszędzie) Ograniczenia (1 bit/symbol - wpływ długości ciągu kodowanego słowem) Usprawnienia: Kod co celów transmisji Wykorzystanie heurystyk (charakterystyk a priori) Optymalizacja alfabetu (ograniczone modelowanie): łączenie z RLE w JPEG Kod adaptacyjny

Statyczne kodowanie Huffmana (JPEG) klasyfikacja współczynników DC k Przedrostek: słowo kategorii, przyrostek: kod dwójkowy k najmłodszych bitów wartości C (lub C-1 dla ujemnych) 1 010 1; -1 010 0; 40 1110 101000; -40 1110 010111

RLE plus Huffman klasyfikacja współczynników AC..., niezerowy, 0, 3, 0, 0, 0, 1, 7,... 1/2, 3/1, 0/3 111001 00, 111010 1, 100 000

Adaptacyjny kod Huffmana Zmienna statystyka (w modelu przyczynowym na podstawie już zakodowanych danych) Aktualizacja statystyki po każdym zakodowanym symbolu Modyfikacja (korekcja) drzewa zamiast jego budowy redukcja złożoności obliczeniowej Problemy Przepełnienie drzewa Wprowadzenie nowych symbolu alfabetu (rozbudowa alfabetu) EOF Zagospodarowanie istniejących stopni swobody

Adaptacyjny algorytm Huffmana 1. Inicjalizacja: początkowa postać drzewa Huffmana: a) wierzchołki są uszeregowane w porządku niemalejących wag na kolejnych poziomach (od dołu do korzenia, od lewej do prawej); b) każdemu wierzchołkowi jest przypisany numer porządkowy 2. Modyfikacja drzewa po kodowaniu symbolu s w strumieniu wejściowym: a) ustal numer v liścia, któremu w drzewie T przypisano symbol s: v = T(s) oraz jego wagę w v ; jeśli T(s) = dodaj nowy liść z symbolem s do drzewa: na miejscu liścia o najmniejszej wadze (z numerem 1 na uporządkowanej liście) ustal węzeł wewnętrzny i dołącz do niego dwa węzły potomne: nowy liść z s i wagą 0 oraz liść o najmniejszej dotąd wadze; zmodyfikuj listę wierzchołków ustalając numer nowego liścia jako v = 1, numer jego brata jako 2, a numer rodzica jako 3 zwiększając o 2 numery pozostałych węzłów; b) inkrementuj wagę wierzchołka v: w v w v + 1; c) zamiana wierzchołków: jeśli na liście wierzchołków za węzłem v występują węzły z wagą w v 1, to zamień miejscami v z ostatnim węzłem o tej wadze (wraz z poddrzewami); d) kontynuacja modyfikacji w górę drzewa aż do poziomu korzenia: v rodzic(v) i skok do p. 2b)

Przykład adaptacyjnej modyfikacji drzewa Huffmana porządkowanie C

Adaptacyjna modyfikacja(2) C C CCC

Dodanie nowego symbolu (inicjalizacja) N Inicjalizacja (pełna adaptacyjność) kodowanie A: A (NOWY, A) aktualizacja drzewa

Przepełnienie drzewa - reakcje Ciąg Fibonacciego: F(0)=0,F(1)=1,(F(i)=F(i-1)+F(i-2)) dla i=2,3,4 czyli Fib=(0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597,.) - zamrożenie - przeskalowanie - ograniczenie historii Waga korzenia F(i+2) może dać maksymalnie słowo i bitowe; przy wadze F(19) = 4181 może wystąpić 17 bitowe słowo

Dobór postaci słów kodowych w drzewach Huffmana równowartość w efektywności Zasada: łączymy węzeł z płytszym poddrzewem Ta sama reguła może obowiązywać w drzewie adaptacyjnym (algorytm Vittera)

Efektywność kodu Huffmana +9% +3,5% +13,5% +7% efektywność kodowania czas kodowania Wyraźna poprawa efektywności metody adaptacyjnej Złożoność obliczeniowa jest większa o około 50-100%

KODY PRZEDZIAŁOWE

Kody przedziałowe elastyczne kody symboli z rozszerzeniem pojęcia alfabetu Kod dwójkowy prawie stałej długości Kod unarny Kod Golomba (przedziałowy ze stała długością przedziału) Efektywność kodu Golomba Kod Rice a Przykład kodowania z JPEG-LS Elementarny kod Golomba Wykładniczy kod przedziałowy (exp-golomb) Testy efektywności

Kod dwójkowy prawie stałej długości Bˆn (dla n-elementowego alfabetu A S = {a 0,..., a n 1 }): dla a i, 0 i r -1 mamy dla a i, r i n 1 mamy gdzie Bˆ n ( a i Bˆ ) r n B ( a i ) B log i ( a ( ) 2 n ) ( i r log 2 n i r ) 2, log 2 n 2 2 log n n Przykład dla A S = {0,..., n-1}) : ˆ ( ) ( ) 101, 2 6 6 a3 B3 a5 r B ˆ ( ) ( ) 011, 2 12 12 a3 B3 a3 r B log2 6 2 log2 12 4

Efektywność kodu dwójkowego Kod dwójkowy prawie stałej długości jest optymalnym kodem symboli dla zrównoważonego rozkładu prawdopodobieństw symboli danego źródła (tj. suma dwóch najmniejszych prawdopodobieństw jest większa od prawdopodobieństwa największego oraz alfabet jest uporządkowany zgodnie z nierosnącym prawdopodobieństwem kolejnych symboli) drzewo optymalne

Kod unarny Prosta postać kodu o nieograniczonym alfabecie: U( a ) 0 01, i 0,1, i lub U ) 1 10 i razy ( a i i razy Długość słowa: indeks symbolu w alfabecie A S ={a 0,a 1,,a i, } L i =i+1, czyli jeśli mamy p i =1/2 i+1 to I(a i )=log 2 1/p i =i+1 Wobec tego: kod jest optymalny dla rozkładu prawdopodobieństw p i =1/2 1/2 i Ogólniej rozkład geometryczny p i = (1-ρ) ρ i, gdzie ρ=1/2

Optymalne drzewo unarne Jeśli ρ<=1/2 kod unarny jest kodem optymalnym, bo log 2 1/ρ >1 drzewo unarne

Jaki kod jest optymalny dla ρ>1/2 p i wartości ρ i

Kod Golomba Kod o nieograniczonym alfabecie Robi się użytek z kodu dwójkowego i unarnego Alfabet nieskończony A S ={a 0,a 1,,a i }, uporządkowany nierosnąco według prawdopodobieństw p i p i+1 Podział alfabetu na podprzedziały stałej długości m>0 (rząd m 1 kodu) A S ={a 0,,a m-1,a m,, a 2m-1,a 2m, } Kod G m (i)=u(nr przedziału k: a ) B m (odległość l=i-k m od początku przedziału), czyli przedział 0 przedział 1 G m i k ( i) U( ˆ m ^ i / m ) Bm ( i mod )

Słowa kodu Golomba

Cechy kodu Golomba Minimalna długość słowa: Drzewo kodu Golomba

Efektywność kodu Golomba Interpretacja rzędu kodu: ρ m 1/2 (wolniej narasta długość słów) Dobór m Przykładowo dla ρ=0,9 wartość optymalnego m wynosi 7 Możliwy jest adaptacyjny dobór rzędu kodu, np. w JPEG-LS

Testy z kodem Golomba Aktualizacja rzędu CR Czas (sek.) 10 1,880 18,857 100 1,880 3,756 1000 1,879 2,334 10000 1,866 2,223 100000 1,763 2,243

Kod Rice a Wygodna implementacyjnie wersja kodu Golomba z ograniczeniem na m=2 k, czyli Rk G m 2 k Tworzenie słowa: odcinamy k bitów i dodajemy unarnie zapisaną liczbę utworzoną z bitów pozostałych przykład: R 3 (12)=R 3 (1100 2 )=01 100 R 3 (19)= R 3 (10011 2 )= 001 011

0 1 2 3 4 5 6 7 8 9 Słowa kodu Rice a

Adaptacyjny kod Rice a z JPEG-LS Dobór rzędu kodu przy określonym kontekście wystąpienia danej (symbolu) wartość kodowanej danej to E

Tablica kodowania z JPEG-LS Nowy alfabet poprzez mapowanie wartości Kod Rice a z ograniczeniem

Kod exp-golomb i Słowo kodowe 0 1 1 010 2 011 3 00100 4 00101 5 00110 6 00111 7 0001000 8 0001001 9 0001010. ξ i = G exp (i)= 0..0 1 (i+1-2 m ) 2,m m gdzie m log 2 ( i 1) Zastosowanie np. w CAVLC (h.264)

Elementarny kod Golomba Robi się użytek z kodu dwójkowego i unarnego Rozszerza się alfabet źródła binarnego (modelowanie) do postaci A S = {1, 01,..., 0 i 1,..., 0 m 1 1, 0 m }, gdzie m jest parametrem kodu EG m (rozmiar alfabetu wynosi m+1) Słowa kodowa dla rozszerzonego alfabetu A EG m { 1Bˆ (0),1B ˆ (1),,1B ˆ ( i),,1b ˆ ( m 1),0} Przykład EG 3 (00000001) = EG 3 (000)EG 3 (000)EG 3 (01) = ^ m =0 0 1B 3 (1) = 00110 m Nietypowa sytuacja: kod symboli czy strumieniowy (RLE)? m m

Zestaw słów EGm

Zróżnicowanie kodów binarnych