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

Podobne dokumenty