Wstęp do Informatyki - Wykład 4 Kompresja danych
Czy można skompresować informację? Zgodnie z naszą dotychczasową wiedzą, ilość informacji zależy wyłącznie od prawdopodobieństwa jej wystąpienia. Oznacza to, że nie ma możliwości zmiany jej ilości bez zmiany samej informacji.
Czy można skompresować informację? W przypadku danych, czyli zakodowanych informacji, można stosować różne kody. Jak wiemy, różne kody mogą mieć różną redundancję. Algorytm tłumaczenia danego kodu na kod o mniejszej redundancji nazywamy algorytmem kompresji bezstratnej.
Kompresja Istnieje także inne rozwiązanie - można dany kod zastąpić kodem, który jest podobny (według pewnej przyjętej miary) i oferuje znacznie niższą redundancję. Technika ta nosi nazwę kompresji stratnej.
Stopień kompresji Stopniem kompresji danych (ang. data compression rate) nazywamy stosunek rozmiaru danych przed kompresją do rozmiaru danych skompresowanych. Im lepsze jest działanie algorytmu kompresji, tym lepszy stopień kompresji. Stopień kompresji obliczany jest zawsze dla konkretnych danych, nie dla algorytmu. Algorytmy kompresji specjalizują się w konkretnym typie danych.
Kompresja danych tekstowych - RLE Algorytm Run-length Encoding nadaje się do kompresowania danych, w których występują powtarzalne sekwencje bitów. Sekwencje te zamieniane są na dane typu [sekwencja][liczba powtórzeń]
Kompresja danych tekstowych Algorytm kodowania Huffmana jest często wykorzystywany do kompresji danych tekstowych. Podobnie jak RLE, jest on przykładem kompresji bezstratnej.
Kompresja danych tekstowych Algorytm Lempel-Ziv (nazwa pochodzi od nazwisk autorów) został opracowany pod koniec lat 70-tych ubiegłego wieku. Istnieją dwie wersje tego algorytmu LZ77 (zwany też LZ1) oraz LZ78 (LZ2) Algorytm LZ tworzy słownik słów kodowych dla sekwencji bitów występujących w danych wejściowych.
Kompresja danych tekstowych Popularne algorytmy kompresji tekstu: DEFLATE – łączy Lempel-Ziv z kodowaniem Huffmana, używane w ZIP, gzip oraz do obrazów PNG Lempel–Ziv–Markov chain (LZMA) – bardzo wysoki stopień kompresji, używany w 7zip i w xz Lempel–Ziv–Oberhumer (LZO) – zoptymalizowany pod kątem szybkości pakowania/rozpakowywania, kosztem stopnia kompresji Lempel–Ziv–Storer–Szymanski (LZSS) – używany w WinRAR
Kompresja obrazów Do najpopularniejszych algorytmów kompresji obrazów zaliczamy: JPEG PNG GIF
Kompresja obrazów - JPEG Nazwa pochodzi od Joint Photographic Experts Group Najbardziej powszechny format zapisu obrazów w fotografii oraz na stronach WWW
Kompresja obrazów - JPEG Jakość i stopień kompresji mogą być regulowane (zdjęcie pochodzi z Wikipedii):
Kompresja obrazów - JPEG Algorytm JPEG bazuje na dyskretnej transformacie kosinusowej i jest algorytmem kompresji stratnej. W dużym uogólnieniu, jego zadaniem jest uśrednianie tych fragmentów obrazu, które wykazują niewielką zmienność kolorów (kwantyzacja). W wyniku tej operacji powstają charakterystyczne plamy.
Kompresja obrazów - PNG PNG (Portable Network Graphics) stosuje kompresję bezstratną dzięki algorytmowi DEFLATE. Obsługuje wiele parametrów graficznych, w tym kanał alfa. Oferuje bardzo wysoki stopień kompresji.
Kompresja wideo Algorytmy kompresji wideo są realizowane przez programy zwane popularnie kodekami. Jeden algorytm może być realizowany przez wiele kodeków. Kodeki bezstratne: FFv1: Napisany przez Michael’a Niedermayer, opublikowany jako część FFmpeg na licencji GNU GPL Huffyuv: szybki kodek Windowsowy, napisany przez Bena Rudiak-Gould (GNU GPL) Lagarith: Nowsza wersja Huffyuv YULS x264 (w trybie bezstratnym)
Kompresja wideo Kodeki algorytmu MPEG-4 Part 2/MPEG-4 ASP DivX Pro Codec: Zamknięty kodek DivX, Inc. Xvid: Darmowa implementacja MPEG-4 ASP FFmpeg MPEG-4: dołączony do biblioteki libavcoded, używanej w wielu aplikacjach linuksowych 3ivx: Komercyjny kodek opracowany przez firmę 3ivx Technologies
Kompresja wideo Kodeki algorytmu H.264/MPEG-4 AVC x264: implementacja na licencji GPL; wyłącznie kodowanie Nero Digital: Komercyjna implementacja MPEG-4 ASP i AVC, stworzona przez Nero AG QuickTime H.264: Implementacja H.264 przez Apple DivX Pro Codec: Koder i dekoder H.264 został dodany w wersji 7
Dziękuję za uwagę!