Top Banner
Bezstratna kompresja obrazów
44

Bezstratna kompresja obrazów

Feb 12, 2016

Download

Documents

Duncan

Bezstratna kompresja obrazów. Bezstratna kompresja obrazów. P rzegląd pojęć i metod Proste algorytmy kompresji obrazów Algorytm Lossless JPEG Algorytm JPEG-LS Inne popularne a lgorytmy ( JBIG, JBIG II , GIF, PNG ). Obraz cyfrowy. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Bezstratna kompresja obrazów

Bezstratna kompresja obrazów

Page 2: Bezstratna kompresja obrazów

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)

Page 3: Bezstratna kompresja obrazów

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

Page 4: Bezstratna kompresja obrazów

Klasy obrazów cyfrowych

binarny w stopniach szarości

barwny

Page 5: Bezstratna kompresja obrazów

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

Page 6: Bezstratna kompresja obrazów

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

Page 7: Bezstratna kompresja obrazów

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

Page 8: Bezstratna kompresja obrazów

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 16777216 do 281474976710656 ) 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

Page 9: Bezstratna kompresja obrazów

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?

Page 10: Bezstratna kompresja obrazów

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)

Page 11: Bezstratna kompresja obrazów

Proste algorytmy kompresji obrazów (starsze)

Kodowanie długości sekwencji

Kodowanie konturowe

Kodowanie drzewiaste

Page 12: Bezstratna kompresja obrazów

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

Page 13: Bezstratna kompresja obrazów

Kodowanie konturowe 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:

PPDDDLLLGPGGPrawo Prawo Dół ...

P P DG D

P G DG L L L

Page 14: Bezstratna kompresja obrazów

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

Page 15: Bezstratna kompresja obrazów

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

Page 16: Bezstratna kompresja obrazów

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

Page 17: Bezstratna kompresja obrazów

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

Page 18: Bezstratna kompresja obrazów

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

1. tzw „JPEG” ― popularny do dziś transformacyjny algorytm kompresji stratnej

2. 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. 172-80

Page 19: Bezstratna kompresja obrazów

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

Page 20: Bezstratna kompresja obrazów

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 adaptacjaproblem „rozmycia kontekstu” (context dilution)

Page 21: Bezstratna kompresja obrazów

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

Page 22: Bezstratna kompresja obrazów

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 14495-1, 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. 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.

Page 23: Bezstratna kompresja obrazów

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

Page 24: Bezstratna kompresja obrazów

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”

Page 25: Bezstratna kompresja obrazów

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 ...

Page 26: Bezstratna kompresja obrazów

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?

Page 27: Bezstratna kompresja obrazów

Algorytm JPEG-LS ― kodowanie

Page 28: Bezstratna kompresja obrazów

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

DX A

C B

Page 29: Bezstratna kompresja obrazów

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

Page 30: Bezstratna kompresja obrazów

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

Page 31: Bezstratna kompresja obrazów

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

Page 32: Bezstratna kompresja obrazów

Algorytm JPEG-LS

Cechypredykcyjnydość prosty/szybkiwspół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

Page 33: Bezstratna kompresja obrazów

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

Page 34: Bezstratna kompresja obrazów

Inne algorytmy ― obrazy binarne

JBIG adaptacyjny koder arytmetyczny (QM-Coder) kontekst zbudowany z 10-12 już przetworzonych pikseli

(zatem mamy 1024-4096 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

Page 35: Bezstratna kompresja obrazów

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ć

Page 36: Bezstratna kompresja obrazów

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 bitowedla naturalnego kodu binarnego lub dla kodu Graya

000001011010110111101100

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

Page 37: Bezstratna kompresja obrazów

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ść

Page 38: Bezstratna kompresja obrazów

Inne algorytmy ― obrazy w stopniach szarości

6.5

7.0

7.5

8.0

8.5

9.0

9.5

0.0 10.0 20.0 30.0 40.0 50.0

Prędkość kompresji [MB/s]

Wsp

ółcz

ynni

k [b

pp]

SZIP

SFALIC

CALIC-A

JPEG2000CALIC-H JPEG-LS

Lossless JPEG

PNG

Page 39: Bezstratna kompresja obrazów

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

Page 40: Bezstratna kompresja obrazów

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

Page 41: Bezstratna kompresja obrazów

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)

Page 42: Bezstratna kompresja obrazów

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

Page 43: Bezstratna kompresja obrazów

Ciekawostka

Obrazy o rzadkich histogramach tu PNG może by lepszy od JPEG-LS i CALIC

Zwykły (nie-rzadki) histogram

poziom jasności

liczb

a pi

ksel

i

Rzadki histogram

poziom jasności

liczb

a pi

ksel

i

Page 44: Bezstratna kompresja obrazów

Ciekawostka

Pakowanie histogramów (histogram packing) wymaga zakodowania oryginalnego histogramu może poprawić współczynnik o kilkadziesiąt procent

Rzadki histogram

poziom jasności

liczb

a pi

ksel

i

Spakowany rzadki histogram

poziom jasności

liczb

a pi

ksel

i