Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

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

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

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

Definicja. Jeśli. wtedy

Kompresja bezstratna. Entropia. Kod Huffmana

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

Temat: Algorytm kompresji plików metodą Huffmana

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

Teoria Informacji - wykład. Kodowanie wiadomości

Teoria informacji i kodowania Ćwiczenia

Nierówność Krafta-McMillana, Kodowanie Huffmana

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

Algorytmy kodowania entropijnego

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

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Elementy teorii informacji i kodowania

Kody Tunstalla. Kodowanie arytmetyczne

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

Kodowanie informacji

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

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

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

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.

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

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

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

ZADANIE 1. Rozwiązanie:

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

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

Wstęp do Informatyki

0-0000, , , itd

Podstawowe pojęcia. Teoria informacji

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

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

dr inż. Jacek Naruniec

1.1. Pozycyjne systemy liczbowe

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

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

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

Wstęp do programowania

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

Kodowanie Shannona-Fano

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

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Kodowanie i entropia

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

Kody Huffmana. Konrad Wypyski. 11 lutego 2006 roku

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

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

Pracownia Komputerowa wykład V

Podstawy kompresji danych

Kodowanie informacji. Przygotował: Ryszard Kijanka

Kwantyzacja wektorowa. Kodowanie różnicowe.

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

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

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

Techniki multimedialne

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 12,

Algorytmy i struktury danych. wykład 8

Algorytmy i struktury danych

7. CIĄGI. WYKŁAD 5. Przykłady :

Teoria Informacji i Metody Kompresji Danych

Temat 7. Dekodery, enkodery

Kodowanie informacji. Kody liczbowe

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

Pracownia Komputerowa wykład IV

Wybrane metody kompresji obrazów

Sortowanie. Bartman Jacek Algorytmy i struktury

Kody blokowe Wykład 2, 10 III 2011

Luty 2001 Algorytmy (4) 2000/2001

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

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

Kodowanie informacji

Algorytmy i Struktury Danych

Ćwiczenie nr 4: Kodowanie arytmetyczne, range coder

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

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

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

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

Instrukcje dla zawodników

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

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:

RODZAJE INFORMACJI. Informacje analogowe. Informacje cyfrowe. U(t) U(t) Umax. Umax. R=(0,Umax) nieskończony zbiór możliwych wartości. Umax.

SYSTEMY UCZĄCE SIĘ WYKŁAD 3. DRZEWA DECYZYJNE. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska.

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

Kompresja danych DKDA (7)

L6.1 Systemy liczenia stosowane w informatyce

Algorytmy i Struktury Danych, 2. ćwiczenia

a) 7 b) 19 c) 21 d) 34

Kodowanie liczb całkowitych w systemach komputerowych

Joint Photographic Experts Group

Ż ż ć Ź ż Ż Ę

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

ć ć ć ć ź ć

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

Transkrypt:

Kompresja danych kodowanie Huffmana Dariusz Sobczuk

Plan wykładu Kodowanie metodą Shannona-Fano Kodowanie metodą Huffmana Elementarny kod Golomba Kod Golomba Kod Rice a kompresja danych 2

Efektywny kod symboli Słowa kodowe przyporządkowane są pojedynczym symbolom i mają różną liczbę bitów (warunek efektywnego kodu symboli) Słowa symboli o większym prawdopodobieństwie wystąpienia na wejściu są krótsze (długość słów proporcjonalna do il. Informacji związanej z danymi wydarzeniami) Kod jest przedrostkowy, czyli jednoznacznie dekodowalny (można korzystać za struktury drzewa binarnego) kompresja danych 3

Kodowanie Shannona Fano (1948 1949) Pierwsza propozycja budowy kodu efektywnego o minimalnej redundancji Algorytm konstrukcji kodu nie gwarantuje, że zawsze zostanie uzyskany kod o minimalnej redundancji kompresja danych 4

Kod Shannona-Fano 1. Określ wagi (il wystąpień) poszczególnych symboli 2. Posortuj listę symboli w nierosnącym porządku wag, i ustal ją jako grupę początkową 3. Podziel grupę symboli na dwie części o możliwie równej sumie wag z zachowaniem porządku listy 4. Przyporządkuj symbolom grupy z większą wagą 0, a symbolom z mniejszą wagą 1 5. Rekursywnie powtórz kroki 3 i 4, aż grupa początkowa podzielona zostanie na jednoelementowe grupy kompresja danych 5

