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