Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Radosław Kaczyński Wrocław 2006

Podobne prezentacje


Prezentacja na temat: "Radosław Kaczyński Wrocław 2006"— Zapis prezentacji:

1 Radosław Kaczyński Wrocław 2006
Kompresja bezstratna Radosław Kaczyński Wrocław 2006

2 Spis zagadnień Wprowadzenie Kompresja bezstratna i kompresja stratna
Metody kompresji bezstratnej Postacie algorytmów kodowania Efektywność kompresji Kodowanie Huffmana Kodowanie arytmetyczne Praktyczna implementacja metod - wstęp- czym jest kompresja i jakie są jej zastosowania, - wprowadzenie pojęć: kompresja bezstratna i stratna, - trzy podstawowe postacie algorytmów kodowania - przegląd metod kompresji bezstratnej, - efektywność kompresji, - kodowanie Huffmana- koncepcja, - kodowanie arytmetyczne- koncepcja, - krótka prezentacja mojej pracy (mowa tu o referacie wysłanym na KNS)- opis programu i metody pomiarów. (wspomnę o języku C#, podobnym do Javy, o której to będzie opowiadał Maciek). 2/16

3 Wprowadzenie Kompresja- wstęp
Kompresja danych to proces przekształcenia pierwotnej reprezentacji sekwencji danych w reprezentację o mniejszej liczbie bitów. Kompresja- zastosowania Kompresja jest ogólnie znanym pojęciem. Większości osób nie obce są formaty takie jak: *.zip, *.rar, *.mp3, *.jpg, czy *.mpg. Kompresja jest sposobem reprezentacji informacji w zwięzłej postaci, na podstawie znajomości ich własności strukturalnych, towarzyszy ona rozwojowi informatyki od samego początku. Poniżej podana została definicja kompresji, zaczerpniętą z książki Artura Przelaskowskiego [2]. Kompresja danych to proces przekształcenia pierwotnej reprezentacji sekwencji danych w reprezentację o mniejszej liczbie bitów. Wraz z rosnącą ilością magazynowanych, transmitowanych i przetwarzanych danych, gdy zwiększające się przepustowości łącz telekomunikacyjnych oraz zwiększające się pojemności pamięci masowych, nie są w stanie w pełni sprostać wymaganiom konsumentów, pojawia się problem reprezentacji tych danych w najzwięźlejszej formie. Problem ten dotyczy coraz częściej użytkowników popularnych urządzeń przenośnych, takich jak telefony komórkowe, odtwarzacze MP3, czy PDA. W tym przypadku pojawiające się bardziej pojemne (a zarazem droższe) pamięci (Np. SD, MMC, Compact Flash) oraz częste sposoby wymiany danych, takie jak GPRS, EDGE, IrDA, Bluetooth, Wi-Fi, czy też protokół USB 2.0, stają się niewydajne przy ogromnej liczbie przechowywanych i transmitowanych informacji. Rozwiązaniem ww. problemów może być kompresja danych. 3/16

4 Kompresja bezstratna Kompresja bezstratna (kodowanie)- typ kompresji nie dopuszczający utraty wiadomości. Dane po skompresowaniu i późniejszym zdekompresowaniu są identyczne. Kompresja bezstratna (często nazywana kodowaniem) jest typem kompresji nie dopuszczającym utraty wiadomości. Gwarantuje ona, że dane po skompresowaniu późniejszym zdekompresowaniu będą identyczne. Często stosowanymi metodami kodowania są kodowanie Huffmana, oraz kodowanie arytmetyczne (w wersjach statycznych, semiadaptacyjnych i adaptacyjnych). 4/16

5 Metody kompresji bezstratnej
Kodowanie Huffmana Kodowanie arytmetyczne Kodowanie słownikowe Kodowanie predykcyjne 5/16

6 Kompresja stratna Kompresja stratna - typ kompresji dopuszczający utratę wiadomości. Dane po skompresowaniu i późniejszym zdekompresowaniu nie muszą być identyczne. Możliwa ze względu na działanie ludzkich zmysłów (modele psychoakustyczne, psychowizualne itp.). 6/16

7 Postacie algorytmów kodowania
Trzy podstawowe postacie: Model jest jednakowy Model wyznaczany na podstawie wstępnej analizy Model dynamicznie dostosowywany na podstawie bieżącej analizy Postacie algorytmów kodowania Statyczna Semiadaptacyjna Algorytmy kodowania są realizowane zazwyczaj w jednej z trzech podstawowych postaci: 1. Statycznej- model danych wejściowych jest jednakowy dla całej grupy zbiorów o zbliżonym charakterze; 2. Semiadaptacyjnej- model danych wejściowych jest jednakowy w obrębie całej sekwencji wejściowej, wyznaczony na podstawie wstępnej analizy danych; Adaptacyjny- model danych wejściowych jest dynamicznie dostosowany do lokalnej statystyki danych źródłowych na podstawie bieżącej analizy właściwości sekwencji danych kodowanych. Semiadaptacyjne analizują dane wejściowe przed rozpoczęciem kompresji i na ich podstawie budują drzewo Huffmana lub tworzą tablicę częstości. Adaptacyjne metody analizują dane wejściowe i aktualizują modele probabilistyczne (np. tablica częstości występowania znaków) w trakcie działania algorytmu kompresji. Adaptacyjna 7/16

8 Porównywanie metod kompresji
Współczynnik kompresji Czas kompresji Zużycie energii Porównując różne metody kompresji, często stosuje się pojęcie współczynnika kompresji wspkomp= (dl(wej) – dl(wyj))/dl(wej)*100% (1) Warto zaznaczyć, że większy współczynnik oznacza lepszą kompresję, zaś w przypadku, gdy długość wyjściowa jest większa niż wejściowa współczynnik kompresji przyjmuje wartości ujemne. 8/16

9 Kodowanie Huffmana Algorytm zaproponowany przez Davida Huffmana w 1954 roku Kody generowane przez algorytm to optymalne kody prefiksowe Założenia algorytmu: Algorytm Huffmana został zaproponowany w 1952 przez Davida Huffmana jako część rozwiązania zadania na zajęciach studenckich. Kody generowane przez ten algorytm nazywane są kodami Huffmana i są to kody prefiksowe, będące optymalnymi dla przyjętego modelu probabilistycznego [3]. Kod jest kodem prefiksowym, jeśli żadne słowo kodu nie jest przedrostkiem żadnego innego słowa kodu. Kodem optymalnym nazywamy kod, dla którego oczekiwany koszt kompresji [1] jest najmniejszy spośród wszystkich kodów dla danego rozkładu prawdopodobieństwa P. Algorytm Huffmana opiera się na dwóch własnościach optymalnych kodów prefiksowych: 1. Symbolom występującym częściej (o większym prawdopodobieństwie wystąpienia) odpowiadają w kodzie optymalnym krótsze słowa niż symbolom, występującym rzadziej. 2. Dwa najrzadziej występujące symbole mają w kodzie słowa kodowe tej samej długości. Symbolom występującym częściej odpowiadają krótsze słowa niż symbolom występującym rzadziej, Dwa najrzadziej występujące symbole mają w kodzie słowa kodowe tej samej długości, Dwa najrzadziej występujące symbole mają w kodzie słowa kodowe różniące się tylko ostatnim bitem. 9/16

10 Kodowanie arytmetyczne
Koncepcja opiera się na kodowaniu komunikatu jako liczby z przedziału {y:0≤y<1}. Znajdowanie tej liczby polega na zwiększaniu jej precyzji przez stopniowe zawężanie przedziału, przy użyciu prawdopodobieństwa aktualnie przetwarzanej litery. Koncepcja kodowania arytmetycznego opiera się na kodowaniu komunikatu jako liczby z przedziału {y: 0≤y<1}. Znajdowanie tej liczby polega na zwiększaniu jej precyzji przez stopniowe zawężanie przedziału, przy użyciu prawdopodobieństwa aktualnie przetwarzanej litery. Przyjmijmy, że wszelkie komunikaty są złożone z n liter pochodzących z alfabetu S= {x1,...,xn}, przy czym każdej literze xi odpowiada prawdopodobieństwo jej użycia pi należące do zbioru P= {p1,...,pn}. Wyznaczenia liczby y dokonuje się używając zbioru przedziałów określonych na podstawie prawdopodobieństw ze zbioru P ZP={[0,p1),[p1,p1+p2),[p1+p2,p1+p2+p3),…, [p1+…+pn-1,p1+…+pn)} (2) lub, wyrażając to względem prawdopodobieństwa kumulatywnego Pi= ∑ij=1pj ZP={[0,P1),[P1,P2),[P2,P3),…,[Pn-1,1)} (3) Przedziały te, w trakcie kodowania, określają proporcjonalny podział danego przedziału [L, R), zawartego w [0,1), na podprzedziały ZP[L,R]={{[L,L+(R-L)P1),[L+(R-L)P1, L+(R-L)P2), [L+(R-L)P2, L+(R-L)P3),…, [L+(R-L)Pn-1, L+(R-L)) (4) 10/16

11 Praktyczna implementacja
Program napisany w języku C#, w środowisku Visual Studio 2005 na urządzenia typu Pocket PC z systemem operacyjnym Windows Mobile 2003 SE Implementacja semiadaptacyjnego kodowania Huffmana oraz semiadaptacyjnego i adaptacyjnego kodowania arytmetycznego Do porównania podanych dwóch metod kompresji bezstratnej wykorzystano program implementujący semiadaptacyjne kodowanie Huffmana, semiadaptacyjne kodowanie arytmetyczne oraz adaptacyjne kodowanie arytmetyczne. Warto w tym miejscu wyjaśnić działanie semiadaptacyjnych i adaptacyjnych metod. Program implementuje jedynie algorytmy kompresji (nie zawiera algorytmów dekompresujących), a w pliku skompresowanym zawarta jest tylko reprezentacja bitowa zakodowanych danych bez uwzględnienia informacji nagłówkowych niezbędnych do dekompresji danych (m.in. drzewa Huffmana, tablicy częstości). Takie uproszczenie wprowadza pewien błąd podczas porównywania metod pod względem współczynnika kompresji. Program został napisany w środowisku Microsoft Visual Studio 2005, w języku C#, dla urządzeń przenośnych typu Pocket PC z systemem Microsoft Windows Mobile 2003 SE. 11/16

12 Porównanie algorytmów
Testy zostały wykonane przy użyciu Pocket PC- Dell Axim X30, z procesorem Intel PXA270, 32 MB pamięci RAM, baterią Li-ion (3.7V, 950 mAh), kartą pamięci SD 256MB (Kingston Elite Pro). Jako dane testowe posłużyły pliki tekstowe (*.txt i *.psw), pliki arkuszy kalkulacyjnych (*.pxl), pliki graficzne (*.bmp i *.jpg) oraz pliki muzyczne (*.wav, *.mp3),. Wszystkie pliki znajdowały się na zewnętrznej karcie pamięci. Rys. 1. Porównanie algorytmów pod względem współczynnika kompresji 12/16

13 Porównanie algorytmów
Rys.2. Zestawienie średnich czasów znormalizowanych (a) oraz średnich znormalizowanych zużyć energii (b) 13/16

14 Implementacja metod kodowania
Klasa AlgorytmHuffmana – składowe, metody oraz klasy wewnętrzne implementujące metodę Huffmana Klasa KodowanieArytmetyczne – składowe, metody oraz klasy wewnętrzne implementujące kodowanie arytmetyczne 14/16

15 Literatura [1] DROZDEK A., Wprowadzenie do kompresji danych, Warszawa, Wydawnictwa Naukowo-Techniczne, 1999, 37–75. [2] PRZELASKOWSKI A., Kompresja danych, podstawy, metody bezstratne, kodery obrazów, Warszawa, Wydawnictwo BTC, 2005, 15–152. [2] SAYOOD K., Kompresja danych- wprowadzenie, Warszawa, Wydawnictwo RM, 2002, 13–186. 15/16

16 Pytania Co to jest kompresja?
Kompresja stratna a bezstratna- podaj różnice. Wymień trzy przykłady metod kompresji bezstratnej. Co to jest współczynnik kompresji? Podaj założenia kodowania Huffmana. Na czym polega kodowanie arytmetyczne? 16/16


Pobierz ppt "Radosław Kaczyński Wrocław 2006"

Podobne prezentacje


Reklamy Google