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

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

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

Definicja. Jeśli. wtedy

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

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

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

Kompresja bezstratna. Entropia. Kod Huffmana

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Nierówność Krafta-McMillana, Kodowanie Huffmana

Teoria informacji i kodowania Ćwiczenia

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

Algorytmy kodowania entropijnego

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

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

Temat: Algorytm kompresji plików metodą Huffmana

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

Elementy teorii informacji i kodowania

Teoria Informacji - wykład. Kodowanie wiadomości

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

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

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

Kody Tunstalla. Kodowanie arytmetyczne

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

0-0000, , , itd

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

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

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

Kodowanie informacji

Kodowanie i entropia

Kodowanie predykcyjne

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

Kodowanie Shannona-Fano

Przetwarzanie i transmisja danych multimedialnych. Wykład 9 Kodowanie podpasmowe. Przemysław Sękalski.

Kodowanie predykcyjne

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

1.1. Pozycyjne systemy liczbowe

Podstawowe pojęcia. Teoria informacji

ZADANIE 1. Rozwiązanie:

Fundamentals of Data Compression

Kwantyzacja wektorowa. Kodowanie różnicowe.

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

pobieramy pierwszą literę komunikatu i wypełniamy nią (wszystkie pozycje tą samą literą) bufor słownikowy.

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

Kodowanie informacji. Kody liczbowe

Przetwarzanie i transmisja danych multimedialnych. Wykład 8 Transformaty i kodowanie cz. 2. Przemysław Sękalski.

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Algorytmy i struktury danych

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

Python: JPEG. Zadanie. 1. Wczytanie obrazka

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

Techniki multimedialne

Kody Huffmana. Konrad Wypyski. 11 lutego 2006 roku

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

Przetwarzanie i transmisja danych multimedialnych. Wykład 7 Transformaty i kodowanie. Przemysław Sękalski.

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

Kompresja danych DKDA (7)

Algorytmy i struktury danych. Wykład 4

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

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

Sortowanie. Bartman Jacek Algorytmy i struktury

dr inż. Jacek Naruniec

Jednostki informacji. Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles).

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

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

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

Wybrane metody kompresji obrazów

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

Przetwarzanie i transmisja danych multimedialnych

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

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

Pracownia Komputerowa wykład V

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

Algorytmy i struktury danych. wykład 8

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

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

Teoria Informacji i Metody Kompresji Danych

Kodowanie informacji

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

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

Algorytmy i struktury danych

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

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

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

EGZAMIN MATURALNY Z INFORMATYKI

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

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Nr 1 Seria: Teleinformatyka 2013 KOMPRESJA BEZSTRATNA PLIKÓW ALGORYTM HUFFMANA

KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

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

Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:

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

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Stan wysoki (H) i stan niski (L)

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Joint Photographic Experts Group

Wstęp do Informatyki

Transkrypt:

Przetwarzanie i transmisja danych multimedialnych Wykład 3 Kodowanie Shannona Fano i Huffmana Przemysław Sękalski sekalski@dmcs.pl Politechnika Łódzka Katedra Mikroelektroniki i Technik Informatycznych DMCS Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 1

Zawartość wykładu 1. Wprowadzenie do kompresji i transmisji danych 2. Podstawy kompresji 3. Kodowanie Shannona Fano i Huffmana 4. Kodowanie arytmetyczne 5. Algorytmy słownikowe 6. Algorytm predykcji przez częściowe dopasowanie (PPM) 7. Transformata Burrowsa Wheelera (BWT) 8. Wybrane algorytmy specjalizowane 9. Dynamiczny koder Markowa (DMC) i algorytm kontekstowych drzew waŝonych (CTW) 10. Bezstratna kompresja obrazów 11. Stratna kompresja obrazów 12. Stratna kompresja dźwięku 13. Kompresja wideo Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 2

Plan wykładu Wprowadzenie Algorytmy statyczne i semistatyczne: Koder Shannona-Fano Koder Huffmana Algorytmy adaptacyjne Adaptacyjny koder Huffmana Kodowanie Golomba Kodowanie Golomba-Rice a Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 3

