Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Bezstratna kompresja obrazów
2
Bezstratna kompresja obrazów
Przegląd pojęć i metod Proste algorytmy kompresji obrazów Algorytm Lossless JPEG Algorytm JPEG-LS Inne popularne algorytmy (JBIG, JBIG II, GIF, PNG)
3
Obraz cyfrowy Obraz cyfrowy jest dyskretną reprezentacją naturalnego obrazu otrzymaną w wyniku procesu akwizycji bądź wygenerowaną w sposób sztuczny. Obraz najczęściej jest reprezentowany komputerowo jest jako prostokątna tablica pikseli Piksel, jako element obrazu cyfrowego, reprezentuje odpowiadający mu fragment powierzchni obrazu rzeczywistego. Praktycznie piksel to wektor dyskretnych wartości — składowych barwy fragmentu powierzchni obrazu Ze względu na liczbę składowych piksela oraz sposób ich reprezentacji i interpretacji obrazy cyfrowe dzielimy na kilka klas obrazów
4
Klasy obrazów cyfrowych
binarny w stopniach szarości barwny
5
Klasy obrazów cyfrowych
Obrazy binarne — piksel to bit 0 — czarny, 1 — biały Obrazy w stopniach szarości — piksel jest nieujemną liczbą całkowitą Zakres wartości piksela (liczba stopni szarości, liczba poziomów jasności) na ogół nie przekracza 216 Przez obraz o głębi jasności N bitów na piksel rozumieć będziemy obraz o liczbie stopni szarości 2N Zwykle: 0 — czarny, 2N – 1 — biały
6
Klasy obrazów cyfrowych
Obrazy barwne — piksel to 3-elementowy lub 4-elementowy wektor składowch obrazu w danej przestrzeni barw RGB YCrCb HSV ... i inne Obrazy k-spektralne (lub multispektralne) piksel to k-elementowy wektor, jego poszczególne składowe opisują jasność obrazu w różnych zakresach spektrum elektromagnetycznego (np. podczerwień, zakresy widzialne) obrazy satelitarne mogą mieć kilkadziesiąt składowych obraz RGB jest obrazem multispektralnym obrazy YCrCb, HSV nie są obrazami multispektralnymi
7
Klasy obrazów cyfrowych
Obrazy z paletą barw — piksel to pojedyncza nieujemna liczba całkowita interpretowana jako numer barwy z pewnej palety barw. W odróżnieniu od pozostałych klas, dla obrazów z paletą barw przyjmuje się, iż nie ma bezpośredniego związku pomiędzy wartością piksela a jasnością, nasyceniem ani barwą elementu obrazu Obrazy binarne i obrazy z paletą barw często pozyskiwane są jako odpowiednio obrazy w stopniach szarości oraz barwne, a następnie przekształcane dithering progowanie
8
Cechy obrazów cyfrowych
Obraz jest 2D Naturalne obrazy zawierają szum Rozmiar alfabetu źródła jest duży (dla stopni szarości typowo 256 do 65536, dla obrazów barwnych do ) kosztowne staje się stosowanie zwykłych modeli danych (tym bardziej dla wyższych rzędów modelu) problemy z adaptacją modelu Barwa większości pikseli typowego obrazu jest zbliżona do barwy pikseli go otaczających
9
Kompresja obrazów cyfrowych
Dla obrazów konstruujemy specjalizowane algorytmy kompresji algorytmy uniwersalne nie sprawdzają się nie wykorzystują cech charakterystycznych obrazów stosujemy je, lecz jako element bardziej złożonego algorytmu kompresja stratna obrazów (za tydzień) wykorzystuje cechy charakterystyczne obrazów i zmysłu wzroku człowieka „wizualnie bezstratne” „diagnostycznie bezstratne” dlaczego i kiedy stosujemy? dlaczego (i kiedy) nie?
10
Kompresja obrazów cyfrowych
Dla obrazów konstruujemy specjalizowane algorytmy kompresji dodatkowe przydatne cechy algorytmów (podstawowe to były: współczynnik i złożoności) kodowanie progresywne/hierarchiczne podział obrazu na poziomy rozdzielczości, kodowane od najmniejszej kodowanie „piramidowe” gdy rozdzielczość poziomów rośnie w obu kierunkach algorytmy LPL (lossy plus lossless) kodowanie obszarów zainteresowania dostęp swobodny do wybranego fragmentu obrazu (czyli dekodowanie części obrazu bez dekodowania całości)
11
Proste algorytmy kompresji obrazów (starsze)
Kodowanie długości sekwencji Kodowanie konturowe Kodowanie drzewiaste
12
Kodowanie długości sekwencji
obraz przeglądamy w kolejności rastrowej (lub innej), tzw. linearyzacja ciąg pikseli kodujemy algorytmem RLE stosowany w formacie .TIFF
13
Kodowanie konturowe P D G L
obraz dzielimy na tzw. kontury, czyli spójne obszary składające się z jednakowych pikseli, kodujemy zbiór opisów konturów opis danego konturu zawiera informacje o barwie pikseli konturu, położeniu konturu w obrazie oraz kształcie konturu, zadanym przez krawędź konturu opisaną tzw. kodem łańcuchowym: PPDDDLLLGPGG Prawo Prawo Dół ... P D G L
14
Kodowanie drzewiaste Obraz reprezentowany jest przez drzewo czwórkowe
Korzeń drzewa to cały obraz Dany węzeł odpowiada prostokątnemu fragmentowi obrazu Jeżeli wszystkie piksele tego fragmentu są identyczne, to węzeł jest liściem, w którym pamięta się barwę pikseli W przeciwnym przypadku węzeł ma 4 synów, każdy z nich opisuje dokładnie jedną ćwiartkę obrazu odpowiadającego temu węzłowi
15
Proste algorytmy kompresji obrazów (starsze)
Kodowanie długości sekwencji Kodowanie konturowe Kodowanie drzewiaste Inne ... Stosowane przede wszystkim dla rysunków i prostych obrazów o małej liczbie barw, obrazów binarnych Ciąg symboli opisujący obraz zakodowany z użyciem tych metod zwykle nadaje się do dalszej kompresji za pomocą algorytmów statystycznych bądź słownikowych
16
Nowoczesne metody kompresji obrazów
Algorytmy predykcyjne na podstawie modelu obrazu już przetworzonej części obrazu znanego otoczenia danego piksela spróbuj przewidzieć barwę piksela (predykcja) kompresuj błąd predykcji (różnicę między przewidzianą i rzeczywista barwą) Algorytmy transformacyjne, kodowanie podpasmowe obraz przekształć odpowiednią transformatą (DCT, DWT) kodowania predykcyjnego nie uznaje się za kodowanie transformacyjne kompresuj macierz współczynników transformaty stosowane głównie w algorytmach stratnych
17
Predykcja Rozkład prawdopodobieństwa jasności pikseli typowego obrazu jest mniej-więcej równomierny Po predykcji typowo otrzymujemy ciąg symboli (zwany residuum) o rozkładzie Laplace’a (symetryczny rozkład wykładniczy) łatwiej kodować (Golomb, Golomb-Rice) łatwiej modelować (nawet dla dużego alfabetu) lepsze współczynniki
18
Algorytm Lossless JPEG
Komitet JPEG powołany w 1986 z inicjatywy organizacji ISO, CCITT oraz IEC aby opracować standardowy algorytm kompresji obrazów, po kilku latach opracowano 2 standardy tzw „JPEG” ― popularny do dziś transformacyjny algorytm kompresji stratnej Lossless JPEG ― adaptacyjny algorytm bezstratny, przeznaczony do kompresji obrazów w stopniach szarości o głębiach jasności 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
19
Algorytm Lossless JPEG ― predykcja
Obraz przeglądamy w kolejności rastrowej Dokonujemy predykcji jednym z 8 predyktorów zdefiniowanych w standardzie użyj ten sam predyktor dla całego obrazu można wypróbować wszystkie predyktory i wybrać najlepszy
20
Algorytm Lossless JPEG ― modelowanie
Kontekstem dla PX = Pred(X) ― błędu predykcji piksela X są błędy predykcji sąsiadów górnego PB i lewego PA Konteksty zgrupowano w kubełki metoda zastosowana pierwszy raz w algorytmie sunset ograniczenie złożoności pamięciowej (w Lossless JPEG 25 kubełków) lepsza adaptacja problem „rozmycia kontekstu” (context dilution)
21
Algorytm Lossless JPEG ― kodowanie
Do wyboru arytmetyczny koder entropijny (QM-coder) z kontekstowym modelem danych koder Huffmana z modelem bezpamięciowym predefiniowana rodzina kodów
22
Algorytm 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 , June 1999. Z roku 1999, następca algorytmu Lossless JPEG, wyłoniony w drodze konkursu (ogłoszonego 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 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
23
Algorytm JPEG-LS ― predykcja
Predyktor nieliniowy wykrywanie krawędzi 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; X A C B
24
Algorytm JPEG-LS ― kodowanie
Dla obrazu o głębi N bitów jasność piksela X jest w zakresie [0, 2N – 1] błąd predykcji Rp = X–Pred(X) jest w zakresie [–2N + 1, 2N – 1] ale dla danej wartości predyktora możliwych jest tylko 2N wartości błędu predykcji można zatem wykonywać obliczenia w arytmetyce modulo 2N kodowanie: Rm = ( X–Pred(X) ) mod 2N dekodowanie: X = ( Rm+Pred(X) ) mod 2N w JPEG-LS obliczenia „modulo” w przedziale [–2N–1, 2N–1 – 1] operacja zaburza rozkład po dekorelacji ale zaburza dla typowych obrazów nieznacznie unikamy „ekspansji alfabetu”
25
Algorytm JPEG-LS ― kodowanie
Do kodowania zastosowano zmodyfikowaną rodzinę kodów Rice’a, przeznaczoną dla rozkładu wykładniczego (a nie rozkładu Laplace’a) Konieczne jest mapowanie błędów predykcji kolejność: 0, –1, 1, –2, 2, –3, 3 ...
26
Algorytm JPEG-LS ― kodowanie
Zastosowano zmodyfikowaną rodzinę kodów Rice’a długość kodu ograniczona (do 32 dla głębi obrazu 8 bitów) (przykład /następny slajd/ dla głębi 4 ograniczenie do 8 bitów) dlaczego ograniczamy długości słów kodowych?
27
Algorytm JPEG-LS ― kodowanie
28
Algorytm JPEG-LS ― modelowanie
Kontekst wyznaczony na podstawie trzech tzw. „gradientów” γ1 = D – B, γ2 = B – C, γ3 = C – A Konteksty zgrupowano w 365 kubełków D X A C B
29
Algorytm JPEG-LS ― modelowanie
Model dedykowany dla rodziny kodów Rice’a Aby wyznaczyć parametr k kodu Rice’a dla każdego z kontekstów wystarczy pamiętać liczbę błędów predykcji S oraz sumę błędów predykcji A, następnie: k = min{ k’ | 2k’ S ≥ A } for ( k=0; (S<<k)<A; k++ ); Okresowe dzielenie liczników
30
Algorytm JPEG-LS ― udoskonalenia
Korekta wartości średniej błędu predykcji Dla całego obrazu błędy predykcji mają rozkład Laplace’a o wartości średniej 0 Ale lokalnie dla poszczególnych kontekstów wartość średnia jest jedynie bliska 0 Dla każdego kubełka adaptacyjnie szacuje się ∆X, czyli wartość średnią błędu predykcji i przed kodowaniem przeprowadza korektę kodujemy: X – PredMED(X) – ∆X
31
Algorytm JPEG-LS ― udoskonalenia
Obszary o stałej jasności W obrazach, zwłaszcza nie-naturalnych, występują obszary o stałej jasności Dla takich obszarów modele projektowane dla typowych obrazów nie sprawdzają się dobrze kody przedrostkowe są nieefektywne (nie osiągniemy współczynnika lepszego niż 1 bit na piksel) Można wykrywać takie obszary i kodować je odmiennie niż resztę obrazu, w JPEG-LS: gdy γ1 = γ2 = γ3 = 0 to przechodzimy do odmiennego trybu kodowania, tzw. „run mode” ... i kodujemy pojedynczym słowem kodowym liczbę kolejnych pikseli o takiej samej jasności
32
Algorytm JPEG-LS Cechy predykcyjny dość prosty/szybki
współczynniki kompresji zbliżone do najlepszych jest wariant „prawie bezstratny: (nearly lossless) jest wiele rozszerzeń, w tym rozszerzenie o większej złożoności i lepszych współczynnikach oparte na kodowaniu arytmetycznym
33
Inne algorytmy ― obrazy binarne
CCITT Group 3 (1985) standard dla faksów, nadal stosowany kodowanie długości sekwencji białych i czarnych pikseli obrazu przeglądanego w porządku rastrowym długość sekwencji kodowana za pomocą predefiniowanych kodów przedrostkowych CCITT Group 4 uwzględniamy poprzedni wiersz, kodujemy różnice występuje niebezpieczeństwo propagacji błędu, gdyż transmisja faksowa odbywa się przez kanał z szumem co kilka wierszy kodujemy wiersz algorytmem CCITT Group 3
34
Inne algorytmy ― obrazy binarne
JBIG adaptacyjny koder arytmetyczny (QM-Coder) kontekst zbudowany z już przetworzonych pikseli (zatem mamy kontekstów) tryb progresywny „piramidowy” obraz w niższej rozdzielczości tworzony jest przez uśrednienie bloków 2x2 piksele obrazu wyższej rozdzielczości konieczne było zdefiniowanie sposobu uśredniania bloków zawierających po 2 piksele białe i czarne przy kodowaniu obrazu w wyższej rozdzielczości kontekst zawiera również piksele obrazu niższej rozdzielczości
35
Inne algorytmy ― obrazy binarne
JBIG2 znacznie rozszerzony algorytm JBIG kilka trybów kodowania algorytmy ze specyfikacji CCITT 3 i 4 kodowanie arytmetyczne z JBIG kodowanie słownikowe (słownik symboli-bitmap) – dla kompresji tekstów i półtonów różne fragmenty obrazu mogą być kodowane różnymi metodami standard definiuje dekompresor (tylko dekompresor) dopuszcza się kompresję stratna koder wybiera jak i które metody zastosować
36
Inne algorytmy ― obrazy w stopniach szarości
Algorytmy JBIG stosuje się również do obrazów w stopniach szarości po rozbiciu tych obrazów na płaszczyzny bitowe dla naturalnego kodu binarnego lub dla kodu Graya 000 001 011 010 110 111 101 100 unsigned gray = binary ^ (binary >> 1); // ^ to xor słowa kodowe kolejnych liczb różnią się dokładnie jednym bitem odległość Hamminga dla dwóch kolejnych słów wynosi 1
37
Inne algorytmy ― obrazy w stopniach szarości
CALIC (X. Wu i N. Memon 1996) algorytm predykcyjny, w którym po linearyzacji w kolejności rastrowej, ciąg błędów predykcji kompresuje się arytmetyczne lub koderem Huffmana algorytm uzyskuje wysokie współczynniki kompresji, jest uznawany za nieoficjalny standard pod tym względem istnieją algorytmy lepsze, dla typowych obrazów uzyskują o kilka procent lepsze współczynniki i kilka (lub nawet kilkaset) razy mniejszą prędkość w porównaniu do JPEG-LS, CALIC uzyskuje o kilka procent lepsze współczynniki i 2-5 razy mniejszą prędkość
38
Inne algorytmy ― obrazy w stopniach szarości
39
Inne algorytmy ― obrazy barwne
W obrazach RGB poszczególne składowe obrazu są na ogół silnie skorelowane. Większość algorytmów radzi sobie z tym następująco: przeprowadza transformację obrazu do innego modelu barw, uzyskując nowy, mniej nadmiarowy zbiór składowych piksela, YCrCb YC1C2 KLT/PCA koduje poszczególne składowe (np. predykcyjnie) niezależnie od pozostałych składowych lub używając już zakodowanych składowych do polepszenia modelowania dla kodowanej składowej
40
Inne algorytmy ― obrazy barwne
Transformacja przestrzeni barw obrazu do innego modelu, użyta w algorytmie bezstratnym musi być odwracalna składowe po transformacji zaokrąglamy do liczb całkowitych Odwracalna transformacja YC1C2 (z JPEG2000) jest też wersja bez „ekspansji alfabetu” w arytmetyce modulo z rozszerzonego standardu JPEG-LS
41
Inne algorytmy ― obrazy z paletą
GIF początkowo wewnętrzny standard opracowanym przez sieć CompuServe do kompresji obrazów z paletą do 256 barw, oparty o LZW opatentowany dodatkowe elementy seria obrazów (animacja) progresywny schemat kompresji obrazu, który polega na linearyzacji obrazu w porządku z przeplotem (najpierw co 8 wiersz obrazu poczynając od wiersza 0, po czym co 8 wiersz poczynając od wiersza 4, następnie co 4 wiersz poczynając od 2 wiersza i ostatecznie co 2 wiersz poczynając od wiersza 1)
42
Inne algorytmy ― obrazy z paletą
PNG algorytm predykcyjny (4 predyktory do wyboru) oparty o kodowanie słownikowe LZ77 i kody Huffmana (z ograniczoną długością słowa kodowego lub predefiniowane) wolny od patentów standard WWW Consortium, przeznaczony dla obrazów z paletą barw obrazów barwnych i obrazów w stopniach szarości o głębi jasności do 16 bitów na piksel (jednak tutaj nie dorównuje JPEG-LS ani pod względem współczynnika ani szybkości) tryb progresywny doskonalszy niż w algorytmie GIF
43
Ciekawostka Obrazy o rzadkich histogramach
tu PNG może by lepszy od JPEG-LS i CALIC
44
Ciekawostka Pakowanie histogramów (histogram packing)
wymaga zakodowania oryginalnego histogramu może poprawić współczynnik o kilkadziesiąt procent
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.