Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Materiały pochodzą z Platformy Edukacyjnej Portalu www.szkolnictwo.pl Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu www.szkolnictwo.pl.

Podobne prezentacje


Prezentacja na temat: "Materiały pochodzą z Platformy Edukacyjnej Portalu www.szkolnictwo.pl Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu www.szkolnictwo.pl."— Zapis prezentacji:

1 Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu mogą być wykorzystywane przez jego Użytkowników wyłącznie w zakresie własnego użytku osobistego oraz do użytku w szkołach podczas zajęć dydaktycznych. Kopiowanie, wprowadzanie zmian, przesyłanie, publiczne odtwarzanie i wszelkie wykorzystywanie tych treści do celów komercyjnych jest niedozwolone. Plik można dowolnie modernizować na potrzeby własne oraz do wykorzystania w szkołach podczas zajęć dydaktycznych.

2 Algorytmy kompresji Kodowanie Huffmana, kodowanie arytmetyczne

3 Kodowanie arytmetyczne Kodowanie arytmetyczne to metoda kodowania źródłowego dyskretnych źródeł sygnałów, stosowana jako jeden z systemów w bezstratnej kompresji danych. Została wynaleziona przez amerykańskiego profesora Petera Eliasa około 1960 roku. Ideą tego kodu jest przedstawienie ciągu wiadomości jako podprzedziału przedziału jednostkowego P – [0,1) wyznaczonego rekursywnie na podstawie prawdopodobieństw wystąpienia tych wiadomości generowanych przez źródło. Ciąg kodowy reprezentujący kodowane wiadomości jest binarnym zapisem wartości z wyznaczonego w ten sposób przedziału. Peter Elias

4 Kodowanie arytmetyczne Pojedyncze słowo kodowe jest przyporządkowane każdemu możliwemu zbiorowi wiadomości ze źródła. Każde słowo kodowe może być traktowane jako jednostronnie domknięty podprzedział przedziału [0,1). Poprzez przypisanie każdemu słowu kodowemu wystarczająco dużo znaczących bitów, można odróżnić jeden podprzedział od innego i w ten sposób zdekodować ciąg bitów, przypisując mu zbiór wiadomości wygenerowanych przez źródło.

5 Algorytm kodowania Dany jest zbiór symboli S – {x 1, x 2, …} oraz stowarzyszony z nim zbiór prawdopodobieństw p – {p 1, p 2, …}. Jeden z symboli jest wyróżniony - jego wystąpienie oznacza koniec komunikatu, zapobiegając wystąpieniu niejednoznaczności; ewentualnie zamiast wprowadzenia dodatkowego symbolu można przesyłać długość kodowanego ciągu. Na początku dany jest przedział P – [0,1), który dzielony jest na podprzedziały o szerokościach równych kolejnym prawdopodobieństwom p i. Kolejnym podprzedziałom (ozn. R i ) odpowiadają symbole ze zbioru. Algorytm kodowania: dla kolejnych symboli x i określamy, który podprzedział bieżącego przedziału odpowiada danej literze x i - wynikiem jest R i bierzemy nowy przedział P:= R i – następuje zawężenie przedziału dzielimy ten przedział na podprzedziały tak aby zostały zachowane proporcje szerokości podprzedziałów zostaje zwrócona liczba jednoznacznie wskazującą przedział (najczęściej dolne ograniczenie, albo średnia dolnego i górnego ograniczenia).

