Kodowanie i kompresja 1 Kompresja stratna
Transkrypt
Kodowanie i kompresja 1 Kompresja stratna
Kodowanie i kompresja Streszczenie Studia wieczorowe Wykład 10, 26.04.2005 1 Kompresja stratna Algorytmy kompresji bezstratnej oceniane sa˛ ze wzgl˛edu na: • stopień kompresji; • czas działania procesu kodowania i dekodowania. W przypadku kompresji stratnej istotnym aspektem jest również stopień zniekształceń. Proste miary zniekształceń: • kwadratowa miara bł˛edu: d(x, y) = (x − y)2 2 • bład ˛ średniokwadratowy: 2 σ = 2 σx,y N 1 X = (xn − yn )2 , N n=1 gdzie x to dane oryginalne a y to dane zakodowane. • stosunek sygnału do szumu: SNR = σx2 2 σx,y • stosunek sygnału do szumu w skali logarytmicznej: SNR(dB) = 10 log10 σx2 2 σx,y W praktyce, algorytmy kompresji stratnej wykorzystuja˛ również specyfik˛e percepcji wzrokowej (dla obrazów i danych wideo) i słuchowej (dla danych dźwi˛ekowych). 1.1 Kwantyzacja Przez kwantyzacj˛e rozumiemy proces „zaokraglania” ˛ polegajacy ˛ na przyparzadkowaniu ˛ danym z (bardzo) dużej dziedziny ich wartości „zaokraglonych”, ˛ z ustalonego zbioru. Wyróżniamy: • kwantyzacj˛e skalarna˛ • kwantyzacj˛e wektorowa˛ 1 1.2 Transformaty Idea: traktujac ˛ ciag ˛ wartości (x1 , . . . , xn ) jako wektor w przestrzeni <n , znajdujemy reprezentacj˛e tego wektora w innej bazie. Definicja 1 Jednowymiarowa dyskretna transformata F funcji f (określonej na N argumentach 0, 1, . . . , N − 1) dana jest nast˛epujacym ˛ wzorem: F (k) = N −1 X f (n)a(k, n) dla k = 0, 1, . . . , N − 1. n=0 Odwrotna transformata f funkcji F dana jest wzorem: f (n) = N −1 X F (k)b(k, n) dla n = 0, 1, . . . , N − 1. k=0 Definicja 2 Iloczyn skalarny wektorów X = (x1 , . . . , xn ) i Y = (y1 , . . . , yn ) jest równy P X · Y = ni=1 xi yi . Wektory X1 , . . . , Xk sa˛ ortogonalne jeśli Xi · Xj = 0 dla każdego i 6= j. Wektory X1 , . . . , Xk sa˛ ortonormalne jeśli sa˛ ortogonalne i Xi · Xi = 1 dla każdego i ∈ [1, k]. Fakt 1 Transformat˛e F można zapisać macierzowo jako F = Af , gdzie A = (ai,j ), F i f sa˛ reprezentowane jako wektory odpowidajace ˛ wartościom w punktach 0, . . . , N − 1. Jeśli wiersze macierzy A = (ai,j ) transformaty F sa˛ ortonormalne, to A−1 = AT , a zatem: • f = AT F. • Niech f b˛edzie wektorem w bazie standardowej (wektory bazy tworza˛ macierz jednostkowa). ˛ Wektor F jest reprezentacja˛ wektora f w bazie złożonej z wierszy macierzy A. Definicja 3 Dyskretna transformata kosinusowa zdefiniowana jest macierza˛ C o współczynnikach: s 1 (2j + 1)iπ C0,j = cos dla j = 0, . . . , N − 1 N 2N s Ci,j = (2j + 1)iπ 2 cos dla j ∈ [0, N − 1], i ∈ [1, N − 1] N 2N 2 Definicja 4 Dwuwymiarowa dyskretna transformata F funkcji f ma postać F (k, l) = −1 N −1 N X X f (m, n)a(k, l, m, n) dla k, l = [0, N − 1]. m=0 n=0 Wartości a(k, l, m, n) nazywamy jadrem ˛ transformaty. Transformat˛e taka˛ nazywamy separowalna,˛ jeśli jej jadro ˛ jest separowalne, tzn. a(k, l, m, n) = a1 (k, m)a2 (l, n). Transformat˛e separowalna˛ nazywamy symetryczna,˛ jeśli a(k, l, m, n) = a1 (k, m)a1 (l, n). Fakt 2 Zastosowanie transformaty separowalnej i symetrycznej takiej, że a(k, l, m, n) = a1 (k, m)a1 (l, n). dla dwuwymiarowej macierzy rozmiaru N × N oznacza wykonanie kolejno: transformaty zdefiniowanej przez współczynniki a1 w wierszach a nast˛epnie tej samej transformaty w kolumnach. 1.3 Dane jako sygnał Dane w postaci multimedialnej można modelować jako „sygnał” – (zazwyczaj) ciagł ˛ a˛ funkcj˛e. Wyróżniamy nast˛epujace ˛ cechy sygnału: • amplituda • okres • faza. W rzeczywistości reprezentujemy dane spróbkowane. 1.4 JPEG JPEG jest standardem kompresji stosujacym ˛ dyskretna˛ transformat˛e kosinusowa˛ (DCT). Zakładamy, że wartości pikseli to liczby z przedziału [0, 2P −1]. Kodowaniu poddajemy te wartości, po odj˛eciu od każdej 2P −1 . JPEG – kodowanie: 3 1. Transformacja (przekształcenie) danych. Zastosowanie DCT dla bloków pikseli rozmiaru 8 × 8 (obraz rozszerzamy do rozmiarów b˛edacych ˛ wielokrotnościa˛ 8 poprzez powtórzenie ostatniej kolumny/wiersza odpowiednia˛ liczb˛e razy): najpierw w wierszach, potem w kolumnach. Wartości nowych współczynników ustawione sa˛ w kolejności „zygzaka”, który odpowiada wzrostowi cz˛estotliwości sygnału. Motywacja: istotne cechy obrazu skupione sa˛ tylko w pierwszych składowych reprezentacji otrzymanej wskutek DCT. Dalsze składowe sa˛ duże tylko w przypadku dużego zróżnicowania w kodowanym bloku 8 × 8. 2. Kwantyzacja. Stosowana jest kwantyzacja jednostajna, skalarna. Oparta jest na tablicy kwantyzacji Qi,j dla i, j ∈ [1, 8]. Skwantyzowana wartość współczynnika θi,j jest równa $ % θi,j lij = + 0.5 . Qi,j Zasada: krok kwantyzacji rośnie przy ułożeniu ciagu ˛ zygzakiem. Uzasadnienie: współczynniki „mniej zauważalne” można reprezentować z mniejsza˛ dokładnościa.˛ Spodziewany efekt kwantyzacji: w bloku 8 × 8 uzyskamy dużo zer, w szczególności zerami b˛eda˛ końcowe elementy (w kolejności zygzaka). Kompromis mi˛edzy stopniem kompresji i stopniem zniekształceń: dobór kroku kwantyzatorów. 3. Kodowanie. • Kodowanie pierwszego współczynnika (DC). Kodujemy ciag ˛ różnic pomi˛edzy wartościami pierwszego współczynnika w kolejnych blokach 8 × 8. Metoda kodowania: wartości dzielimy na kategorie, i-ta kategoria odpowiada przedziałom [−2i , −2i−1 ] i [−2i , −2i−1 ], zerowa kategoria odpowiada wartości 0. Nast˛epnie, numery kategorii kodujemy kodami Huffmana, a wartości w obr˛ebie kategorii kodami o stałej długości. ˛ współ• Kodowanie pozostałych współczynników (AC). Kodujemy osobno ciag czynników każdego bloku 8×8, uporzadkowany ˛ w kolejności zygzaka. Stosujemy podział na kategorie (dla oryginalnych wartości współczynników), wprowadzamy też modyfikacje uwzgl˛edniajace ˛ możliwość wyst˛epowania długich ciagów ˛ zer, w szczególności samych zer w końcowej cz˛eści ciagu. ˛ 4 JPEG-dekodowanie: 1. Dekodowanie wartości współczynników (tu stosowany był algorytm bezstratny) 2. Odwrotna transformata kosinusowa. 3. Usuni˛ecie dodanych w procesie kodowania wierszy i kolumn. 5