Przykład kodowania metodą S-F Dany alfabet As={a,b,c,d,e} z wagami odpowiednio w(a)=6, w(b)=12, w(c)=4, w(d)=5, w(e)=4 Posortowanie b,a,d,c,e wagi 12,6,5,4,4 Pierwszy podział wagi 12,6 5,4,4 kod 0,0,1,1,1 Następne 12 6 5 4,4 kod 00,01,10,11,11 Końcowy kod 00,01,10,110,111 kompresja danych 6

Binarne drzewo dla metody S-F 0 1 0 1 0 1 b a d 0 1 c e kompresja danych 7

Efektywność metody S-F Entropia H dla tego przypadku wynosi H = 2.176 Średnia bitowa L = 2.258 Nie jest to wartość optymalna, nawet w tej klasie koderów Pomimo to używana jest w takich koderach jak WinZip, oraz Cabarc firmy Microsoft kompresja danych 8

Optymalne drzewo binarne kodu symboli Własności takiego drzewa to: Liść symbolu o najmniejszej wadze ma najdłuższe słowo, czyli leży najgłębiej w drzewie drzewo jest binarne i lokalnie pełne, a więc liść leżący na najgłębszym poziomie ma brata, którym jest liść o drugiej w kolejności najmniejszej wadze Własność tę posiada drzewo Huffmana, które jest optymalne w swojej klasie kodów symboli kompresja danych 9

Kodowanie Huffmana (1952) Shannon opowiada na wykładzie o problemach związanych z konstrukcją kodu o minimalnej redundancji Huffman, student Shannona po niedługim czasie proponuje właściwe rozwiązanie, dzięki czemu... zostaje zwolniony ze zdawania egzaminu kompresja danych 10

Kod Huffmana założenia Symbolom o większym prawdopodobieństwie wystąpienia odpowiadają kody krótsze niż symbolom o mniejszym prawdopodobieństwie wystąpienia Dwóm najrzadziej występujące symbolom odpowiadają kody tej samej długości Niemożliwe skrócenie kodu dla żadnego symbolu kompresja danych 11

Kod Huffmana 1. Określ wagi dla symboli, tworząc zbiór wolnych wierzchołków 2. Sortuj listę wierzchołków wolnych nierosnąco 3. Dwa wolne wierzchołki z najmniejszymi wagami i połącz z tworzonym węzłem rodzica. Wagę rodzica ustal jako sumę wag dzieci. Zastąp te wierzchołki wierzchołkiem rodzica nadając dzieciom etykiety odpowiednio 0 i 1 4. Powtarzaj krok 3, aż zostanie wolny korzeń drzewa 5. Odczytaj ze struktury drzewa słowa kodowe liści kompresja danych 12

Przykład drzewa Huffmana porównanie 0 1 0 1 12 b 19 0 1 0 1 11 0 1 8 b a d 0 1 0 1 6 5 4 4 a d c e c 0 1 e Drzewo Huffmana Shanona-Fano kompresja danych 13

Kodowanie Huffmana porównanie Weźmy ten sam przykład co dla S-F Otrzymujemy inne drzewo kodowe Entropia H dla tego wynosi H = 2.176 Średnia bitowa dla S-F 2.258 Średnia bitowa dla Huffmana 2.226 Dla kodowania Huffmana jest to wartość optymalna w klasie koderów symboli kompresja danych 14

Przykładowy sekwencja poddawana kompresji 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ę... kompresja danych 15

Drzewo Huffmana dla badanego tekstu 153 36 65 88 18 29 48 40 8 15 25 20 4 7 12 23 10 2 2 10 3 4 8 14 6 6 13 12 5 1 1 1 1 4 5 5 18 1 2 2 2 4 4 7 7 3 3 3 3 6 7 6 6 11 2 3 5 10 20 d h l ś ł m n e w g t z ę k p s u y,. N i a r o c ż j W S P kompresja danych 16