Podział algorytmów bezstratnych algorytmy statyczne i semi-statyczne algorytmy dwuprzebiegowe przebieg 1: analiza stałego ciągu, budowa modelu przebieg 2: kodowanie problemy: dwuprzebiegowy wymaga transmisji i modelu i zakodowanego ciągu algorytm adaptacyjny algorytm jednoprzebiegowy, on-line aktualizacja modelu wykonywana kaŝdorazowo po zakodowaniu danego symbolu problemy złoŝoność aktualizacji modelu (zasoby sprzętowe) Zero Frequency Problem Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 4

Podstawowe twierdzenie Shannona o kodowaniu bezszumowym Dla bezpamięciowegoźródła S o entropii H(S) moŝliwe jest przypisanie ciągom k symboli źródła, słów kodu przedrostkowego tak, Ŝe spełnione jest L avg H ( S) H ( S) + k W najlepszym przypadku moŝna uzyskaćśrednią długość kodu (w przeliczeniu na pojedynczy symbol) równą entropii źródła optymalna długość słowa kodowego dla danego symbolu o prawdopodobieństwie p i równa jest autoinformacji dla tego symbolu ( log (p i )) 1 k Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 5

Kod przedrostkowy Jak zbudować kod przedrostkowy: Znając rozkład prawdopodobieństwa P={p 1, p 2,, p i } Znając optymalną długość słów kodowych. MoŜna obliczyć optymalną długość słowa kodowego poprzez policzenie autoinformacji -> I i = -log 2 p i Wiedząc, Ŝe aby kod był jednoznacznie dekodowalny musi spełniać nierówność Krafta-MacMillana n i= 1 li 2 1 Jak wskazać słowa kodowe i przypisać je symbolom?? Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 6

Algorytm kodowania Shannona-Fano Algorytm Shannona-Fano generuje kod przedrostkowy dla Ŝądanego rozkładu prawdopodobieństwa symboli alfabetu Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 7

Algorytm kodowania Shannona-Fano 1. Określenie prawdopodobieństwa wystąpienia wszystkich symboli (waga symboli) 2. Sortowanie listy symboli według prawdopodobieństwa 3. Ustalenie posortowanej listy jako zbiór główny 4. Podział grupy symboli na dwie części o moŝliwie równej sumie wadze symboli 5. Przyporządkowanie symbolom z jednej grupy binarne 0, zaś symbolom z drugiej grupy binarne 1 6. Powtórz dla kaŝdej podgrupy od punktu 4, aŝ do uzyskania podgrupy złoŝonej z jednego symbolu 7. Przypisz kolejnym symbolom z listy słowa kodowe, składające się z bitów kolejno przyporządkowanym grupom, do których trafiał symbol w kolejnych podziałach. Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 8

Algorytm kodowania Shannona-Fano Przykład Mamy kod: abcafdadcecedabadbbeffbbfaeaeeebddddebdd 1234567890123456789012345678901234567890 1. Określenie prawdopodobieństwa wystąpienia wszystkich symboli symbol a b c d e f suma Ilość wystąpień 7 8 3 10 8 4 40 znaków Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 9

Algorytm kodowania Shannona-Fano 2. Sortowanie listy symboli według prawdopodobieństwa symbol d b e a f c Ilość wystąpień 10 8 8 7 4 3 W przypadku dwóch takich samych wag kolejność jest nieistotna Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 10

Algorytm kodowania Shannona-Fano d 10 b 8 e 8 a 7 f 4 c 3 Zbiór główny 18 0 22 1 Pierwszy podział 10 0 8 1 8 0 14 1 Drugi podział 7 0 7 1 Trzeci podział 4 0 3 1 Czwarty podział Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 11

Algorytm kodowania Shannona-Fano 7. Przypisanie kolejnym symbolom z listy słów kodowych d b e a f c Symbol kod 10 18 0 8 8 7 22 1 4 3 a 110 b 01 10 0 8 1 8 0 7 0 14 1 7 1 c 1111 d 00 e 10 4 0 3 1 f 1110 Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 12

Algorytm kodowania Shannona-Fano Binarne drzewo kodowe 0 1 korzeń 0 1 0 1 d e b 0 1 a 0 1 Uwaga: MoŜe istnieć wiele drzew kodowych i wiele podziałów liście f c Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 13

Algorytm kodowania Shannona-Fano Przykład innego drzewa kodu. 0 1 0 1 0 1 d e 0 1 0 1 b a f c Krótsze słowo kodowe, ale czy lepszy kod??? O tym za chwilę, najpierw odczytajmy to co zakodowane. Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 14

