Title: Bezstratna kompresja obraz
1Bezstratna kompresja obrazów
2Bezstratna kompresja obrazów
- Przeglad pojec i metod
- Proste algorytmy kompresji obrazów
- Algorytm Lossless JPEG
- Algorytm JPEG-LS
- Inne popularne algorytmy (JBIG, JBIG II, GIF,
PNG)
3Obraz cyfrowy
- Obraz cyfrowy jest dyskretna reprezentacja
naturalnego obrazu otrzymana w wyniku procesu
akwizycji badz wygenerowana w sposób sztuczny.
Obraz najczesciej jest reprezentowany komputerowo
jest jako prostokatna tablica pikseli - Piksel, jako element obrazu cyfrowego,
reprezentuje odpowiadajacy mu fragment
powierzchni obrazu rzeczywistego. Praktycznie
piksel to wektor dyskretnych wartosci
skladowych barwy fragmentu powierzchni obrazu - Ze wzgledu na liczbe skladowych piksela oraz
sposób ich reprezentacji i interpretacji obrazy
cyfrowe dzielimy na kilka klas obrazów
4Klasy obrazów cyfrowych
binarny w stopniach szarosci barwny
5Klasy obrazów cyfrowych
- Obrazy binarne piksel to bit
- 0 czarny, 1 bialy
- Obrazy w stopniach szarosci piksel jest
nieujemna liczba calkowita - Zakres wartosci piksela (liczba stopni szarosci,
liczba poziomów jasnosci) na ogól nie przekracza
216 - Przez obraz o glebi jasnosci N bitów na piksel
rozumiec bedziemy obraz o liczbie stopni szarosci
2N - Zwykle 0 czarny, 2N 1 bialy
-
6Klasy obrazów cyfrowych
- Obrazy barwne piksel to 3-elementowy lub
4-elementowy wektor skladowch obrazu w danej
przestrzeni barw - RGB
- YCrCb
- HSV
- ... i inne
- Obrazy k-spektralne (lub multispektralne)
- piksel to k-elementowy wektor, jego poszczególne
skladowe opisuja jasnosc obrazu w róznych
zakresach spektrum elektromagnetycznego (np.
podczerwien, zakresy widzialne) - obrazy satelitarne moga miec kilkadziesiat
skladowych - obraz RGB jest obrazem multispektralnym
- obrazy YCrCb, HSV nie sa obrazami
multispektralnymi
7Klasy obrazów cyfrowych
- Obrazy z paleta barw piksel to pojedyncza
nieujemna liczba calkowita interpretowana jako
numer barwy z pewnej palety barw. - W odróznieniu od pozostalych klas, dla obrazów z
paleta barw przyjmuje sie, iz nie ma
bezposredniego zwiazku pomiedzy wartoscia piksela
a jasnoscia, nasyceniem ani barwa elementu obrazu
- Obrazy binarne i obrazy z paleta barw czesto
pozyskiwane sa jako odpowiednio obrazy w
stopniach szarosci oraz barwne, a nastepnie
przeksztalcane - dithering
- progowanie
8Cechy obrazów cyfrowych
- Obraz jest 2D
- Naturalne obrazy zawieraja szum
- Rozmiar alfabetu zródla jest duzy (dla stopni
szarosci typowo 256 do 65536, dla obrazów
barwnych 16777216 do 281474976710656 ) - kosztowne staje sie stosowanie zwyklych modeli
danych (tym bardziej dla wyzszych rzedów modelu) - problemy z adaptacja modelu
- Barwa wiekszosci pikseli typowego obrazu jest
zblizona do barwy pikseli go otaczajacych
9Kompresja obrazów cyfrowych
- Dla obrazów konstruujemy specjalizowane algorytmy
kompresji - algorytmy uniwersalne nie sprawdzaja sie
- nie wykorzystuja cech charakterystycznych obrazów
- stosujemy je, lecz jako element bardziej
zlozonego algorytmu - kompresja stratna obrazów (za tydzien)
- wykorzystuje cechy charakterystyczne obrazów i
zmyslu wzroku czlowieka - wizualnie bezstratne
- diagnostycznie bezstratne
- dlaczego i kiedy stosujemy?
- dlaczego (i kiedy) nie?
10Kompresja obrazów cyfrowych
- Dla obrazów konstruujemy specjalizowane algorytmy
kompresji - dodatkowe przydatne cechy algorytmów
- (podstawowe to byly wspólczynnik i zlozonosci)
- kodowanie progresywne/hierarchiczne
- podzial obrazu na poziomy rozdzielczosci,
kodowane od najmniejszej - kodowanie piramidowe gdy rozdzielczosc poziomów
rosnie w obu kierunkach - algorytmy LPL (lossy plus lossless)
- kodowanie obszarów zainteresowania
- dostep swobodny do wybranego fragmentu
obrazu(czyli dekodowanie czesci obrazu bez
dekodowania calosci)
11Proste algorytmy kompresji obrazów (starsze)
- Kodowanie dlugosci sekwencji
- Kodowanie konturowe
- Kodowanie drzewiaste
-
12Kodowanie dlugosci sekwencji
- obraz przegladamy w kolejnosci rastrowej (lub
innej), tzw. linearyzacja - ciag pikseli kodujemy algorytmem RLE
- stosowany w formacie .TIFF
13Kodowanie konturowe
- obraz dzielimy na tzw. kontury, czyli spójne
obszary skladajace sie z jednakowych pikseli,
kodujemy zbiór opisów konturów - opis danego konturu zawiera informacje o barwie
pikseli konturu, polozeniu konturu w obrazie oraz
ksztalcie konturu, zadanym przez krawedz konturu
opisana tzw. kodem lancuchowymPPDDDLLLGPGGPraw
o Prawo Dól ...
P P D
G D
P G D
G L L L
14Kodowanie drzewiaste
- Obraz reprezentowany jest przez drzewo czwórkowe
- Korzen drzewa to caly obraz
- Dany wezel odpowiada prostokatnemu fragmentowi
obrazu - Jezeli wszystkie piksele tego fragmentu sa
identyczne, to wezel jest lisciem, w którym
pamieta sie barwe pikseli - W przeciwnym przypadku wezel ma 4 synów, kazdy z
nich opisuje dokladnie jedna cwiartke obrazu
odpowiadajacego temu wezlowi
15Proste algorytmy kompresji obrazów (starsze)
- Kodowanie dlugosci sekwencji
- Kodowanie konturowe
- Kodowanie drzewiaste
- Inne ...
- Stosowane przede wszystkim dla rysunków i
prostych obrazów o malej liczbie barw, obrazów
binarnych - Ciag symboli opisujacy obraz zakodowany z uzyciem
tych metod zwykle nadaje sie do dalszej kompresji
za pomoca algorytmów statystycznych badz
slownikowych
16Nowoczesne metody kompresji obrazów
- Algorytmy predykcyjne
- na podstawie
- modelu obrazu
- juz przetworzonej czesci obrazu
- znanego otoczenia danego piksela
- spróbuj przewidziec barwe piksela (predykcja)
- kompresuj blad predykcji (róznice miedzy
przewidziana i rzeczywista barwa) - Algorytmy transformacyjne, kodowanie podpasmowe
- obraz przeksztalc odpowiednia transformata (DCT,
DWT) - kodowania predykcyjnego nie uznaje sie za
kodowanie transformacyjne - kompresuj macierz wspólczynników transformaty
- stosowane glównie w algorytmach stratnych
17Predykcja
- Rozklad prawdopodobienstwa jasnosci pikseli
typowego obrazu jest mniej-wiecej równomierny - Po predykcji typowo otrzymujemy ciag symboli
(zwany residuum) o rozkladzie Laplacea
(symetryczny rozklad wykladniczy) - latwiej kodowac (Golomb, Golomb-Rice)
- latwiej modelowac(nawet dla duzego alfabetu)
- lepsze wspólczynniki
18Algorytm Lossless JPEG
- Komitet JPEG
- powolany w 1986 z inicjatywy organizacji ISO,
CCITT oraz IEC aby opracowac standardowy algorytm
kompresji obrazów, po kilku latach opracowano 2
standardy - tzw JPEG ? popularny do dzis transformacyjny
algorytm kompresji stratnej - Lossless JPEG ? adaptacyjny algorytm bezstratny,
przeznaczony do kompresji obrazów w stopniach
szarosci o glebiach jasnosci 2-16 bitów na piksel
(Lossless JPEG to zaadaptowany algorytm Sunset,
opracowany w latach 80. przez Langdona, Rissanena
Todda)Langdon, G. Gulati, A. Seiler, E. On
the JPEG model for lossless image compression.
Proceedings DCC'92, 1992, pp. 172-80
19Algorytm Lossless JPEG ? predykcja
- Obraz przegladamy w kolejnosci rastrowej
- Dokonujemy predykcji jednym z 8 predyktorów
zdefiniowanych w standardzie - uzyj ten sam predyktor dla calego obrazu
- mozna wypróbowac wszystkie predyktory i wybrac
najlepszy -
20Algorytm Lossless JPEG ? modelowanie
- Kontekstem dla PX Pred(X) ? bledu predykcji
piksela X sa bledy predykcji sasiadów górnego PB
i lewego PA - Konteksty zgrupowano w kubelki
- metoda zastosowana pierwszy raz w algorytmie
sunset - ograniczenie zlozonosci pamieciowej (w Lossless
JPEG 25 kubelków) - lepsza adaptacjaproblem rozmycia kontekstu
(context dilution)
21Algorytm Lossless JPEG ? kodowanie
- Do wyboru
- arytmetyczny koder entropijny (QM-coder) z
kontekstowym modelem danych - koder Huffmana z modelem bezpamieciowym
- predefiniowana rodzina kodów
22Algorytm JPEG-LS
- Nowy standard komitetu JPEG dla bezstratnej
kompresji obrazów - ITU-T ISO/IEC Information technology Lossless
and near-lossless compression of continuous-tone
still images Baseline. ITU-T Recommendation
T.87 and ISO/IEC International Standard 14495-1,
June 1999. - Z roku 1999, nastepca algorytmu Lossless JPEG,
wyloniony w drodze konkursu (ogloszonego w 1996)
oparty o algorytm LOCO-I (Weinberger, Seroussi,
Sapiro, 1996) - Weinberger, M. J. Seroussi G. Sapiro G.
LOCO-I A low complexity, context-based, lossless
image compression algorithm. Proceedings DCC'96,
IEEE Comput. Soc. Press, Los Alamitos,
California, 1996, pp. 140-9. - Weinberger M. J., Seroussi G., Sapiro G. The
LOCO-I lossless image compression algorithm
Principles and standardization into JPEG-LS. IEEE
Trans. Image Processing, August 2000, Vol. 9(8),
pp. 1309-24.
23Algorytm JPEG-LS ? predykcja
- Predyktor nieliniowy
- wykrywanie krawedzi poziomych i pionowych
- predyktor prosty lecz skuteczny
- PredMED(X) median(A, B, A B C)
- if C max(A B)
- PredMED(X) min(A B)
- else if C min(A B)
- PredMED(X) max(A B)
- else
- PredMED(X) A B - C
24Algorytm JPEG-LS ? kodowanie
- Dla obrazu o glebi N bitów
- jasnosc piksela X jest w zakresie 0, 2N 1
- blad predykcji Rp XPred(X) jest w zakresie
2N 1, 2N 1 - ale dla danej wartosci predyktora mozliwych jest
tylko 2N wartosci bledu predykcji - mozna zatem wykonywac obliczenia w arytmetyce
modulo 2N - kodowanie Rm ( XPred(X) ) mod 2N
- dekodowanie X ( RmPred(X) ) mod 2N
- w JPEG-LS obliczenia modulo w przedziale
2N1, 2N1 1 - operacja zaburza rozklad po dekorelacji
- ale zaburza dla typowych obrazów nieznacznie
- unikamy ekspansji alfabetu
25Algorytm JPEG-LS ? kodowanie
- Do kodowania zastosowano zmodyfikowana rodzine
kodów Ricea, przeznaczona dla rozkladu
wykladniczego (a nie rozkladu Laplacea) - Konieczne jest mapowanie bledów predykcji
- kolejnosc 0, 1, 1, 2, 2, 3, 3 ...
26Algorytm JPEG-LS ? kodowanie
- Zastosowano zmodyfikowana rodzine kodów Ricea
- dlugosc kodu ograniczona (do 32 dla glebi obrazu
8 bitów) - (przyklad /nastepny slajd/ dla glebi 4
ograniczenie do 8 bitów) - dlaczego ograniczamy dlugosci slów kodowych?
27Algorytm JPEG-LS ? kodowanie
28Algorytm JPEG-LS ? modelowanie
- Kontekst wyznaczony na podstawie trzech tzw.
gradientów - ?1 D B, ?2 B C, ?3 C A
- Konteksty zgrupowano w 365 kubelków
29Algorytm JPEG-LS ? modelowanie
- Model dedykowany dla rodziny kodów Ricea
- Aby wyznaczyc parametr k kodu Ricea dla kazdego
z kontekstów wystarczy pamietac liczbe bledów
predykcji S oraz sume bledów predykcji A,
nastepnie - k min k 2k S A
- for ( k0 (Sltltk)ltA k )
- Okresowe dzielenie liczników
-
30Algorytm JPEG-LS ? udoskonalenia
- Korekta wartosci sredniej bledu predykcji
- Dla calego obrazu bledy predykcji maja rozklad
Laplacea o wartosci sredniej 0 - Ale lokalnie dla poszczególnych kontekstów
wartosc srednia jest jedynie bliska 0 - Dla kazdego kubelka adaptacyjnie szacuje sie ?X,
czyli wartosc srednia bledu predykcji i przed
kodowaniem przeprowadza korekte kodujemy X
PredMED(X) ?X -
31Algorytm JPEG-LS ? udoskonalenia
- Obszary o stalej jasnosci
- W obrazach, zwlaszcza nie-naturalnych, wystepuja
obszary o stalej jasnosci - Dla takich obszarów
- modele projektowane dla typowych obrazów nie
sprawdzaja sie dobrze - kody przedrostkowe sa nieefektywne(nie
osiagniemy wspólczynnika lepszego niz 1 bit na
piksel) - Mozna wykrywac takie obszary i kodowac je
odmiennie niz reszte obrazu, w JPEG-LS - gdy ?1 ?2 ?3 0 to przechodzimy do
odmiennego trybu kodowania, tzw. run mode - ... i kodujemy pojedynczym slowem kodowym liczbe
kolejnych pikseli o takiej samej jasnosci
32Algorytm JPEG-LS
- Cechy
- predykcyjny
- dosc prosty/szybki
- wspólczynniki kompresji zblizone do najlepszych
- jest wariant prawie bezstratny (nearly
lossless) - jest wiele rozszerzen, w tym rozszerzenie o
wiekszej zlozonosci i lepszych wspólczynnikach
oparte na kodowaniu arytmetycznym
33Inne algorytmy ? obrazy binarne
- CCITT Group 3 (1985)
- standard dla faksów, nadal stosowany
- kodowanie dlugosci sekwencji bialych i czarnych
pikseli obrazu przegladanego w porzadku rastrowym
- dlugosc sekwencji kodowana za pomoca
predefiniowanych kodów przedrostkowych - CCITT Group 4
- uwzgledniamy poprzedni wiersz, kodujemy róznice
- wystepuje niebezpieczenstwo propagacji bledu,
gdyztransmisja faksowa odbywa sie przez kanal z
szumem - co kilka wierszy kodujemy wiersz algorytmem CCITT
Group 3
34Inne algorytmy ? obrazy binarne
- JBIG
- adaptacyjny koder arytmetyczny (QM-Coder)
- kontekst zbudowany z 10-12 juz przetworzonych
pikseli (zatem mamy 1024-4096 kontekstów) - tryb progresywny piramidowy
- obraz w nizszej rozdzielczosci tworzony jest
przez usrednienie bloków 2x2 piksele obrazu
wyzszej rozdzielczosci - konieczne bylo zdefiniowanie sposobu usredniania
bloków zawierajacych po 2 piksele biale i czarne - przy kodowaniu obrazu w wyzszej rozdzielczosci
kontekst zawiera równiez piksele obrazu nizszej
rozdzielczosci
35Inne algorytmy ? obrazy binarne
- JBIG2
- znacznie rozszerzony algorytm JBIG
- kilka trybów kodowania
- algorytmy ze specyfikacji CCITT 3 i 4
- kodowanie arytmetyczne z JBIG
- kodowanie slownikowe (slownik symboli-bitmap)
dla kompresji tekstów i póltonów - rózne fragmenty obrazu moga byc kodowane róznymi
metodami - standard definiuje dekompresor (tylko
dekompresor) - dopuszcza sie kompresje stratna
- koder wybiera jak i które metody zastosowac
36Inne algorytmy ? obrazy w stopniach szarosci
- Algorytmy JBIG stosuje sie równiez do obrazów w
stopniach szarosci po rozbiciu tych obrazów na
plaszczyzny bitowedla naturalnego kodu binarnego
lub dla kodu Graya -
- 000
- 001
- 011
- 010
- 110
- 111
- 101
- 100
- unsigned gray binary (binary gtgt 1) //
to xor - slowa kodowe kolejnych liczb róznia sie
dokladnie jednym bitem odleglosc Hamminga dla
dwóch kolejnych slów wynosi 1
37Inne algorytmy ? obrazy w stopniach szarosci
- CALIC (X. Wu i N. Memon 1996)
- algorytm predykcyjny, w którym po linearyzacji w
kolejnosci rastrowej, ciag bledów predykcji
kompresuje sie arytmetyczne lub koderem Huffmana - algorytm uzyskuje wysokie wspólczynniki
kompresji, jest uznawany za nieoficjalny standard
pod tym wzgledem - istnieja algorytmy lepsze, dla typowych obrazów
uzyskuja o kilka procent lepsze wspólczynniki i
kilka (lub nawet kilkaset) razy mniejsza predkosc - w porównaniu do JPEG-LS, CALIC uzyskuje o kilka
procent lepsze wspólczynniki i 2-5 razy mniejsza
predkosc
38Inne algorytmy ? obrazy w stopniach szarosci
39Inne algorytmy ? obrazy barwne
- W obrazach RGB poszczególne skladowe obrazu sa na
ogól silnie skorelowane. Wiekszosc algorytmów
radzi sobie z tym nastepujaco - przeprowadza transformacje obrazu do innego
modelu barw, uzyskujac nowy, mniej nadmiarowy
zbiór skladowych piksela, - YCrCb
- YC1C2
- KLT/PCA
- koduje poszczególne skladowe (np. predykcyjnie)
- niezaleznie od pozostalych skladowych
- lub uzywajac juz zakodowanych skladowych do
polepszenia modelowania dla kodowanej skladowej
40Inne algorytmy ? obrazy barwne
- Transformacja przestrzeni barw obrazu do innego
modelu, uzyta w algorytmie bezstratnym musi byc
odwracalna - skladowe po transformacji zaokraglamy do liczb
calkowitych - Odwracalna transformacja YC1C2 (z JPEG2000)
- jest tez wersja bez ekspansji alfabetu w
arytmetyce modulo z rozszerzonego standardu
JPEG-LS
41Inne algorytmy ? obrazy z paleta
- GIF
- poczatkowo wewnetrzny standard opracowanym przez
siec CompuServe - do kompresji obrazów z paleta do 256 barw, oparty
o LZW - opatentowany
- dodatkowe elementy
- seria obrazów (animacja)
- progresywny schemat kompresji obrazu, który
polega na linearyzacji obrazu w porzadku z
przeplotem (najpierw co 8 wiersz obrazu
poczynajac od wiersza 0, po czym co 8 wiersz
poczynajac od wiersza 4, nastepnie co 4 wiersz
poczynajac od 2 wiersza i ostatecznie co 2 wiersz
poczynajac od wiersza 1)
42Inne algorytmy ? obrazy z paleta
- PNG
- algorytm predykcyjny (4 predyktory do wyboru)
oparty o kodowanie slownikowe LZ77 i kody
Huffmana (z ograniczona dlugoscia slowa kodowego
lub predefiniowane) - wolny od patentów standard WWW Consortium,
przeznaczony dla - obrazów z paleta barw
- obrazów barwnych i obrazów w stopniach szarosci o
glebi jasnosci do 16 bitów na piksel (jednak
tutaj nie dorównuje JPEG-LS ani pod wzgledem
wspólczynnika ani szybkosci) - tryb progresywny doskonalszy niz w algorytmie GIF
43Ciekawostka
- Obrazy o rzadkich histogramach
- tu PNG moze by lepszy od JPEG-LS i CALIC
44Ciekawostka
- Pakowanie histogramów (histogram packing)
- wymaga zakodowania oryginalnego histogramu
- moze poprawic wspólczynnik o kilkadziesiat procent