Kod Huffmana dla badanego tekstu Symbol L. wyst. Kod Symbol L. wyst. Kod a 6 10100 p 7 0110 c 3 110001 r 6 10101 d 1 0000000 s 7 0111 e 18 001 ś 1 0000011 ę 4 01010 t 2 010010 g 2 010001 u 3 100000 h 1 0000001 w 1 010000 i 7 10011 y 3 100001 j 10 1101 z 2 010011 k 4 01011 ż 5 11001 l 1 0000010, 3 100010 ł 4 00001. 3 100011 m 5 00010 2 110000 n 5 00011 <spacja> 20 111 o 11 1011 <nw> 6 10010 kompresja danych 17

Kod Huffmana cechy Nieskomplikowany sposób budowy drzewa Huffmana Kod jest optymalny, tzn. nie istnieje sposób kodowania przyporządkowujący symbolom kody o innych długościach, dla którego średnia długość kodu byłaby mniejsza kompresja danych 18

Kod Huffmana przykład tekstu Zastosowanie kodu Huffmana dla testowej wiadomości powoduje otrzymanie średniej długości kodu na symbol 4,48 bit (przy entropii 4,45 bit na symbol) kompresja danych 19

Czy kod Huffmana to już koniec? Kodowanie Huffmana jest optymalne w klasie algorytmów przypisujących symbolom kody o długości wyrażonej w całkowitej liczbie bitów Możliwe jest skonstruowanie kodu, który średnio będzie przypisywał kody o długościach będących ułamkami bitów kompresja danych 20

Kod dwójkowy o prawie stałej długości W kodzie dwójkowym o prawie stałej wartości B n dla n-elementowego alfabetu As={a 0,...,a n-1 } pierwszym r symbolom przypisywane są słowa k=[log 2 n] bitowe postaci B n (a i )=B k (i) a pozostałym słowa o długości (k+1) bitów postaci B n (a i )=B k+1 (r+i), r=2 k+1 n Dla źródeł o alfabecie zawierającym n=2 i, i=1,2,... symboli B n =B i a r=0, kod staje się kodem o stałej długości kompresja danych 21

Przypomnienie: kod unarny Symbol Kod 0 0 1 10 2 110 3 1110 4 11110 5 111110 6 1111110 7 11111110 8 111111110 9 1111111110 10 11111111110 11 111111111110 12 1111111111110 13 11111111111110 14 111111111111110 15 1111111111111110 Symbol Kod 0 1 1 01 2 001 3 0001 4 00001 5 000001 6 0000001 7 00000001 8 000000001 9 0000000001 10 00000000001 11 000000000001 12 0000000000001 13 00000000000001 14 000000000000001 15 0000000000000001 kompresja danych 22

Elementarny kod Golomba Niech dla parametru m (rząd kodu), EGm oznacza kod o zmienno-zmiennej wartości zdefiniowany przez alfabet As={1,01,...,0 i 1,...,0 m-1 1,0 m } (ciąg prawie jak przy kodowaniu unarnym), gdzie 0 i oznacza ciąg 0 o długości i. Kod EGm przypisuje rozszerzonemu symbolowi a m = 0 m wartość ζ m = 0, podczas gdy symbole a i =0 i 1 są kodowane za pomocą przedrostka 1 z dołączoną reprezentacją i w kodzie dwójkowym prawie stałej wartości B n. Warto zwrócić uwagę, że kod jest korzystny w przypadku często pojawiających się wartości 0 m kompresja danych 23

Słowa elementarnego kodu Golomba Alfabet Bit ciągi alfabetu dla m=8 Słowa kodowe Bit ciągi alfabetu dla m=9 Słowa kodowe a 0 1 1000 1 1000 a 1 01 1001 01 1001 a 2 001 1010 001 1010 a 3 0001 1011 0001 1011 a 4 00001 1100 00001 1100 a 5 000001 1101 000001 1101 a 6 0000001 1110 0000001 1110 a 7 0000001 1111 0000001 11110 a 8 0000000 0 00000001 11111 a 9 -- -- 00000000 0 kompresja danych 24