Algorytm dekodowania Shannona-Fano 1. Pobierz ze zbioru danych zakodowanych wartości wag poszczególnych symboli 2. Zbuduj drzewo binarne (toŝsame z tym uŝytym przy kodowaniu) 3. Odczytaj symbole korzystając z algorytmu: i. Ustaw korzeń drzewa jako aktualny węzeł ii. Pobierz bit z wejścia. Jeśli zero idź w lewo, jeśli jeden idź w prawo do syna aktualnego węzła iii. Jeśli aktualny węzeł to liść odczytaj przypisany mu symbol, w przeciwnym razie kontynuuj (ii) iv. Powtarzaj (i) aŝ do wyczerpania symboli wejściowych d 0 1 0 1 0 1 e 0 1 b a 0 1 f c Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 15

Określenie efektywności Ilość bitów Długość słowa kodowego (2 drzewo) Ilość bitów Długość słowa kodowego (1 drzewo) N i *I(a i ) Inform. własna I(a i )=-log 2 p i [bit/symbol] Prawdopodob. p i Ilość wystąpień N i Symbol a i 21 3 21 3 17,60 2,51 0,175 7 a b 8 0,2 2,32 18,58 2 16 2 16 c 3 0,075 3,74 11,21 4 12 3 9 d 10 0,25 2,00 20,00 2 20 2 20 e 8 0,2 2,32 18,58 2 16 3 24 f 4 0,1 3,32 13,29 4 16 3 12 suma 40 99,25 101 102 Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 16

Zalety i wady algorytmu Shannona-Fano Uzyskany kod jest zawsze nadmiarowy (101 bitów niezbędnych do zakodowania 100 bitów informacji 99,25). Przyczyną jest fakt, Ŝe nie da się stworzyć słowa o niepełnej liczbie bitów (wada wszystkich kodów) Wagi podgrup nie są równe. Nie jest rozpatrywane z ilu elementów składa się podgrupa. MoŜe wystąpić kilka rodzajów podziału. Wymagane przesłanie do dekodera większej liczby informacji. Prostota kodowania i dekodowania Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 17

Zastosowanie Zastosowanie np: WinZIP CABarc (pliki.cab) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 18

Algorytm Huffmana Algorytm Huffmana generuje kod przedrostkowy dla Ŝądanego rozkładu prawdopodobieństwa symboli alfabetu podobnie jak algorytm Shannona-Fano. Kodowanie Huffmana pozwala otrzymać optymalne drzewo binarne kodu symboli. NajdłuŜsze słowo naleŝy do symbolu najrzadziej występującego. Drzewo jest binarne i lokalnie pełne (na najgłębszym poziomie znajduje się 2 liście o najmniejszej wadze) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 19

Kodowanie Huffmana 1. Określ wagi wszystkich symboli alfabetu. Symbole wraz z wagami przypisz liściom i oznacz je jako wolne wierzchołki. Zapisz listę wierzchołków. 2. Sortuj listę wolnych wierzchołków w porządku nierosnącym 3. Weź dwa pierwsze wolne wierzchołki (najmniejsze wagi) i połącz je tworząc większe poddrzewo. Wagę nowego wierzchołka ustal jako sumę wag dzieci. 4. Usuń z listy wierzchołków dwa juŝ uŝyte i wstaw w ich miejsce nowy wierzchołek rodzica. 5. Przypisz gałęziom słowa kodowe 0 i 1 (np. lewo, prawo) 6. Wróć do punktu 2, aŝ pozostanie jeden wierzchołek korzeń 7. Odczytaj ze struktury drzewa słowa kodowe kolejnych liści Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 20

Kodowanie Huffmana 1. Określ wagi wszystkich symboli alfabetu. Symbole wraz z wagami przypisz liściom i oznacz je jako wolne wierzchołki. Zapisz listę wierzchołków. a(7) b(8) c(3) d(10) e(8) f(4) 2. Sortuj listę wolnych wierzchołków w porządku nierosnącym c(3) f(4) a(7) b(8) e(8) d(10) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 21

