Kompresja obrazów w statycznych - algorytm JPEG Joint Photographic Expert Group - 986 ISO - International Standard Organisation CCITT - Comité Consultatif International de Téléphonie et Télégraphie Standard ISO - Zastosowanie algorytmu - kompresja cyfrowych obrazów fotograficznych Założenia: obraz monochromatyczny tablica liczb całkowitych opisujących jasność punktów w obrazu obraz barwny tablice liczb całkowitych (zazwyczaj trzy) opisujące obraz w języku j przyjętego modelu barw n.p. modelu RGB trzy tablice określaj lające zawartości trzech barw podstawowych Algorytm kodowania obrazu. Konwersja obrazu do modelu YIQ (obrazy barwne). Podział obrazu na bloki. Obliczenie transformaty kosinusowej bloków. Kwantyzacja współczynnik czynników w transformaty 5. Konwersja tablicy współczynnik czynników w do postaci wektora 6. Kodowanie wektora współczynnik czynników. Konwersja obrazu do modelu YIQ Przykładowo, modelu RGB obraz opisany jest przy pomocy trzech tablic [ r ], G = [ g ], B [ b ] R = = Konwersja polega na opisaniu obrazu przy pomocy trzech nowych tablic Y, I, Q, których elementy oblicza się według zależno ności y.9 = i.68 q..58.5.58. r. g. b
Po wykonaniu konwersji obraz jest opisany przy pomocy trzech nowych tablic. Podział obrazu na bloki [ y ], I = [ i ], Q [ q ] Y = = Tablica Y określa tak zwaną chrominancję. luminancję,, natomiast I i Q Y, I i Q po przeskalowaniu tak, że e ich elementy stają się liczbami całkowitymi dzieli się na bloki (mniejsze tablice) o rozmiarze 8x8, opisane funkcją.. Obliczanie transformaty kosinusowej (DCT) bloków F( u,v ) f ( x, y ) C(u)C(v ) = = u= v= x= y= f ( x, y )cos x + y + up cos vp 6 6 x + y + C(u)C(v )F(u,v )cos up cos vp 6 6 f ( x, y ) x =,,, y =,,, gdzie C ( u ) / = u = u i C ( v / ) = v = v 5 6 Fragment obrazu płaszczyzna Fragment obrazu szachownica Blok obrazu wejściowego Blok obrazu wejściowego Blok jako funkcja Transformata DCT funkcji Blok jako funkcja Transformata DCT funkcji 8
Fragment obrazu fotograficznego Funkcja i transformata obrazu fotograficznego Blok obrazu wejściowego = 86 98 9 8 8 9 9 8 8 6 5 8 88 8 8 8 66 9 6 5 69 9 9 9 9 8 5 5 6 5 89 9 9 8 9 96 9 6 8 8 9 Blok jako funkcja Transformata DCT funkcji 9 =.. -. -.6..88...65 -.58.9. -. -. -.5 -. -.8..9 -.6 -.65.9.6..69 -.8 -.6..6 -. -.6 -.6 -.5 -.66.5 -.9 -.5..69 -..8.69 -. -.5.6.86 -.65...5 -.66. -.6 -.5.9. -.5.5.6 -.66.8.5 -.9 -.5 *.e+. Kwantyzacja współczynnik czynników transformaty 6 = Q( u,v ) 8 5 9 6 9 F Q ( u,v ) = Integer 6 5 6 9 6 58 6 56 6 5 69 56 9 5 8 8 6 56 68 9 55 6 8 9 8 8 95 98 luminancji Y lub obrazów w szarych F Q (u,v) F(u,v ) Round Q( u,v ) 8 8 6 = Q( u,v ) 5 6 6 66 6 58 6 56 56 chrominancji I i Q Funkcja i skwantowana transformata obrazu fotograficznego = F Q (u,v) = 86 98 9 8 8 9 9 8 8 6 5 8 88 8 8 8 66 9 6 5 69 9 9 9 9 8 5 5 6 5 89 9 9 8 9 96 9 6 8 8 9 5 - - 8 5 - - - - -
Odwrócenie wykonanych operacji (dekodowanie) Kodowanie i dekodowanie (przykłady) Dla obrazu fotograficznego Integer Round (DCT - ( F Q (u,v)*q(u,v) )) f * (x,y) Dla obrazu fotograficznego przed kompresją po kompresji i dekompresji f * (x,y) = 86 98 9 8 8 9 9 8 8 6 5 8 88 8 8 8 66 9 6 5 69 9 9 9 9 8 5 5 6 5 89 9 9 8 9 96 9 6 8 8 9 f*(x,y)= 8 86 8 8 6 8 88 98 8 88 96 9 8 69 68 69 8 5 6 8 5 8 68 86 9 6 6 5 9 5 6 6 5 6 8 6 8 5 6 9 95 5 5 8 85 68 5 9 58 Dla obrazu szachownica przed kompresją po kompresji i dekompresji f * (x,y) 5. Konwersja tablicy współczynnik czynników do postaci wektora F Q (u,v) Algorytm zig-zag zag (A. G. Tescher 98) F Q (u,v) = [DC, AC, AC,, AC 6 5 - - 8 5 - - - - - [DC, AC,,AC 6 ] = [5,, 8, -, 5, -, -,,,, -,,,,,,, -, -, -,,,,, ] 5 6 ] 6. Kodowanie wektora współczynnik czynników wektor - [DC, AC, AC,, AC 6 kodowanie DC bloków w obrazu (tablicy bloków) kodowanie AC, AC,, AC 6 bloku Kodowanie entropne - długość słowa kodowego odpowiadającego kodowanemu elementowi (symbolowi) jest różna r różnych r elementów. Elementy, które statystycznie występuj pują częś ęściej mają krótsze słowa s kodowe. 6 ] 6
6.. Kodowanie DC (składowej stałej) Obraz został podzielony na bloki 8x8. DC DC DC blok blok blok DC k DC k+ blok k blok k+ DC k blok k DC i - składowa stała a bloku i, i =,,, m m - liczba bloków w obrazu Do kodowania składowej stałej stosuje się algorytm DPCM. Algorytm kodowania składowej stałej DC Buduje się wektor DC = [DC, DC, DC,, DC k, DC k+,, DC m ]. Wylicza się wektor Δ = [Δ[, Δ,, Δ i,, Δ m ] ze wzoru Δ = DC Δ i = DC i - DC i- i =,,,m Elementy wektora Δ = [Δ[, Δ,, Δ i,, Δ m ] koduje się przy pomocy tabeli kodu Huffmana 8 6.. Kodowanie [AC, AC,,AC 6 Przykładowa postać wektora: [ AC,,AC 6 ] = [, 8, -, 5, -, -,,,, -,,,,,,, -, -, -,,,,, ] Wektor zawiera elementy niezerowe, przedzielone niekiedy ciągami zer. 6 ] [, AC i-,,,, AC i,,,, AC i+,, ] Ciąg g elementów w koduje się przy pomocy następuj pującej struktury. Symbol- Symbol- Symbol- Symbol- 9 AC i = Symbol- Symbol- Symbol- Symbol- = (Runlength( Runlength, Size) = (Amplitude) Runlength liczba zer pomiędzy AC i i poprzednim niezerowym AC i- (kodowana jako liczba binarna) Size liczba określaj lająca zakres AC i Amplitude liczba wyrażajaca ajaca wartość AC i Do kodowania AC i używa się kodu Huffmana. 5
Algorytm kodowania AC i :. Obliczana jest liczba S przy pomocy wzoru S = Integer Round [log ( abs(ac i ) ) +]. Dla liczby S znajdowane jest słowo s kodu Huffmana określaj lające kod Size np.. według następuj pującej tabeli: Następnie wyliczany jest kod Amplitude zgodnie z kolejną tabelą: s współczynnik AC i -, -, -,, Kod Amplitude ---,,,, S 5 kod Size S 6 8 9 Kod Size - -,,-,,, -5,,-8, 8,,5 itd.,,,,,,,,,,,,, itd. Przykład: AC i = to: S =, Size =, Amplitude =,, czyli razem kod AC i =. Podsumowanie Koder JPEG (uproszczony) Dekoder JPEG (uproszczony) Bloki 8x8 danych źródłowych DCT Koder bitowy Deko-der bitowy Kwanty- zator Dane skompreso- wane Dane skompreso- wane Dekwan- tyzator DCT - Bloki 8x8 danych odtworzonych kwantyzacji kodu Huffmana kodu Huffmana kwantyzacji 6