Kod Golomba Kod Golomba to kod symboli o nieskończonym alfabecie źródła z rzędem kodu m oznaczany Gm. Alfabet, składający się w wersji podstawowej z kolejnych liczb całkowitych nieujemnych, dzielony jest na rozłączne przedziały o stałej długości określonej przez rząd kodu A S ={(0,1,...,m-1),(m,m+1,...,2m-1),...} lub A S ( = { π m) 0 (, π m) 1,...} kompresja danych 25

Kod Golomba cd Formułując słowo kodowe ζ i należy wskazać numer przedziału u do którego trafia symbol i, a potem miejsce i od początku tego przedziału d. Długość przedziału m powinna się korelować z geometrycznym rozkładem prawdopodobieństwa źródła (gdzie p i+1 = ρ p i ) Szybsze opadanie charakterystyki (mniejsze ρ) wymaga krótszych przedziałów, wolniejsze dłuższych Odpowiedni dobór wartości m do szacowanej wartości ρ decyduje o efektywności kodu kompresja danych 26

Kod Golomba cd Słowo Golomba składa się z dwóch części: przedrostka będącego numerem przedziału symbolu zapisanego w kodzie unarnym, o potencjalnie nieograniczonej liczbie symboli przyrostka wskazującego odległość od początku przedziału wyrażoną słowem kodu dwójkowego prawie stałej długości Kod Golomba dla m=1 jest kodem unarnym kompresja danych 27

Kod Golomba - różne rzędy i m=1 m=2 m=3 0 0 0 0 0 0 1 10 0 1 0 10 2 110 10 0 0 11 3 1110 10 1 10 0 4 11110 110 0 10 10 5 111110 110 1 10 11 6 1111110 1110 0 110 0 7 11111110 1110 1 110 10 8 111111110 11110 0 110 11........... kompresja danych 28

Przykład tworzenia kodu Golomba Wyznaczymy słowo kodowe dla m=3 oraz i=13 [i/m]=[13/3]=4; U(4)=11110 Przyrostek słowa zapisany w kodzie dwójkowym prawie stałej długości dla wartości d= (i mod m) =1; B (1)=10 Daje to słowo kodowe G(13)=1111010 kompresja danych 29

Wyznaczanie rzędu kodu Golomba Rząd kodu Golomba powinien określać długość serii powtórzeń bardziej prawdopodobnych symboli źródła Warunek Golomba określa rząd jako: m log(1 + ρ) log ρ = 1 kompresja danych 30

Kod Rice a Szczególny przypadek kodu Golomba, dla m=2 k nazwany jest kodem Rice a R k k mniej znaczących bitów zostaje zapisana jako przyrostek słowa kodowego bardziej znaczące bity po przesunięciu o k pozycji w prawo zostaje zapisane w kodzie unarnym kompresja danych 31

Kod Rice a - różne rzędy i k=1 k=2 k=3 0 0 0 0 00 0 000 1 0 1 0 01 0 001 2 10 0 0 10 0 010 3 10 1 0 11 0 011 4 110 0 10 00 0 100 5 110 1 10 01 0 101 6 1110 0 10 10 0 110 7 1110 1 10 11 0 111 8 11110 0 110 00 10 000........... kompresja danych 32

Przykład kodowania Rice a Słowo kodu R 2 dla i=6 Dwójkową reprezentację i=110 dzielimy na dwie części 1 10 Starszą część zapisujemy w postaci kodu unarnego U(1)=10 Dołączamy przyrostek 10 Otrzymujemy R 2 (6)=1010 kompresja danych 33

Kod Rice a realizacja Kody Rice a definiowane są jako dynamiczne kody Goloba Źródłowy ciąg dzielony jest na bloki o stałych lub zmiennych rozmiarach. W każdym bloku ustalony zostaje najkorzystniejszy kod Rice a Do każdego bloku trzeba dołączyć identyfikator określonej postaci kodu Rice a Kod Rice a z adaptacyjnie dobieraną wartością k dla każdej kodowanej wartości wykorzystano w standardzie JPEG-LS kompresja danych 34

Plan następnego wykładu Kodowanie arytmetyczne Kodowanie adaptacyjne Dla kodowania arytmetycznego Dla kodowania Huffmana Porównanie różnych kodowań adaptacyjnych kompresja danych 35