3. Weź dwa pierwsze wolne wierzchołki (najmniejsze wagi) i połącz je tworząc większe poddrzewo. Wagę nowego wierzchołka ustal jako sumę wag dzieci. 4. Usuń z listy wierzchołków dwa juŝ uŝyte i wstaw w ich miejsce nowy wierzchołek rodzica. 5. Przypisz gałęziom słowa kodowe 0 i 1 7 0 1 a(7) b(8) e(8) d(10) c(3) f(4) a(7) b(8) e(8) d(10) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 22

2. Sortuj listę wolnych wierzchołków w porządku nierosnącym 7 a(7) b(8) e(8) d(10) c(3) f(4) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 23

Kodowanie Huffmana 3. Weź dwa pierwsze wolne wierzchołki (najmniejsze wagi) i połącz je tworząc większe poddrzewo. Wagę nowego wierzchołka ustal jako sumę wag dzieci. 14 7 a(7) b(8) e(8) d(10) c(3) f(4) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 24

Kodowanie Huffmana b(8) e(8) d(10) 14 7 a(7) c(3) f(4) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 25

Kodowanie Huffmana 16 b(8) e(8) d(10) 14 7 a(7) c(3) f(4) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 26

Kodowanie Huffmana d(10) 14 16 7 a(7) b(8) e(8) c(3) f(4) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 27

Kodowanie Huffmana 24 d(10) 14 16 7 a(7) b(8) e(8) c(3) f(4) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 28

Kodowanie Huffmana 16 24 b(8) e(8) d(10) 14 7 a(7) c(3) f(4) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 29

Kodowanie Huffmana Drzewo Huffmana 40 0 1 16 24 0 1 0 1 b(8) e(8) d(10) 14 0 1 7 0 1 a(7) c(3) f(4) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 30

Dekodowanie algorytmu Huffmana Proces dekodowania jest analogiczny jak przy dekodowaniu algorytmu Shannona-Fano, z tym Ŝe drzewo budowane jest według zasady Huffmana Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 31

Porównanie algorytmów Shannona-Fano budowanie drzewa kodowego od góry do dołu, prostota Huffmana budowanie drzewa kodowego od dołu do góry prostota efektywność zawsze większa niŝ S-F Wada: Oba algorytmy moŝna zastąpić algorytmem kodowania serii RLE w przypadku, gdy symbole powtarzają się po sobie (dotyczy wszelkich algorytmów statycznych, które są dedykowane do modeli źródeł bez pamięci) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 32

Koder adaptacyjny Podstawową zaletą kodera statycznego Huffmana jest konstruowanie zmiennej długości słów kodowych, efektywnie odzwierciedlających zróŝnicowane wagi symboli. Im większe zróŝnicowanie tym lepsza efektywność kodowania W przypadku, gdy wagi nie odbiegają od siebie, to słowa kodowe będą tej samej lub podobnej długości (róŝnica o 1 bit) np. 8 symboli reprezentowanych jako kod dwójkowy (3bitowy) o podobnych wagach będzie po zakodowaniu posiadały słowa równieŝ 3 bitowe. Dodatkowo naleŝy przesłać informację o wagach, aby zbudować drzewo do dekodowania. Korzystnie jest budować estymaty lokalnej statystyki danych i wykorzystywać tą informację do zmiany struktury drzewa -> adaptować drzewo Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 33

Adaptacyjna modyfikacja drzewa Huffmana 1. Przyjąć drzewo a priori, przy czym: i. Wierzchołki są uszeregowane w porządku niemalejących wag na kolejnych poziomach, licząc od dołu drzewa do korzenia, zaś na kaŝdym poziomie od lewej do prawej ii. KaŜdemu wierzchołkowi przypisywany jest numer porządkowy v wskazujący pozycję na uszeregowanej liście 2. Modyfikacja drzewa po wystąpieniu symbolu s: i. Ustal numer v liścia oraz jego wagę w v. Jeśli nie ma dodaj nowy liść dodając go jako brata do tego o najmniejszej wadze. Przenumeruj wierzchołki ii. zwiększ wagę wierzchołka v o 1 iii. Jeśli na nowa waga wierzchołka jest większa od istniejących na liście przenieś wierzchołek wraz z podrzewem iv. Podstaw za wierzchołek v wierzchołek rodzica i skocz do 2ii Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 34

Adaptacyjna modyfikacja drzewa Huffmana 40 11 16 24 9 10 b(8) e(8) d(10) 14 5 6 7 8 7 a(7) 3 4 c(3) f(4) 1 2 Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 35

