Przetwarzanie i transmisja danych multimedialnych Wykład Podstawy kompresji Przemysław Sękalski sekalski@dmcs.pl Politechnika Łódzka Katedra Mikroelektroniki i Technik Informatycznych DMCS
Zawartość wykładu. Wprowadzenie do kompresji i transmisji danych. Podstawy kompresji 3. Shannona Fano i Huffmana 4. 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) 0. Bezstratna kompresja obrazów. Stratna kompresja obrazów. Stratna kompresja dźwięku 3. Kompresja wideo
Plan wykładu Podstawowe definicje Paradygmat kompresji owanie Przykłady prostych kodów Kody statyczne 3
(informacja własna) związana z wystąpieniem zdarzenia A, którego prawdopodobieństwo wystąpienia wynosi P(A) określana jest zaleŝnością (Hartley 98): I ( A) = log n P ( A) = log Jednostka, w której mierzona jest autoinformacja zaleŝy od podstawy logarytmu: n = bit (ang. bit [binary digit]), n = e nat (ang. nat [natural digit]), n P( A) n = 0 hartley (od nazwiska Ralpha Hartleya) I 0 9 8 7 6 5 4 3 0 funkcja autoinformacji 0 P 4
Obliczanie autoinformacji Przykład : ZałóŜmy, Ŝe mamy źródło które generuje symbole A = {a, a, a 3, a 4 } z prawdopodobieństwem P = {½, ¼, /8,/8}. wynosi wówczas: I ( a ) I( a I( a 3 ) = log ) = log = I( a 4 P ( a ) P ( a ) ) = log = log = log P ( a ) 3 = bit 4 = bity = log 8 = 3bity 5
Obliczanie autoinformacji Przykład : ZałóŜmy, Ŝe mamy źródło które generuje symbole A = {a, a, a 3, a 4 } z prawdopodobieństwem P = {3/8, 3/8, /8,/8}. wynosi wówczas: I ( a ) I( a 3 ) = I( a = I( a ) = log 4 ) = log P ( a ) P = log ( a ) 3 8 3 = log =,45bita 8 = 3bity Funkcja autoinformacji koncentruje się na jednej literze, a nie na zbiorze liter (wiadomości) 6
Pojęcie entropii wprowadził Shannon. Jest to funkcja postaci: H ( p,..., pn) = H ( A) = pi lg Taką funkcję nazywamy entropią stowarzyszona ze zbiorem n niezaleŝnych zdarzeń A = {a,..., a n } i ze zbiorem prawdopodobieństw ich zajścia P = {p,..., p n )} n i= p i = n i= p i I i jest średnią autoinformacją 7
W kontekście kodowania wiadomości entropia reprezentuje ograniczenie na średnią długość słowa kodu uŝywanego przy kodowaniu wartości wyjściowych. p i = 7, I H ( A) = i n i=,8bit p i I i = 7* 7 *,8 =,8bit a b c d e f g Przykład drzewa decyzyjnego h p i =, I 8 H ( A) = i n i= = 3bity p i I i = 8* 8 *3 = 3bity 8
Eksperyment i jego entropia Eksperymentem nazywamy generowanie przez źródło symboli a i ze zbioru alfabetu A a i A={a a n } a źródło Entropią eksperymentu nazywamy miarę określającą średnią liczbę symboli binarnych potrzebnych do zakodowania ciągu utworzonego z symboli kolejno wygenerowanych przez źródło. Najlepszym wynikiem jaki moŝna uzyskać stosując kompresje bezstratna jest zakodowanie sekwencji symboli tak, aby średnia liczba bitów przypadająca na symbol była równa entropii źródła. Shannon 9
źródła Z definicji entropia wynosi: H ( p n,..., pn) = H ( A) = i= p i lg p i źródła S generującego ciąg symboli x, x, x n naleŝących do wspólnego alfabetu A = {,, 3,,m} wynosi: H ( S) m m m = lim n n i = i = in = ( ) ( ) p x = i x = i x = i p,,, log n n x = i, x = i,, xn = in 0
Przypadki szczególne Przy załoŝeniu, Ŝe wszystkie elementy serii mają rozkład identyczny i niezaleŝny od siebie (równe prawdopodobieństwa wystąpienia zdarzeń p i = const = /n i,n ), otrzymujemy: H ( S) = m i = p x log p ( = i ) ( x = i ) Jest to entropia źródła pierwszego rzędu Znajomo wyglądający wzór??!!
a jak jest w rzeczywistości? W rzeczywistych źródłach symbole nie są generowane z jednakowym prawdopodobieństwem W większości przypadków symbole są zaleŝne od siebie. Nie znany jest takŝe rozkład wszystkich próbek n, a tylko ograniczona ich ilość pierwszego rzędu nie jest dobrą miarą entropii źródła fizycznego źródła nie jest znana
Policzmy entropię pierwszego rzędu Dla przykładowej sekwencji danych: W= { 3 3 4 5 6 7 8 9 3 3 5 6} P(3) = P() = P(5) P() 4 6 3 6 = P(6) = = P(4) 6 = P(7) = P(8) = P(9) = 6 log log log log P(3) = P() =,4 P(5,6) = 3 P(,4,7,8,9) = 4 H ( W ) 9 = i= p i) log p( i), 95bit ( 3
pierwszego rzędu Pomiędzy poszczególnymi symbolami istnieje zaleŝność (korelacja). Zastępując kolejne elementy wiadomości W róŝnicą pomiędzy dwoma kolejnymi symbolami otrzymujemy nowy ciąg: W= { 3 3 4 5 6 7 8 9 3 3 5 6} W ={ - -7 0 } P() = P( 7) 6 = P( ) = P(0) = P() = P() = 6 log log P() = 0,4 P( 7,,0,) = 4 H ( W ) = p( i) log p( i), 3bit i= 7 4
Plan wykładu Podstawowe definicje Paradygmat kompresji owanie Przykłady prostych kodów Kody statyczne 5
W zaleŝności jak przedstawimy informację otrzymamy róŝną wartość entropii. Znając strukturę wiadomości moŝna zmieniać (najlepiej zmniejszać) entropię. Znając zaleŝności pomiędzy symbolami (korelację) moŝna budować model. em nazywamy zaleŝności pomiędzy kolejnymi symbolami ciągu 6
owanie Uaktualnianie modelu owanie owanie Wiadomość wejściowa Wiadomość zakodowana Dekodowanie Wiadomość wyjściowa Współczesny paradygmat kompresji 7
Paradygmat kompresji. owanie: Pierwszy etap kompresji podczas, którego badane są zaleŝności pomiędzy symbolami i budowany jest model. Informacja nadmiarowa (redundantna) jest usuwana. Istnieje wiele metod budowania modelu. Niezbędna jest wiedza o źródle sygnału.. : Drugi etap kompresji, podczas którego kodowany jest sam model oraz informacja o odchyleniu wiadomości od modelu. Jest wiele rodzajów kodowania Metody kodowania oparte są na matematyce 8
owanie e e bez pamięci DMS e z pamięcią CSM e Markowa e drzew kontekstu 9
bez pamięci - DMS Najprostszą postaciąźródła informacji jest dyskretne źródło bez pamięci - model DMS (discrete memoryless source), w którym emitowane symbole są od siebie niezaleŝne. DMS często zwany jest modelem fizycznym MoŜe, ale nie musi dokładnie opisywać źródło. Nie wnosi Ŝadnej informacji o źródle i nie moŝe być wykorzystany do skutecznego kodowania. Nie jest wykorzystywany w kompresji danych 0
z pamięcią - CSM źródła z pamięcią zwany teŝ modelem warunkowym (conditional source model) uwzględnia zaleŝność pomiędzy wystąpieniem danego symbolu od wystąpienia wcześniejszych kontekstu czasowego. Kontekst moŝe być ograniczony do jednego lub kilku symboli Pełny kontekst to wszystkie dotychczas wyemitowane symbole Znając kontekst w danej chwili moŝna wnioskować o prawdopodobieństwie wystąpienia kolejnego symbolu P( s t ), gdzie s t = (s, s,, s t ) jest sekwencją t symboli wygenerowanych w przeszłości (kontekstem rzędu t) Prawdopodobieństwo warunkowe P(a i b j ) dla i = n oraz j = k obliczane jest z wzoru: ( ) P a b i j ( ) i, j ( ) N a b = = N b j Liczba wystąpień symbolu a i i kontekstu b j Liczba wystąpień kontekstu b j
CSM - podsumowanie źródła jest określony przez: Alfabet symboli źródła A s ={a, a,,a n } Zbiór kontekstów C dla źródła S opisanego wzorem: S A = { b, b,..., b } Prawdopodobieństwa warunkowe: ( i j ) P a b C ( ai, b j ) ( b j ) N = = N dla i = n (liczba symboli w alfabecie) oraz j = k (liczba kontekstów) Zasadę określania kontekstu C w kaŝdej chwili czasowej t jako funkcję f( ) symboli wcześniej wyemitowanych przez źródło. Funkcja f( ) przekształca wszystkie moŝliwe sekwencje symboli z A s o długości t lub S mniejszej w A C k Liczba wystąpień symbolu a i i kontekstu b j Liczba wystąpień kontekstu b j
źródła Markowa źródła CSM oraz DMS jest szczególnym przypadkiem modelu źródła zaproponowany przez Markowa (906). Dla źródła Markowa rzędu m kontekst C (m) jest ograniczony do m znaków poprzedzających generowany symbol s l. Prawdopodobieństwo wystąpienia symbolu a i z alfabetu A zaleŝy jedynie od m symboli, jakie pojawiły się bezpośrednio przed nim. Określane jest jako prawdopodobieństwo warunkowe: ( ) (,,..., ) i b j i j j j P a = P a a a a i, n j, j,..., jm, n m 3
e źródła Markowa Źródła Markowa często reprezentowane są za pomocą diagramu stanów. Dla źródła Markowa pierwszego rzędu jest tyle stanów ile symboli w alfabecie A (n). Dla źródła Markowa m-tego rzędu jest n m stanów. WyŜsze rzędy są z reguły wykorzystywane do kompresji obrazów (D i 3D) źródła Markowa określona jest jako: n n n n ( m) ( ),,...,, log,,..., j = j = j = m i= ( ) ( ) j j j i i j j j H S C P a a a a P a a a a = m Wartość entropii źródła Markowa mieści się pomiędzy entropią źródła H S H S C H S ( m) ( lącznej ) ( ) ( DMS ) m 4
owanie - podsumowanie Istnieje wiele rodzajów modeli źródeł Do modelowania niezbędna jest znajomość źródła Im więcej informacji zaleŝnych od siebie tym lepsza moŝliwość kompresji, Dla tekstu angielskiego w 95 roku Shannon oszacował entropię przy załoŝeniu kontekstu długości dwóch znaków na 3, bit/znak Współczesne modele szacują entropię tekstu angielskiego na,45 bit/znak 5
Plan wykładu Podstawowe definicje Paradygmat kompresji owanie Przykłady prostych kodów Kody statyczne 6
ZałoŜenia: Źródło S emitujące sygnały a i z alfabetu A={a,,a n } Znane jest prawdopodobieństwo wystąpienia symbolu a i, oznaczone jako p i = p(a i ). Zbiór wartości wszystkich prawdopodobieństw określany będzie jako P(p,,p i ). Symbolom a i odpowiadają słowa kodu, które naleŝą do zbioru K={k,,k n } 7
- definicje Kodem nazywamy odwzorowanie alfabetu A na zbiór słów kodowych K (f : A K) Inaczej mówiąc: kaŝde słowo kodu k i musi opisywać symbol z alfabetu a i Celem kompresji jest zmniejszanie średniego kosztu, danego wzorem: L avg gdzie i,n, l i długość słowa kodowego k i, n = p l i i p i prawdopodobieństwo wystąpienia słowa k i 8
Efektywność kompresji Efektywność kompresji wyraŝona w procentach mierzona jest jako stosunek entropii do średniego kosztu: H L avg 00% 9
Kod jednoznacznie dekodowalny to taki kod, który kaŝdemu symbolowi a i z alfabetu A przypisuje jedno i tylko jedno słowo kodowe k i róŝne dla róŝnych symboli. jest przekształceniem róŝnowartościowym jeden w jeden. Matematyczne określenie to bijekcja. Przykładem kodu jednoznacznie dekodowalnego jest kod dwójkowy o stałej długości słowa. Który kod jest JD, a który nie??: AK = {, 0, 00, 000} AK = {0, 0, 0, } AK 3 = {0, 0,, } AK 4 = {0, 0, } AK 5 = {00,, 00} jest JD jest JD Nie jest JD bo 0 = 0 Jest JD Nie jest JD bo 00 = 00 30
Kod nazywamy przedrostkowym (prefix code) jeśli nie moŝemy otrzymaćŝadnego słowa kodu z innego słowa kodu przez dodanie do niego zer lub jedynek (Ŝadne słowo kodu nie jest przedrostkiem innego słowa kodu). są łatwe do dekodowania (natychmiastowe dekodowanie) W literaturze anglosaskiej spotykane są takŝe nazwy prefix condition codes, prefix-free codes, comma-free code. Przedrostkowość kodu jest warunkiem wystarczającym jego jednoznacznej dekodowalności (ale nie koniecznym) Przykład: AK4 = {0, 0, }, C (ς ς ς 3 ς ) = 0 0 0 jak to zdekodować 000? 3
Nierówność Krafta-MacMillana Dla kodów jednoznacznie dekodowalnych zawierających n słów kodowych o długości l i zachodzi nierówność: n i= l i Równanie moŝe słuŝyć do określania czy kod jest jednoznacznie dekodowalny 3
33
nie korzysta z informacji o prawdopodobieństwie wystąpienia symbolu w kodowanej sekwencji Zalety: prosta budowa, szybkość brak konieczności przesyłania informacji do dekodera o modelu Wady: niski współczynnik kompresji moŝliwa ekspansja danych po zakodowaniu (model jest niezmienny i moŝe być nieadekwatny do danych kompresowanych) 34
Kod unarny Kod α-eliasa (kod unarny) kaŝdy z x symboli reprezentowany jest jako x- symboli po których następuje 0 symbol 3 4 5 6 7 8 9 kod 0 0 0 0 0 0 0 0 0 Cechy: prosty, ale bardzo długi (moŝliwa ekspansja) długość słowa zaleŝna wprost od ilości symboli x, część składowa innych kodów, stosowany, gdy jeden symbol występuje znacznie częściej niŝ inne 35
Kod binarny Kod β-eliasa (kod binarny) kaŝdy z x symboli reprezentowany jest jako liczba binarna z pominięciem zer wiodących symbol 3 4 5 6 7 8 9 kod 0 00 0 0 000 00 Cechy: prosty, nie jest jednoznacznie dekodowalny, brak informacji o początku i końcu danego słowa długość słowa zaleŝna od ilości symboli x, ( log x + ) część składowa innych kodów, 36
Kod γ-eliasa Kod γ-eliasa jest kodem złoŝonym Pierwsza część kodu kodowana według schematu α określa ilość kodu binarnego Druga część kodu określa symbol i jest kodowana według schematu β bez wiodącego bitu Cechy: prosta budowa, długość słowa opisana wzorem log x + symbol 3 4 5 6 7 8 9 kod 0 00 0 000 00 00 0 0000 000 37
Reprezentacja Zeckendorfa Liczby Fibonacciego powstają poprzez zsumowanie dwóch poprzednich liczb przy czym pierwsze dwie są równe : F n =F n- -F n- F = {,, 3, 5, 8, 3,, } Własność: KaŜdą liczbę całkowitą moŝna przedstawić jako sumę liczb Fibonacciego Reprezentacja Zeckendorfa to zapis binarny liczby, w którym kaŝdy bit odpowiada jednej liczbie Fibonacciego. Wartość bitu równa oznacza, Ŝe dana liczba Fibonacciego wchodzi do sumy. Pomijana jest w reprezentacji liczba F 0 = 0x + x + 0x3 + 0x5 + x8 => 000 lub 000 = x + x + 0x3 + 0x5 + x8 => 00 lub 00 odwrócona prosta 38
Reprezentacja Zeckendorfa Skoro kaŝdą liczbę moŝna przedstawić jako sumę poprzednich liczb Fibonacciego zatem moŝna przekształcić tak reprezentację Zeckendorfa, aby nie występowały po sobie kolejne jedynki. = x + x + 0x3 + 0x5 + x8 => 00 00 = 0x + 0x + x3 + 0x5 + x8 => 000 000 Aby dodać znacznik końca kodu wystarczy dodać na końcu. Dwie jedynki po sobie następujące będą definiowały koniec słowa kodowego (kod Fraenkela Kleina C) 39
Fraenkela Kleina C symbol 3 4 5 6 7 8 9 kod 358X 0 00 0 000 00 00 0000 000 Wada: Jak rozdzielić słowa? 40
Fraenkela Kleina C Kod Fraenkela Kleina C tworzymy łącząc bity 0 z odwrócona reprezentacja Zeckendorfa liczby x pomniejszonej o (x-). symbol X- kod 0358 0 Liczba jest reprezentowana jako (wyjątek) 3 4 3 00 000 5 4 00 Zaleta: Dwie jedynki po sobie jednoznacznie definiują podział słowa kodowego 6 7 8 5 6 7 0000 000 000 9 8 00000 4
Inne kody statyczne Inne kody Fraenkela Kleina Kody Apostolico Fraenkela oparte na liczbach Fibonacciego (takŝe liczby Fibonacciego wyŝszych rzędów) Kody Golomba Kody Rice a Kody Goldbacha Kody Wheelera interpolacyjne 4
to kody statyczne, które powstały po przeanalizowaniu kodowanej wiadomości. Symbole występujące najczęściej są kodowane za pomocą najkrótszych słów kodowych. Dla róŝnych wiadomości niezbędna jest inna funkcja przekształcająca alfabet na słowa kodowe. Konieczność przekazania kodu do dekodera!! Bardziej uniwersalne niŝ kody statyczne, lepszy współczynnik kompresji. 43
Dziękuję za uwagę i proszę o pytania 44