Kompresja danych - Wydawnictwo BTC

Transkrypt

Kompresja danych - Wydawnictwo BTC
Spis treści
1. Wprowadzenie
1.1. Potrzeba kompresji . . . . . . . . . . . . . . . . . . . . . .
1.1.1. Świat informacji cyfrowej . . . . . . . . . . . . . .
1.1.2. Rola kompresji . . . . . . . . . . . . . . . . . . . .
1.2. Ogólna charakterystyka danych . . . . . . . . . . . . . . .
1.2.1. Ciągi danych (jednowymiarowe) . . . . . . . . . .
1.2.2. Obrazy . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3. Dane złożone . . . . . . . . . . . . . . . . . . . . .
1.3. Podstawowe pojęcia . . . . . . . . . . . . . . . . . . . . .
1.3.1. Kompresja danych . . . . . . . . . . . . . . . . . .
1.3.2. Efektywność kompresji . . . . . . . . . . . . . . . .
1.4. Paradygmaty kompresji . . . . . . . . . . . . . . . . . . .
1.4.1. Kompresja bezstratna . . . . . . . . . . . . . . . .
1.4.2. Kompresja stratna . . . . . . . . . . . . . . . . . .
1.5. Krótka historia rozwoju metod kompresji . . . . . . . . .
1.6. Kilka uwag dotyczących praktycznej realizacji algorytmów
1.6.1. Własny koder od początku . . . . . . . . . . . . .
1.6.2. Wykorzystanie użytecznych narzędzi i bibliotek . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
kompresji
. . . . . .
. . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
19
19
20
20
20
21
27
28
28
29
30
30
34
35
37
38
41
2. Teoretyczne podstawy kodowania
2.1. Podstawy teorii informacji . . . . . . . . . . . . . .
2.1.1. Modelowanie źródeł informacji . . . . . . .
2.1.2. Miary ilości informacji . . . . . . . . . . . .
2.1.3. Podstawowe twierdzenia i zasady kodowania
2.1.4. Pojęcie nadmiarowości . . . . . . . . . . . .
2.2. Wybrane przykłady metod kodowania . . . . . . .
2.2.1. Kod dwójkowy stałej długości . . . . . . . .
2.2.2. Kodowanie długości sekwencji (serii) . . . .
2.2.3. Kod Shannona . . . . . . . . . . . . . . . .
2.2.4. Transformacja Burrows-Wheelera . . . . . .
2.2.5. Kodery na bazie FSM . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
43
44
46
50
52
61
64
64
65
67
68
71
3. Kodowanie Huffmana
3.1. Efektywny kod symboli . . . . . . . . . . . . . . .
3.1.1. Metoda Shannona-Fano . . . . . . . . . . .
3.1.2. Rozwiązanie optymalne: metoda Huffmana
3.2. Realizacja kodu Huffmana . . . . . . . . . . . . . .
3.2.1. Koder adaptacyjny – koncepcja . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
75
76
76
80
84
84
12
SPIS TREŚCI
3.2.2. Koder adaptacyjny – wybrane problemy
3.2.3. Znormalizowany koder statyczny . . . .
3.3. Kod Golomba . . . . . . . . . . . . . . . . . . .
3.3.1. Kod dwójkowy prawie stałej długości . .
3.3.2. Kod unarny . . . . . . . . . . . . . . . .
3.3.3. Elementarny kod Golomba . . . . . . .
3.3.4. Charakterystyka kodu Golomba . . . . .
3.3.5. Kody przedziałowe . . . . . . . . . . . .
3.4. Podsumowanie . . . . . . . . . . . . . . . . . .
implementacji
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
88
93
97
97
99
101
103
111
112
4. Kodowanie arytmetyczne
4.1. Pomysł metody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1. Ograniczenia optymalnego kodu symboli . . . . . . . . . . . . . . . .
4.1.2. Prawdopodobieństwo wystąpienia całej kodowanej sekwencji danych
4.1.3. Koncepcja kodu arytmetycznego . . . . . . . . . . . . . . . . . . . .
4.1.4. Kodowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.5. Dekodowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.6. Efektywność . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.7. Wykorzystanie modelu źródła z pamięcią . . . . . . . . . . . . . . .
4.1.8. Historia pomysłu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Algorytmy kodera i dekodera . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Praktyczna realizacja w arytmetyce całkowitoliczbowej . . . . . . . . . . . .
4.3.1. Granice przedziału kodowego . . . . . . . . . . . . . . . . . . . . . .
4.3.2. Niedomiar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.3. Algorytmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.4. Przykładowe procedury . . . . . . . . . . . . . . . . . . . . . . . . .
4.4. Modelowanie statystyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.1. Algorytm statyczny . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.2. Algorytm adaptacyjny (dynamiczny) . . . . . . . . . . . . . . . . . .
4.4.3. Modele Markowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.4. Dynamiczne konteksty i alfabety . . . . . . . . . . . . . . . . . . . .
4.4.5. PPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.6. CTW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5. Koder binarny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.1. Algorytm podstawowy . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.2. Implementacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.3. Szybki BAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.4. Wybrane realizacje . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
113
114
114
115
116
117
118
118
119
119
119
123
123
124
124
128
131
131
131
132
136
136
138
142
143
144
150
151
5. Kodowanie słownikowe
5.1. Istota metody . . . . . . . . . . . . . . . . . . . . .
5.2. Koncepcje słownika . . . . . . . . . . . . . . . . . .
5.2.1. Statyczna . . . . . . . . . . . . . . . . . . .
5.2.2. Dynamiczna . . . . . . . . . . . . . . . . . .
5.3. Metoda LZ77 (słownik jako okno przesuwne) . . .
5.3.1. Ograniczenia efektywności . . . . . . . . . .
5.3.2. Modyfikacja LZSS . . . . . . . . . . . . . .
5.4. Metoda LZ78 (nieograniczony słownik zewnętrzny)
5.4.1. Ograniczenia efektywności . . . . . . . . . .
5.4.2. Modyfikacja LZW . . . . . . . . . . . . . .
5.5. Efektywne implementacje metod słownikowych . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
155
156
157
157
157
158
160
161
162
164
166
170
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
SPIS TREŚCI
5.5.1.
5.5.2.
5.5.3.
5.5.4.
13
Entropijne kodowanie indeksów . . . . .
Metody wykorzystujące koncepcję LZ77
Metody wykorzystujące koncepcję LZ78
Testy efektywności . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
171
171
173
173
6. Metody predykcyjne
6.1. Zagadnienie predykcji danych . . . . . . . . . . . . . . . . . . . .
6.1.1. Przewidywanie jest cechą modelowania . . . . . . . . . . .
6.1.2. Predykcja ze statystycznym modelem prawdopodobieństw
6.1.3. Predykcja z funkcją zależności danych . . . . . . . . . . .
6.2. Liniowa predykcja DPCM . . . . . . . . . . . . . . . . . . . . . .
6.2.1. Dobieranie modelu predykcji . . . . . . . . . . . . . . . .
6.3. Adaptacyjne modele predykcji . . . . . . . . . . . . . . . . . . . .
6.3.1. Adaptacja w przód . . . . . . . . . . . . . . . . . . . . . .
6.3.2. Adaptacja wstecz . . . . . . . . . . . . . . . . . . . . . . .
6.4. Predykcja w koderach obrazów . . . . . . . . . . . . . . . . . . .
6.4.1. Bezstratny JPEG . . . . . . . . . . . . . . . . . . . . . . .
6.4.2. PNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.3. Nieliniowy model predykcji MED/MAP . . . . . . . . . .
6.4.4. Model predykcji z gradientem GAP . . . . . . . . . . . .
6.4.5. Inne modele predykcji . . . . . . . . . . . . . . . . . . . .
6.4.6. Doskonalenie modeli adaptacyjnych . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
warunkowych
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
175
176
176
177
178
181
182
188
189
190
192
192
193
194
195
195
196
7. Wybrane metody bezstratnej kompresji obrazów
7.1. Przeglądanie danych . . . . . . . . . . . . . . . . . . . .
7.1.1. Przykładowe metody porządkowania pikseli . . .
7.1.2. Krzywa Hilberta . . . . . . . . . . . . . . . . . .
7.1.3. Kodowanie uporządkowanych pikseli . . . . . . .
7.1.4. Skanowanie progresywne . . . . . . . . . . . . . .
7.2. Metody predykcyjne . . . . . . . . . . . . . . . . . . . .
7.2.1. Uproszczone modele predykcji . . . . . . . . . . .
7.2.2. Ocena efektywności predykcji . . . . . . . . . . .
7.2.3. Metody interpolacyjne . . . . . . . . . . . . . . .
7.3. Dwuwymiarowe modele statystyczne źródeł informacji .
7.3.1. Modelowanie kontekstu . . . . . . . . . . . . . .
7.3.2. PPPM . . . . . . . . . . . . . . . . . . . . . . . .
7.3.3. Efektywny koder obrazów . . . . . . . . . . . . .
7.4. Charakterystyka standardu JPEG-LS . . . . . . . . . .
7.4.1. Kodowanie sekwencji próbek identycznych . . . .
7.4.2. Nieliniowa predykcja w JPEG-LS . . . . . . . . .
7.4.3. Modelowanie kontekstu w JPEG-LS . . . . . . .
7.4.4. Binarne kodowanie błędu predykcji . . . . . . . .
7.5. Opis metody CALIC . . . . . . . . . . . . . . . . . . . .
7.5.1. Predykcja heurystyczna . . . . . . . . . . . . . .
7.5.2. Optymalizacja kontekstu modelu statystycznego
7.5.3. Algorytm kompresji . . . . . . . . . . . . . . . .
7.6. Metody falkowe . . . . . . . . . . . . . . . . . . . . . . .
7.6.1. Falkowa dekompozycja obrazów . . . . . . . . . .
7.6.2. Transformacje całkowitoliczbowe . . . . . . . . .
7.6.3. Realizacje za pomocą liftingu . . . . . . . . . . .
7.6.4. Algorytm kompresji . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
197
198
198
200
202
204
207
208
210
212
214
215
217
218
218
219
219
220
221
222
222
225
228
229
230
230
235
237
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
SPIS TREŚCI
7.7. Binarne kodowanie obrazów . . . . . . . . . . . . . . . . . .
7.7.1. Obrazy czarno-białe . . . . . . . . . . . . . . . . . .
7.7.2. Obrazy wielopoziomowe . . . . . . . . . . . . . . . .
7.7.3. Standard JBIG . . . . . . . . . . . . . . . . . . . . .
7.8. Testy efektywności bezstratnych metod kompresji obrazów .
7.9. Bezstratna kompresja sekwencji obrazów . . . . . . . . . . .
7.10. Metody hybrydowe (złożone) . . . . . . . . . . . . . . . . .
7.10.1. Standard JBIG2 . . . . . . . . . . . . . . . . . . . .
7.10.2. CREW . . . . . . . . . . . . . . . . . . . . . . . . .
7.10.3. Format DjVu . . . . . . . . . . . . . . . . . . . . . .
7.11. Rzecz idzie o szybkość i funkcjonalność, czyli podsumowanie
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
239
239
240
241
241
246
249
249
249
250
251