6 Kodowanie arytmetyczne – przykład 1 Rozważmy kodowanie zbioru wiadomości: Kodowany tekst Prawdopodobieństwo Skumulowane prawdopodobieństwo Przedział A0,2 [0,0; 0,2) A0,40,6[0,2; 0,6) D0,10,7[0,6; 0,7) B0,20,9[0,7; (koniec) 0,11,0[0,9; 1,0)

7 Kodowanie arytmetyczne – przykład 1 cd. Kodujemy A i otrzymujemy przedział [0.0; 0.2) Drugą liczbę A kodujemy i otrzymujemy przedział [0.0; 0.04) Kodujemy D i otrzymujemy przedział [0.028; 0.036) Kodujemy B i otrzymujemy przedział [0.0296; ) i otrzymujemy przedział [ ; ) Przedział lub dowolna liczba z niego reprezentuje kodowany zbiór wiadomości dla ustalonej długości tekstu n, każdy ciąg jest odwzorowany na przedział rozłączny z przedziałami odpowiadającymi innym ciągom. Gwarantuje to jednoznaczność kodowania wygenerowanie znacznika dla konkretnego ciągu nie wymaga wyznaczania bądź pamiętania znaczników innych ciągów nadajemy dowolną liczbę z ostatniego zawężonego zakresu żeby można było otrzymać zakodowane wiadomości, dekoder musi znać model źródła i nadaną liczbę

8 Dekodowanie arytmetyczne – przykład 1 cd. Dekodowanie składa się z serii porównań odebranej liczby z zakresami reprezentującymi wiadomości ze źródła W prezentowanym przykładzie liczba ta może wynosić np , lub Ponieważ należy ona do przedziału [0.0; 0.2) dekoder rozpoznaje pierwszą wiadomość jako A, co zawęża przedział do [0.0; 0.2). Dekoder jest w stanie wywnioskować, że następna wiadomość zawęzi przedział na jeden z możliwych sposobów: do [0.0; 0.04) dla A, do [0.04; 0.12) dla B, do [0.12; 0.14) dla C, do [0.14; 0.18) dla D i [0.18; 0.2) Ponieważ odebrana liczba mieści się w przedziale [0.0; 0.04), zatem podejmuje decyzję, że następna nadana wiadomość to A. Procedura kontynuowana jest aż do określenia wszystkich wiadomości w nadanym zbiorze.

9 Wady kodowania arytmetycznego dekoder musi wiedzieć, kiedy zakończyć proces. Są możliwe dwa rozwiązania zakończenie wiadomością stop w przykładzie) – to rozwiązanie jest najbardziej preferowane koder musi przesłać liczebność zbioru kodowanych wiadomości w praktycznej realizacji kodera i dekodera niezbędna jest precyzja i złożoność wykonywanych operacji podczas kodowania są ograniczone pojemności rejestrów (możliwe jest przepełnienie) występują błędy w dekodowaniu

10 Zastosowanie kodowania arytmetycznego Kodowanie arytmetyczne najczęściej wykorzystywane jest w formatach: JBIG JPEG / MPEG JPEG-2000 H.263 H.26L PPM DMM

11 Kodowanie arytmetyczne – przykład 2 Rozważmy kodowanie zbioru wiadomości: bac Kodowany tekst Prawdopodobieństwo Skumulowane prawdopodobieństwo Przedział a0,2 [0,0; 0,2) b0,50,7[0,2; 0,7) c0,31,0[0,7; 1,0) Dla każdego znaku komunikatu przypisujemy podprzedział przedziału [0,1). Dla każdego komunikatu przedział ten nazywa się przedziałem komunikatu

12 Kodowanie arytmetyczne – przykład 2 cd. Kodujemy komunikat: bac Wynikowy przedział to [0,27; 0,3)

13 Dekodowanie arytmetyczne – przykład 3 Dekodujemy liczbę 0.49, znamy początkowe przedziały i długość komunikatu 3: Wynikowy komunikat to bbc

14 Algorytm kodowania Huffmana Kodowanie Huffmana to jedna z najprostszych i łatwych w implementacji metod kompresji bezstratnej. Została opracowana w 1952 roku przez Amerykanina Davida Huffmana. Algorytm Huffmana jest wykorzystywany w wielu profesjonalnych metodach kompresji tekstu, obrazów i dźwięków, również w połączeniu z innymi metodami. Redukcja wielkości danych przy stosowaniu tego algorytmu wynosi ok 50 %. W przypadku obrazów i dźwięków kodowane są nie same znaki np. piksele, ale również miejsca między kolejnymi znakami. David Huffman

15 Cechy algorytmu Huffmana generuje kod zero-jedynkowy kod każdego znaku nie jest początkowym fragmentem kodu innego znaku generowany kod jest kodem prefix-free (0, 1), który pozwala na jednoznaczne dekodowanie jest tworzony tak, aby średnia długość kodu znaku była możliwie najkrótsza – w tym celu wykorzystuje się informację o częstości występowania znaku w tekście. W celu wykorzystania algorytmu Huffmana musimy zbudować jego reprezentację w postaci drzewa. Charakterystycznymi cechami drzewa są: oznaczenia drzewa 0 i 1 znaki dla których tworzymy kod znajdują się w liściach drzewa a cg acg 01011

16 Algorytm Huffmana przykład Prześledźmy teraz działanie algorytmu Huffmana na przykładzie sześciu wybranych liter. W kółkach mamy częstotliwość występowania w języku polskim napisanej niżej litery. 8,711,293,453,107,904,63 ABDKOR W celu zbudowania drzewa Huffmana ze zbioru usuwamy dwie najmniejsze częstotliwości czyli w naszym przypadku 1,29 i 3,10. Na ich miejsce wstawiamy ich sumę 1,29 + 3,10 = 4,39 i podczepiamy wierzchołki z usuniętymi częstotliwościami pod nowy wierzchołek. 8,711,293,453,107,904,63 ADBKOR 4,39

17 Algorytm Huffmana przykład Ponownie ze zbioru usuwamy dwie najmniejsze częstotliwości czyli 3,45 i 4,39. Łączymy je i otrzymujemy. 8,711,29 3,45 3,107,904,63 ABKOR 4,39 7,84 D 8,711,29 3,45 3,107,90 4,63 ABKO 4,39 7,84 D Następnym krokiem jest dodanie do siebie 4,63 i 7,83 po czym otrzymujemy: 12,47 R

18 Algorytm Huffmana przykład Kolejne dwie najmniejsze częstotliwości to 7,90 i 8,71, po czym otrzymaliśmy 2 drzewa: 8,711,29 3,45 3,107,90 4,63 BK 4,39 7,84 D 12,47 R AO 16,61

19 Algorytm Huffmana przykład Na końcu dodajemy dwie ostatnie częstotliwości – 13,47 i 16,61. Ostatecznie otrzymujemy jedno drzewo. 8,71 1,29 3,45 3,10 7,90 4,63 BK 4,39 7,84 D 12,47 R AO 16,61

20 Algorytm Huffmana przykład Po otrzymaniu jednego drzewa należy każde rozgałęzienie odpowiednio oznaczyć 0 lub 1. Każdą lewą gałąź 0, a prawą 1 (lub odwrotnie). 8,71 1,29 3,45 3,10 7,90 4,63 BK 4,39 7,84 D 12,47 R AO 16, Litera Zakodowana wartość A00 B1010 D100 K1011 O01 R11

21 Algorytm Huffmana przykład – kodowanie, dekodowanie Posiadając tabelę możemy łatwo zakodować dowolne kombinacje liter (wyrazy). Np.: Litera Zakodowana wartość A00 B1010 D100 K1011 O01 R11 RODAK BRODA W analogiczny sposób dokonujemy dekodowania zakodowanego ciągu znaków, np.: Dzięki temu, że kod jest prefiksowy łatwo można podzielić ten ciąg 0 i 1 na odpowiednie kody liter : KORBA Odkodujmy ciąg znaków: KADABRA

22 Kodowanie Huffmana podsumowanie kodowanie Huffmana stanowi kanon kompresji jest adaptowane dla każdego tekstu długości ciągów kodowych dobierane są do statystyki źródła wiadomości kodowanie opiera sie o częstość występowania znaków wykorzystywane w: kodowaniu faksów standardzie kompresji: JPEG MPEG-1 MPEG-2

23 Bibliografia Drozdek A.: Wprowadzenie do kompresji danych, WNT 1999 K. Sayood, Kompresja danych. Wprowadzenie, 1. READ ME, Warszawa, 2002 W. Skarbek, Multimedia. Algorytmy i standardy kompresji, Akademicka Oficyna Wydawnicza PLJ, Warszawa, 1998 P. Wróblewski : Algorytmy, struktury danych i techniki programowania, Helion, Gliwice /inmemoriam.html


Pobierz ppt "Materiały pochodzą z Platformy Edukacyjnej Portalu www.szkolnictwo.pl Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu www.szkolnictwo.pl."

Podobne prezentacje


Reklamy Google