Kompresja danych

Transkrypt

Kompresja danych
Kompresja danych
10/8/2005
Kompresja danych
Kompresja danych
Kodowanie grupowe
Kodowanie względne
Kody Huffmana
Trywialne przykłady
Kodowanie grupowe
!
Kodowanie grupowe (kodowanie długości
serii) run-length encoding daje najlepsze
wyniki, gdy kompresowane dane składają się
długich podciągów o identycznej zawartości
!
!
!
W kodach zależnych od częstości
(frequency dependent encoding) długość
ciągu bitów używanego do reprezentacji
fragmentu danych jest zależna od częstości
jego wystąpień
!
!
Im częstsze wystąpienie tym krótszy kod
Jest to przykład kodów o zmiennej
długości
!
!
!
Do przechowywania danych i/lub ich
przesyłania często niezbędne jest
zmniejszenie ich rozmiaru.
Technika realizacji tego zadnia to kompresja
danych
Istnieje wiele takich technik
!
Którą kiedy zastosować zależy od zadania
Kodowanie względne
!
Czasami informacja składa się z bloków
nieznacznie różniących się od siebie
!
!
Kodowanie sprowadza się do zastąpienia tych
podciągów kodem złożonym z informacji o
powtarzającej się wartości i liczbie powtórzeń
200 znaków A, 150 znaków B, 300 znaków C
„klasycznie” to 650 bajtów!
Kody zależne od częstości
!
!
Przykładem mogą być kolejne klatki filmu
W takiej sytuacji stosujemy kodowanie
względne (relative encoding)
!
Zapamiętujemy początkowy blok a następnie
jedynie różnice między kolejnymi blokami, a nie
całe bloki!
Kody Huffmana
!
W tekstach angielskich najczęściej
stosowane są litery e, t, e a, i
– najrzadziej z, q, x
!
!
Najczęściej występujące litery reprezentuje się
krótkimi ciągami bitów (np. połowa bajtu)
Dzięki temu tak zapamiętany tekst (plik) jest
krótszy niż klasyczne kody ASCII
Różne elementy danych reprezentuje się kodami
o różnej długości
(C)2005 R.Robert 'RoG@j' Gajewski
1
Kompresja danych
Kodowanie Lempela-Ziva
!
!
!
!
Nazwa pochodzi od nazwisk twórców tego
kodowania: Abrahama Lempela i Jacoba Ziva
Są to systemy kompresji bardzo ogólnego
przeznaczenia
Każdy, kto „zipował” pliki korzystał
nieświadomie z tego kodowania
Jest to przykład kodowania ze słownikiem
adaptacyjnym (adaptive dictionary
encoding)
Przykład słownika
!
Przykład będzie angielskojęzyczny
!
!
!
10/8/2005
Słowniki adaptacyjne
!
Słownik oznacza zbiór bloków, z których jest
zbudowany kompresowany komunikat.
!
!
!
Kompresja LZ77
!
W tekstach angielskich często występuje
końcówka ing i słowo the
Można te ciągi umieścić w słowniku i odwoływać
się do nich zamiast do pełnych ciągów
Jest to konkretny system Lempela-Ziva
!
!
Słownik może być adaptowany w czasie
trwania procesu kompresji
!
!
Przykłady bardzo trywialne
!
!
!
Wyobraź sobie obrazek (bitmapę) w postaci
czarnego punktu na białym ekranie
Wystarczy zapamiętać informację, że
wszystko jest białe, a tylko jeden punkt
czarny
Podobnie prosty jest pomysł, na
zapamiętywanie takiego samego ciągu
znaków
(C)2005 R.Robert 'RoG@j' Gajewski
Przy kompresji tekstu naturalny słownik to litery
alfabetu (znaki)
Dla kompresji danych w pamięci komputera
blokami mogą być bity 0 i 1
Słownik może się zmieniać w czasie procesu
kodowania
Kompresję rozpoczynamy od przepisania
początkowego fragmentu komunikatu bez zmian
Następnie odszukujemy najdłuższy segment,
który jest zgodny z pozostałą częścią
kompresowanego komunikatu
Będzie to wzorzec używany w pierwszej trójce
Pozostałe tworzymy w podobny sposób
Skompresowane obrazy
!
Grafiki rastrowe skompresowane do
formatów GIF lub JPG nie będą się dalej
‘kompresować”
2

Podobne dokumenty