170 likes | 765 Views
Kompresja bezstratna. Radosław Kaczyński Wrocław 2006. Spis zagadnień. Wprowadzenie Kompresja bezstratna i kompresja stratna Metody kompresji bezstratnej Postacie algorytmów kodowania Efektywność kompresji Kodowanie Huffmana Kodowanie arytmetyczne Praktyczna implementacja metod. 2 /16.
E N D
Kompresja bezstratna Radosław Kaczyński Wrocław 2006
Spis zagadnień • Wprowadzenie • Kompresja bezstratna i kompresja stratna • Metody kompresji bezstratnej • Postacie algorytmów kodowania • Efektywność kompresji • Kodowanie Huffmana • Kodowanie arytmetyczne • Praktyczna implementacja metod 2/16
Wprowadzenie • Kompresja- wstęp • Kompresja danych to proces przekształcenia pierwotnej reprezentacji sekwencji danych w reprezentację o mniejszej liczbie bitów. • Kompresja- zastosowania 3/16
Kompresja bezstratna • Kompresja bezstratna (kodowanie)- typ kompresji nie dopuszczający utraty wiadomości. • Dane po skompresowaniu i późniejszym zdekompresowaniu są identyczne. 4/16
Metody kompresji bezstratnej • Kodowanie Huffmana • Kodowanie arytmetyczne • Kodowanie słownikowe • Kodowanie predykcyjne 5/16
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
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 Adaptacyjna 7/16
Porównywanie metod kompresji • Współczynnik kompresji • Czas kompresji • Zużycie energii 8/16
Kodowanie Huffmana • Algorytm zaproponowany przez Davida Huffmana w 1954 roku • Kody generowane przez algorytm to optymalne kody prefiksowe • Założenia algorytmu: • 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
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. 10/16
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 semiadaptacyjnegoi adaptacyjnego kodowania arytmetycznego 11/16
Porównanie algorytmów Rys. 1. Porównanie algorytmów pod względem współczynnika kompresji 12/16
Porównanie algorytmów Rys.2. Zestawienie średnich czasów znormalizowanych (a)oraz średnich znormalizowanych zużyć energii (b) 13/16
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
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
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