Podręcznik
7. Kodowanie obrazu nieruchomego i sekwencji wideo
7.4. Kompresja obrazu w dziedzinie transformaty
Dwustronna transformata DCT reprezentuje obraz w dziedzinie częstotliwości przestrzennych. Jeśli obraz nie zawiera drobnych szczegółów, to wystarczy kilka obrazów bazowych do jego zapisania lub przesłania. Oznacza to, że wystarczy wykorzystać tylko kilka współczynników DCT do jego reprezentacji. Mamy więc metodę kompresji: obliczenie DCT i transmisja tylko kilku najistotniejszych współczynników. Na tej zasadzie działa algorytm kompresji JPEG (Joint Photographic Expert Group) [14], [17], [18].
Rysunek 49 Podstawowy koder i dekoder JPEG
Na rys.49 pokazano podstawowy wariant kodera JPEG. DCT oblicza się dla podobrazów 8x8 pikseli: (wzór 40). Dla każdego podobrazu mamy 64 współczynniki DCT. Kwantyzacja tych współczynników jest procesem dwuetapowym. Na początku dzieli się każdy współczynnik DCT przez odpowiedni element tablicy kwantyzacji Q(i,j).
![]() |
(46) |
Przykład tablicy kwantyzacji podano na rys.50. Znormalizowane współczynniki DCT zaokrągla się do najbliższej liczby całkowitej:
![]() |
(47) |
Im większe liczby umieścimy w tablicy kwantyzacji, tym więcej elementów zerowych otrzymamy w wyniku zaokrąglenia i tym głębsza będzie kompresja obrazu. Stosując tablicę kwantowania z rys.50, otrzymamy mniej elementów zerowych w lewym górnym rogu (reprezentacja dużych obiektów) a mniej w prawym dolnym (reprezentacja drobnych szczegółów).
Rysunek 50 Przykład tablicy kwantyzacji [18]
Zaokrąglenie do wartości całkowitych jest procesem stratnym, tu powstaje błąd kwantyzacji. Pozostałe kroki algorytmu JPEG są bezstratne. Współczynnik , zwany współczynnikiem DC (określa on ogólną jasność podobrazu) jest kodowany różnicowo (oblicza się różnicę współczynników DC dwóch sąsiednich bloków 8x8 pikseli). Pozostałe współczynniki (AC) szereguje się od najniższych do najwyższych częstotliwości przestrzennych, poruszając się „zygzakiem” od lewego górnego rogu do prawego dolnego. Kodowaniu podlegają tylko niezerowe wartości współczynników
. Dla każdego niezerowego współczynnika kodowana jest:
- Liczba poprzedzających zer,
- Liczba bitów dla kodowania wartości współczynnika,
- Wartość współczynnika.
W końcu otrzymane 3 parametry na niezerowy współczynnik DCT koduje się kodem Huffmana o zmiennej długości słowa.
W odbiorniku (rys.49) dekoduje się kod Huffmana, otrzymując współczynniki {\hat{Y}}^\ast\left(i,j\right). Następnie odwraca się operację normalizacji (46):
![]() |
(48) |
W końcu otrzymuje się skwantowany podobraz, stosując transformatę odwrotną IDCT: Tabela 5 Kompresja obrazu metodą JPEG Wskaźnik jakości Rozmiar pliku (kB) PSNR [dB] R G B - - - - 46.6 37.8 , 29.3 , 36.2 36.0 35.1 , 36.3 , 34.1 25.1 32.6 , 33.6 , 31.9 14.3 28.0 , 29.0 , 27.5 10.9 25.0 , 26.0 , 24.3 *Otwórz hiperlink aby zobaczyć obraz (wzór 42).
Przykładowe wyniki otrzymano z wykorzystaniem softweru opublikowanego w [18] i zamieszczono w tablicy 5. Wskaźnik jakości Q wpływa na zawartość tablicy kwantyzacji kwantyzacji Q(i,j). Im większa wartość Q, tym mniejsze są elementy tablicy kwantyzacji i tym dokładniejsze kwantowanie (wyższe wartości PSNR dla 3 kolorów). Oczywiście płacimy za to większym rozmiarem pliku po kompresji.