Algorytmy kodowania predykcyjnego 1. Zasada kodowania 2. Algorytm JPEG-LS 3. Algorytmy CALIC, LOCO-I 4. Algorytmy z wielokrotn rozdzielczoci. Progresywna transmisja obrazów
Algorytmy kodowania predykcyjnego
1. Zasada kodowania2. Algorytm JPEG-LS3. Algorytmy CALIC, LOCO-I4. Algorytmy z wielokrotn� rozdzielczo�ci�.
Progresywna transmisja obrazów
Kompresja obrazów - zestawienie
1.24 : 11.12 : 152 64358 374Miasto
1.93 : 11.62 : 133 88040 543Ziemia
1.70 : 11.07 : 138 54161 4302_ch
1.99 : 11.14 : 132 96857 5041_ch
St. kompr.Huffman ró�nice
St. kompr.Huffman
Huffman ró�nice
HuffmanObraz
Algorytmy koduj�ce ró�nice wyra�nie lepsze.
Jaki jest tego powód ?
Zasada kodowanie predykcyjnego
� Im bardziej zró�nicowane prawdopodobie�stwa wyst�pienia symboli tym wi�ksz� kompresj� mo�na uzyska�
� Przykład 1: alfabet dwuznakowy, prawdopodobie�stwa p, q; p + q = 1.
Entropia H = -p log2 p – (1-p) log2 (1-p)
Entropia osi�ga maksimum gdy
P = q = 0.5, minimum gdy p lub
q � 1
Zasada kodowanie predykcyjnego – c.d.
Przykład 2 – alfabet o�mioznakowy:
1.6260.0010.010.050.4390.4390.050.010.001
2.2281/1284/12816/12843/12843/12816/1284/1281/128
2.8111/161/163/163/163/163/161/161/16
31/81/81/81/81/81/81/81/8
Ha8a7a6a5a4a3a2a1
Im bardziej zró�nicowane prawdopodobie�stwa, tym mniejsza entropia, czyli mniejsza �rednia bitowa.
Zasada kodowanie predykcyjnego – c.d.
� Jak osi�gn�� tak� sytuacj�?
� U�y� odwracalnego przekształcenia transformuj�cego ci�g wej�ciowy na ci�g o zró�nicowanych prawdopodobie�stwach
� U�ywa� innego rozkładu prawdopodobie�stwa dla ka�dego symbolu, by zwi�kszy� prawdopodobie�stwo wyst�pienia kodowanego symbolu (kontekst)
� Zadba�, by dekoder bez �adnej dodatkowej informacji „wiedział” jakiej transformacji lub jakiego rozkładu u�yto � przekształcenie odwrotne lub rozkład b�dzie do odtworzenia bez �adnych dodatkowych informacji (np. na podstawie znajomo�ci wcze�niej zakodowanych elementów).
� Tak działaj�ce algorytmy = algorytmy kodowania predykcyjnego.
Kodowanie przedykcyjne – przykład
� Przykład – kodowanie ró�nic:� Predykcja : xn = xn-1
� Transformacja: xn � en = xn – xn
� Rozkład ró�nic bardziej zró�nicowany – kompresja• Przykład: plik 2_ch, fragment (8 x 16 pikseli)
Rozkład oryginalnych zmiennych:
68827252911133
747372717069686766
Rozkł�d ró�nic
3221141227442452
4544434243210-1-2-3
Dekodowanie – odkodowanie en , nast�pnie wyliczenie xn –transformacja odwracalna.
Algorytm JPEG-LS
� Dla ka�dego piksela – liniowa predykcja w oparciu o warto�ci 3 s�siednich pikseli
� 8 mo�liwych schematów predykcji� Bł�dy predykcji kodujemy algorytmem entropijnym
XA
BC
(A + B)/2P7
B + (A – C)/2P6
A + (B – C)/2P5
A + B – CP4
CP3
BP2
AP1
bez predykcjiP0
FormułaNr Uwaga:(0,0) – zawsze P0(0,i) – zawsze P1(i,0) – zawsze P2
Algorytm JPEG-LS – c.d.Wyniki:
52 18952 54253 52053 77153 90951 28348 81856 061Miasto
32 67233 07233 05733 57034 08932 13732 29538 295Ziemia
36 42835 96533 46332 42943 44537 12641 29858 3062_ch
32 17933 06329 74231 05538 26131 55937 22053 4311_ch
P7P6P5P4P3P2P1P0Obraz
• Na ogół – dla ró�nych obrazów optymalne ró�ne metody
• Kodowanie predykcyjne wyra�nie lepsze od metod słownikowych
• Je�eli nie kodujemy w czasie rzeczywistym – próbujemy wszystkie schematy, wybieramy optymalny (informacja w nagłówku)
• Dla grafiki komputerowej metody słownikowe mog� by� lepsze
Algorytm CALIC
� CALIC = Context Adaptive Lossless Image Compression� Zaproponowany w 1995 jako propozycja nowego
standardu ISO/JPEG� U�ywa kontekstu do okre�lenia predykcji jak te� rozkładu
prawdopodobie�stwa w czasie kodowania� Najlepsza z istniej�cych metod bezstratnej kompresji
obrazów naturalnych� Przy kodowaniu ka�dego punktu korzysta z informacji o
otoczeniu:
XWWW
NENNW
NNENN X – kodowany piksel
Pozostałe piksele znane koderowi i dekoderowi w momencie kodowania X
Algorytm CALIC - schemat
Główne etapy algorytmu:� Predykcja wst�pna (wykrycie kraw�dzi – gradienty)� Korekta predykcji wst�pnej zale�na od kontekstu� Obliczenie bł�du predykcji; odwzorowanie na zakres równy naturalnej
zmienno�ci piksela� Kodowanie bł�du predykcji w sposób zale�ny od kontekstu
Predykcja wst�pnadh = |W – WW| + |N – NW| + | NE – N|dv = |W – NW| + |N – NN| + |NE – NNE|
dv >> dh � kraw�d� pozioma, najlepsza aproksymacja X to Wdh >> dv � kraw�d� pionowa, najlepsza aproksymacja X to NNie ma wyra�nych ró�nic � aproksymujemy �redni� wa�on� otoczenia
Algorytm CALIC – predykcja
IF (dv – dh > 80) {ostra kraw�d� pozioma}PX = W
ELSE IF (dh – dv > 80) {ostra kraw�d� pozioma}PX = N
ELSE {PX = (W+N)/2 + (NE – NW)/2IF (dv – dh > 32) {kraw�d� pozioma}
PX = (PX + W)/2ELSE IF (dv – dh > 8) {słaba kraw�d� pozioma}
PX = (3 PX + W)/4ELSE IF (dh – dv > 32) {kraw�d� pionowa}
PX = (PX + N)/2ELSE IF (dh – dv > 8) {słaba kraw�d� pionowa}
PX = (3 PX + N)/4}
Algorytm CALIC – korekta predykcji
Korekta zale�na od kontekstu
� Predykcja gradientowa nie usuwa całej redundancji� Musimy uwzgl�dni� dodatkowe informacje o wzajemnych relacjach
mi�dzy X a otoczeniem – kontekst� Definicja kontekstu:
Y = {N, W, NW, NE, NN, WW, 2 N – NN, 2 W – WW}Kwantyzacja: Yi < PX � Yi = 0 w przeciwnym razie Yi = 1To daje 144 mo�liwe wektory binarneDodatkowo: = dh + dv + 2 |N – PN|, kwantyzacja na przedziałyTo daje w sumie 4 * 144 = 576 mo�liwych kontekstów
� Podczas kodowania zapami�tujemy bł�d kodowania dla ka�dego piksela, wyznaczamy �redni bł�d w danym kontek�cie – to pozwala dokona� korekty predykcji zale�nej od kontekstu:
PX = PX + <e(Y, )>
Algorytm CALIC – kodowanie bł�du
Wyznaczenie bł�du predykcji i kodowanie
� Wyznaczmy bł�d predykcji: e = PX – X� X, PX – liczby z zakresu 0 ... M – 1 � e mo�e by� pomi�dzy –(M – 1)
a M – 1. � Przed zakodowaniem algorytm dokonuje transformacji e do przedziału
0 .. M – 1 � W trakcie kodowania bierzemy pod uwag� kontekst wyznaczony tym
razem przez – kwantyzowane w 8 przedziałach (osiem kontekstów kodowania)
� Od kontekstu kodowania zale�y wybór alfabetu (alfabety o małej długo�ci, kodowanie rekurencyjne.
Podsumowanie:CALIC to dobry, ale bardzo zło�ony algorytm – potrzeba znalezienia
podobnie skutecznego, ale prostszego schematu.
Algorytm LOCO-I
� LOCO-I = Low Complexity Lossless Compression for Images
� Zaproponowany w 1996 przez grup� z HP� Jest podstaw� dla aktualnej wersji JPEG-LS� Schemat podobny do CALIC:
� Wst�pna predykcja� Wyznaczenie kontekstu, korekta predykcji� Obliczenie bł�du predykcji, odwzorowanie na naturalny zakres� Kodowanie (dynamiczne kody Golomba)
� Informacja o otoczeniu:
XW
NENNW X – kodowany piksel
Algorytm LOCO-I – c.d.
Wst�pna predykcjaZadana przez algorytm:IF NW max(W, N)
PX = max(W, N)ELSE{
IF NW � min(W, N)PX = min(W, N)
ELSEPX = N + W – NW
}
Wst�pna predykcja jest poprawiana w zale�no�ci od kontekstu opartego o:
D1 = NE – N D2 = N – NW D3 = NW – W
Algorytm LOCO-I – c.d.
Okre�lenie kontekstu� Wybór trzech dodatnich współczynników T1 < T2 < T3 u�ywanych
do kwantyzacji składowych Di
� Wyznaczenie składowych wektora kontekstu Q Di � - T3 => Qi = -4
-T3 < Di � - T2 => Qi = -3-T2 < Di � - T1 => Qi = -2-T1 < Di < 0 => Qi = -1
Di = 0 => Qi = 00 < Di � T1 => Qi = 1T1 < Di � T2 => Qi = 2T2 < Di � T3 => Qi = 3
T3 < Di => Qi = 4
� Uto�samienie Q i –Q gdy Q1 < 0 (wtedy SIGN = -1). To daje (9*9*9 + 1) /2 = 365 ró�nych kontekstów
Algorytm LOCO-I – c.d.
Korekta predykcji zale�ne od kontekstu
PX = PX + SIGN * < e(Q)>
Wyznaczenie bł�du predykcji, transformacja i kodowanie• e = X – PX• Transformacja odchylenia
e < -M/2 => e = e + Me > M/2 => e = e - M
• Kodowanie odchylenia – dynamiczne kodowanie Golomba (optymalne dla kodowania du�ych liczb o rozkładzie geometrcznym).
Metody predykcyjne - podsumowanie
1.36:148 2491.29:150 765 1.34:148 818Miasto
2.59:125 2802.51:126 0882.04:132 137Ziemia
2.24:129 2132.16:130 3442.02:132 4292_ch
2.48:126 4332.40:127 3392.11:131 0551_ch
CALICNowy JPEG
Stary JPEG
Obraz
� Metody predykcyjne – najlepsze metody bezstratnej kompresji obrazów
� LOCO-I – wyra�nie lepszy od „starego” JPEG, nieznacznie słabszy od CALIC – nowy standard JPEG-LS
� Maksymalne stopnie kompresji < 3:1 – konieczno�� poprawy – kompresja stratna
Techniki z wieloma poziomami rozdzielczo�ci
• Metody, w których tworzone i kodowane s� kolejno reprezentacje obrazów o ró�nych poziomach rozdzielczo�ci
• Najbardziej znana metoda: HINT (Hierachical Interpolation)
Kolejno�� kodowania:
• punkty �
• punkty
• punkty X
• punkty *
• punkty �
Progresywna transmisja obrazów
• Polega na przesyłaniu przez sie� obrazów z coraz lepszymi rozdzielczo�ciami
• Stosowana przy konieczno�ci przegl�dania du�ych obrazów przez sie� o niskiej przepustowo�ci
• Pozwala na szybsze zorientowanie si� w zawarto�ci obrazu
PrzykładU�ytkownik ma znale�� 1 spo�ród 30 obrazów o rozdzielczo�ci 1024 x 1024 poprzez sie� o przepustowo�ci 56 kbps. Przejrzenie całej bazy –8 x 1024 x 1024/56 000 sek > 1 h. 1 przybli�enie – bloki 8 x 8 reprezentowane jedn� warto�ci� – jeden obraz transmitowany przez < 2.5 sek, pełna baza < 1.5 min2 przybli�enie – ploki 4 x 4 reprezentowane jedn� warto�ci� – by poprawi� wy�wietlenie jednego obrazu trzeba dodatkowo 7 sek, dla całej bazy ~ 4 min.