Adaptacyjna modyfikacja drzewa Huffmana Przychodzi symbol: C i jest kodowany jako 1100 40 11 16 24 9 10 b(8) e(8) d(10) 14 5 6 7 8 7 a(7) 3 4 c(3) f(4) 1 2 Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 36

Adaptacyjna modyfikacja drzewa Huffmana Przychodzi symbol: C i jest kodowany jako 1110 41 11 16 25 9 10 b(8) e(8) d(10) 15 5 6 7 8 a(7) 3 8 4 c(4) f(4) 1 2 Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 37

Adaptacyjna modyfikacja drzewa Huffmana Przychodzi symbol: C i jest kodowany jako 011 42 11 17 25 9 10 e(8) 9 d(10) 15 5 6 7 8 f(4) c(5) a(7) b(8) 1 2 3 4 Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 38

Adaptacyjna modyfikacja drzewa Huffmana Przychodzi symbol: C i jest kodowany jako 011 43 11 18 25 9 10 e(8) 10 d(10) 15 5 6 7 8 f(4) c(6) a(7) b(8) 1 2 3 4 Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 39

Adaptacyjna modyfikacja drzewa Huffmana Przychodzi symbol: C i jest kodowany jako 101 44 11 18 26 9 10 e(8) d(10) 11 15 5 6 7 8 f(4) c(7) a(7) b(8) 1 2 3 4 Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 40

Przedstawiony algorytm został wynaleziony niezaleŝnie przez Fallera i Gallagera... następnie udoskonalony przez Cormacka i Horspoola oraz niezaleŝnie przez Knutha... następnie udoskonalony przez Vittera MoŜna załoŝyć, Ŝe na początku nie ma Ŝadnego drzewa, a kolejne symbole dopiero zaczynają je tworzyć. Spotykane jest załoŝenie, Ŝe na początku są dwa symbole ( nowy oraz EndOfFile) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 41

Kody Golomba Kody Golomba to parametryczna rodzina kodów przeznaczona do kodowania nieujemnych liczb całkowitych, nieskończona (parametrem kodu jest całkowite m, m > 0) zawiera kody optymalne dla wykładniczego rozkładu prawdopodobieństwa symboli słowa kodowe łatwe w generacji i dekodowaniu Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 42

Kod Golomba Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 43

Kod Golomba Tworzenie słowa kodowego NaleŜy wybrać najpierw parametr m, np.: 4 kodujemy liczbę x kodem Golomba z parametrem m=4 np. 7 kodem Golomba z parametrem 4 prefiks słowa: sufiks: x/m zakodowane unarnie (kod α Eliasa) 7/4 = 1 10 x mod m zakodowane zmodyfikowanym kodem binarnym dla przedziału [0, m 1] 7 mod 4 = 3 11 10 11 Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 44

Kod Golomba Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 45

Tworzenie kodów Golomba Za pomocą drzewa łatwo stworzyć kod Golomba 0 10 00 110 010 011 100 1110 1010 1011 1100 m =1 m =3 11010 11011 Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 46

Kod Golomba Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 47

Kod Golomba-Rice a Jak zmniejszyć prefiks? ZałóŜmy, Ŝe zamiast kodować parametr m zakodujemy k, przy czym m = 2 k Jest to kod Golomba-Rice a kodujemy liczbę x kodem Golomba-Rice a z parametrem k prefiks słowa: sufiks: x/ 2 k zakodowane unarnie (kod α Eliasa) zauwaŝmy, Ŝe x >> k x mod 2 k zakodowane zmodyfikowanym kodem binarnym dla przedziału [0, m 1] k najmniej znaczących bitów x Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 48

Podsumowanie Kodowanie Huffmana stanowi kanon kompresji Wykorzystywane w: - kodowaniu faksów - standardzie kompresji JPEG, MPEG-1, MPEG-2 Kodowanie Golomba i Golomba-Rice a są szczególnymi przypadkami kodowania Huffmana Kodowanie Golomba i Golomba-Rice a są stosowane w bezstratnej i prawie bezstratnej kompresji obrazów JPEG-LS MoŜna wybierać dowolny kod, MoŜna kody łączyć, np. kod Huffmana wraz z RLE (JPEG) Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 49

Dziękuję za uwagę Przemysław Sękalski, Przetwarzanie i transmisja danych multimedialnych, wykład 3, 2006 50