Kompresja – metoda reprezentowania danych w zwartej postaci Po co stosować kompresję?
• oszczędzamy miejsce, pieniądze, czas transmisji, itp.
• wyszukiwanie w tekście skompresowanym odpowiednim algorytmem może być szybsze niż wyszukiwanie w oryginalnym tekście („tekst”
rozumiany szeroko, np. jako kod DNA)
Kompresja „intuicyjnie” – alfabet Morse’a
Kompresja „naukowo” –
http://cm.bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf
Źródła
analogowe:
termometr, barometr, struny głosowe, instrumenty muzyczne
Źródła cyfrowe:
klawiatura , telegraf
Zalety:
Wady:
RLE (ang. Run Length Encoding)
1) Znajdź w sekwencji fragmenty powtarzających się symboli (serie) 2) Każdą serię o długości min.2 zamień na podwójne wystąpienie
powtarzanego symbolu i długość serii (nie trzeba już wliczać do niej tych 2 symboli)
Pierwszy opis – Golomb (1966) Zastosowania:
- niektóre formaty graficzne (np. PCX, TIFF)
- część składowa niektórych bardziej skomplikowanych algorytmów kompresji
•Gotowe zestawy danych testowych - korpusy
•Własne dane testowe
Dane testowe
•Współczynnik kompresji
•Prędkość kompresji
•Prędkość dekompresji
Kryteria oceny jakości kompresji
•Wiele kryteriów
• Trudno wybrać jeden najlepszy algorytm
Problem
Stopień kompresji
•Stosunek rozmiaru pliku przed kompresją do rozmiaru pliku po kompresji, np. 4:1
Współczynnik kompresji
•Wyrażony w procentach stosunek rozmiaru pliku po kompresji do rozmiary pliku przed kompresją, np. 75%
Średnia bitowa
•Stosunek rozmiaru pliku po kompresji wyrażonego w bitach do rozmiaru pliku przed kompresją wyrażonego w symbolach (np. bajtach), np. 2.56 bit/symbol
Czym są korpusy?
Są to zestawy danych testowych stosowane do oceny efektywności kompresji.
Są przygotowane przez naukowców zajmujących się daną dziedziną i są stosowane w publikacjach wielu autorów.
Po co je stosujemy?
Dają możliwość porównania różnych metod kompresji bez konieczności implementowania wszystkich.
Możemy w trakcie prowadzenia badań zorientować się, jak nasz algorytm wypada na tle innych
Zalety:
• duża popularność – stosowany w wielu publikacjach
• łatwość porównywania z algorytmami, dla których są wyniki dla tego korpusu
Wady:
• trochę przestarzały (niektóre pliki są w formatach dziś już nie
stosowanych)
• małe rozmiary plików
• brak plików we współczesnych formatach
Zalety:
• dane o większych rozmiarach
• lepsze odzwierciedlenie typów danych obecnie kompresowanych
Wady:
• mała popularność
• współczynniki kompresji często znane tylko dla niektórych metod
• źle dobrane dane (np. korpus Canterbury)
Metody specjalizowane:
• lepszy współczynnik kompresji
• potrzeba stworzenia
algorytmu dla konkretnych danych
• koszty opracowania
algorytmu mogą przewyższyć zyski z jego stosowania
Metody uniwersalne:
• gorszy współczynnik kompresji (często tylko nieznacznie)
• możliwość stosowania
jednego algorytmu dla danych różnych typów
Przykład metody specjalizowanej
Metody stratne:
• po dekompresji nie
otrzymujemy dokładnie tego, co kompresowaliśmy
• lepsze współczynniki kompresji
• ograniczony zakres zastosowań
Metody bezstratne:
• po dekompresji
otrzymujemy dokładnie to, co kompresowaliśmy
• gorsze współczynniki kompresji
• szeroki zakres zastosowań
Metody stratne: Metody bezstratne:
Może zawsze kompresować stratnie?
Definicja
Istnieje zbiór zdarzeń A={a1, a2 … an} nazywany alfabetem. Elementy tego zbioru nazywamy symbolami.
Elementy zbioru A są używane do konstruowania sekwencji (komunikatów), tzn. sekwencja składa się z symboli.
Dla każdego symbolu ai znane jest prawdopodobieństwo p(ai) jego otrzymania, takie, że
n
i
a
ip
1
1 )
(
Definicja
Autoinformacja (informacja) związana z wygenerowaniem symbolu ai, którego prawdopodobieństwo wystąpienia wynosi p(ai ), jest określana jako:
l ( a
i) log
k p(1a )log
kp ( a
i)
i
Jednostka, w której mierzona jest autoinformacja, zależy od podstawy logarytmu:
k =2 –bit (ang. bit [binary digit]) k = e – nat (ang. nat [natural digit])
k = 10 – hartley (od nazwiska Ralpha Hartleya, jednego z pionierów teorii informacji) Domyślnie będziemy przyjmowali
jednostkę bit, a domyślną podstawą logarytmów będzie 2.
Definicja
Autoinformacja (informacja) związana z wygenerowaniem symbolu ai, którego prawdopodobieństwo wystąpienia wynosi p(ai ), jest określana jako:
) (
log log
)
( a
i k p(1a ) kp a
il
i
Przykład rzutu monetą: Przykład rzutu fałszywą monetą:
Definicja
Entropia stowarzyszona ze zbiorem n niezależnych zdarzeń A={a1, a2 … an}
i ze zbiorem prawdopodobieństw ich zajścia P={p(a1, p(a2 ), … p(an )}
jest definiowana jako
) ( log )
( )
( ) ( )
(
1 1
i n
i
i n
i
i
i
l a p a p a
a p a
H
Definicja
Entropia
( ) ( ) ( ) ( ) log ( )
1 1
i n
i
i n
i
i
i
l a p a p a
a p a
H
Przykład rzutu monetą Przykład rzutu fałszywą monetą
Entropia – wykres dla alfabetu binarnego
Cechy funkcji entropii:
• Funkcja ciągła
• Funkcja symetryczna
• Dolne ograniczenie: 0 bit
• Górne ograniczenie : log(n) bit
Definicja
Entropia stowarzyszona ze zbiorem n niezależnych zdarzeń A={a1, a2 … an}
i ze zbiorem prawdopodobieństw ich zajścia P={p(a1, p(a2 ), … p(an )}
jest definiowana jako
) ( log )
( )
( ) ( )
(
1 1
i n
i
i n
i
i
i
l a p a p a
a p a
H
Eksperyment Pewne źródło generuje symbole ai ze zbioru A Entropia
eksperymentu Entropia wyrażona w bitach jest miarą określającą średnią liczbę symboli binarnych potrzebnych do zakodowania ciągu utworzonego z symboli kolejno wygenerowanych przez źródło
Okazuje się, że najlepszym wynikiem, jaki można otrzymać, stosując kompresję bezstratną, jest zakodowanie sekwencji symboli tak, aby średnia liczba bitów przypadająca na symbol była równa entropii źródła.
Wynik Shannona
Definicja
Entropia źródła S generującego ciąg symboli należących do alfabetu wynosi:
gdzie:
Jeśli wszystkie elementy mają rozkład identyczny i niezależny, to
Mamy wtedy entropię pierwszego rzędu źródła
lub entropię zerowego rzędu
Komentarz:
Co wiemy o entropii źródła?
Przykład.
Dana jest sekwencja symboli:
1,1,2,3,4,5,6,5,6,7,8,8,9,8,9,10 Obliczymy entropię pierwszego rzędu:
p(1)=p(5)=p(6)=p(9)=2/16 p(2)=p(3)=p(4)=p(7)=p(10)=1/16
p(8)=3/16
Jeśli pomiędzy symbolami istnieje korelacja, to ją usuwamy, zastępując wartość symboli różnicą między nimi:
1,0,1,1,1,1,-1,1,1,1,0,1,-1,1,1 p(-1)=2/16,
p(0)=2/16, p(1)=12/16
Czym jest model?
Modelem ciągu nazywamy założenia dotyczące korelacji pomiędzy kolejnymi symbolami
Modelowanie - pierwszy etap kompresji (wydobywanie informacji o redundacji i występującej w danych i zapisywanie jej za pomocą
modelu)
Kodowanie – drugi etap kompresji (kodowanie opisu modelu oraz informacji o tym, jak dane odbiegają od niego)
Modelowanie - pierwszy etap kompresji (wydobywanie informacji o redundacji i występującej w danych i zapisywanie jej za pomocą
modelu)
Model: nic nie wiemy o źródle i zakładamy, że każdy symbol jest generowany z jednakowym prawdopodobieństwem.
Model jest niewiele wart, bo nie pozwala na
uzyskanie jakiejkolwiek kompresji (ale może się zdarzyć, że opisuje źródło dokładnie
Model probabilistyczny: dla każdego symbolu znamy prawdopodobień- stwo jego występowania, przy czym nie zależy ono od poprzednio
wygenerowanych symboli
Jeśli prawdopodobieństwa wygenerowania symboli są niezależne, to model jest bardzo dobry i
pozwala na konstrukcję całkiem wydajnych kodów.
Definicja
Wiedza o ostatnich k symbolach jest równoważna wiedzy o całej historii procesu.
Definicja
Dla alfabetu rozmiaru m liczba stanów wynosi mk Najczęstszym modelem jest model
Markowa pierwszego rzędu: