View
3
Download
0
Category
Preview:
Citation preview
Kodowanie transformujace
Kompresja danych
Tomasz Jurdzinski
Wykład 11: Transformaty i JPEG
Jurdzinski Kompresja danych
Kodowanie transformujace
Idea kodowania transformujacego
Etapy kodowania1 Wektor danych x0, . . . ,xN−1 przekształcamy (odwracalnie!) na
wektor c0, . . . ,cN−1, tak aby:„energia” była skoncentrowana w kilku współrzednych (czyli tylkokilka współrzednych jest wazna);ciag c0, . . . ,cN−1 nie jest skorelowany (dekorelujemy ciagx0, . . . ,xN−1).
2 Wartosci c0, . . . ,cN−1 kwantyzujemy skalarnie: wiecej bitówprzydzielamy wazniejszym współrzednym.
3 Kodujemy bezstratnie wartosci skwantyzowane.
Jurdzinski Kompresja danych
Kodowanie transformujace
Idea kodowania transformujacego
Dekodowanie1 Dekodowanie: odpowiedni algorytm bezstratny.2 Z odtworzonych wartosci skwantyzowanych uzyskujemy
przyblizone wartosci współczynników po kwantyzacji:c′0, . . . ,c
′N−1.
3 Stosujemy transformate odwrotna: z przyblizonych wartoscic′0, . . . ,c
′N−1 uzyskujemy przyblizone wartosci x ′0, . . . ,x
′N−1.
Jurdzinski Kompresja danych
Kodowanie transformujace
Transformaty
Jakie transformaty nas interesuja?
traktujemy ciag wartosci (x0, . . . ,xN−1) jako wektor w przestrzeniℜN , reprezentowany w bazie standardowej;chcemy znalezc nowa, inna baze przestrzeni ℜN i wyrazacwektory w tej nowej bazie;algebraicznie: odpowiada to przekształceniu liniowemu,definiowanemu przez macierz rozmiaru N×N;geometrycznie: oznacza to “obrót” układu współrzednych.
Jurdzinski Kompresja danych
Kodowanie transformujace
Pojecia
Definicja
Jednowymiarowa dyskretna transformata „liniowa” wektora(x0, . . . ,xN−1) przekształca go na wektor (θ1, . . . ,θn) wg wzoru:
θk =N−1
∑n=0
xna(k ,n) dla k = 0,1, . . . ,N−1,
gdzie ai ,j dla i , j ∈ [0,N−1] to ustalone liczby.Iloczyn skalarny wektorów X = (x0, . . . ,xN−1) i Y = (y1, . . . ,yn) jestrówny X ·Y = ∑
ni=1 xiyi .
Wektory X1, . . . ,Xk sa ortogonalne jesli Xi ·Xj = 0 dla kazdego i 6= j .Wektory X1, . . . ,Xk sa ortonormalne jesli sa ortogonalne i Xi ·Xi = 1dla kazdego i ∈ [1,k ].
Jurdzinski Kompresja danych
Kodowanie transformujace
Własnosci
Co daje ortonormalnosc
Transformate dana przez współczynniki {ai ,j}i ,j∈[0,N−1] mozna zapisacmacierzowo jako
θ = Ax ,
gdzie A = (ai ,j).Jesli wiersze macierzy A = (ai ,j) sa ortonormalne, to A−1 = AT , azatem:
x = ATθ ,
co wynika z x = A−1Ax = AT θ .
Jurdzinski Kompresja danych
Kodowanie transformujace
Własnosci c.d.
Reprezentacje w róznych bazach
Niech x bedzie wektorem w bazie standardowej (wektory bazy tworzamacierz jednostkowa). Wektor θ = Ax jest reprezentacja wektora x wbazie złozonej z wierszy macierzy A:
x = AT Ax = ATθ = θ0AT
0 + . . .+θN−1ATN−1
gdzie Ai to i-ty wiersz macierzy A.
Transformata oparta na bazie ortonormalnej zachowuje energie
Niech energia wektora x = (x0, . . . ,xN−1) bedzie równax ·x = ∑
N−1i=0 x2
i . Wówczas:
N−1
∑i=0
x2i =
N−1
∑i=0
θ2i ,
poniewaz ∑N−1i=0 θ 2
i = θ T θ = (Ax)T (Ax) = xT (AT A)x = xT x .
Jurdzinski Kompresja danych
Kodowanie transformujace
Transformaty dwuwymiarowe
Zastosowanie w kodowaniu obrazówKorelacje zachodza zarówno w wierszach jak i w kolumnach!
Transformata dwuwymiarowa
Dwuwymiarowa dyskretna transformata θ macierzy (xi ,j)i ,j∈[0,N−1]
zdefiniowana jest wzorem
θk ,l =N−1
∑i=0
N−1
∑j=0
xi ,ja(k , l , i , j) dla k , l = [0,N−1].
Jurdzinski Kompresja danych
Kodowanie transformujace
Jakie transformaty dwuwymiarowe?
Transformaty dwuwymiarowe stosowane zazwyczaj w kompresji
oparte na transformacie jednowymiarowej;najpierw transformata wierszy (macierzy danych xi ,j );potem transformata (taka sama) kolumn macierzy uzyskanej potransformacie wierszy.
Interpretacja arytmetyczna: A-macierz transformaty, X -macierzdanych
niech Xi to i-ty wektor macierzy X ;wtedy AX T
i to transformata i-tego wiersza jako kolumna;
czyli xTi AT to transformata i-tego wiersza; a XAT to transformata
uzyskana z X po zastosowaniu A do wierszy;ostatecznie: A ·XAT daje zastosowanie transformaty A dokolumn macierzy XAT .
Jurdzinski Kompresja danych
Kodowanie transformujace
Baza transformaty 2-wymiarowej
Baza transformaty X → AXAT
Baza składa sie z macierzy ATi Aj , gdzie Ai to i-ty wiersz macierzy A.
Wynika to z tozsamosci:
[AXAT ]k ,m = ∑i
∑j
Ak ,iXi ,jAm,j = X ◦ (ATk Am)(iloczyn skalarny)
oraz faktów:elementy {AT
k Am}k ,m=0,...,N−1 tworza baze ortonormalna;współczynniki wektora w bazie ortonormalnej sa równeiloczynom skalarnym z odpowiednimi wektorami bazy.
Tozsamosc:[XAT ]a,b = ∑
iXa,iAb,i
czyli
[AXAT ]c,b = ∑j
Ac,j [XAT ]j ,b = ∑j
Ac,j ∑l
Xj ,lAb,l = ∑j
∑l
Ac,jXj ,lAb,l
Jurdzinski Kompresja danych
Kodowanie transformujace
Przykład
Dane: wektory złozone z wartosci sasiednich pikseli
rozkład energii w danych: energia na obu współrzednychpodobna;stopien korelacji: zazwyczaj wartosc drugiego elementu paryzblizona do wartosci pierwszego elementu.
Dekorelacja i koncentracja energii
obracamy układ współrzednych o 45 stopni w lewo: energiakoncentruje sie w pierwszej współrzednej, brak zaleznoscimiedzy pierwsza a druga współrzedna;algebraicznie oznacza to transformate:
A =1√2
[1 11 −1
]
Jurdzinski Kompresja danych
Kodowanie transformujace
Przykład c.d.
Ortogonalnosc i ortonormalnosc
Macierz
A =1√2
[1 11 −1
]spełnia
A2 = I ⇒ A−1 = AT
a stad wynika, ze wiersze macierzy A tworza ortonormalna bazeprzestrzeni ℜ2.
Przekształcenie skorelowanego wektora x = (b,b)T
1√2
[1 11 −1
]·[
bb
]=
[ √2b0
]
Jurdzinski Kompresja danych
Kodowanie transformujace
Dyskretna transformata kosinusowa (DCT)
Definicja
Dyskretna transformata kosinusowa zdefiniowana jest macierza C owspółczynnikach:
C0,j =
√1N
cos(2j +1) ·0π
2Ndla j = 0, . . . ,N−1
Ci ,j =
√2N
cos(2j +1)iπ
2Ndla j ∈ [0,N−1], i ∈ [1,N−1]
DCT a przestrzenie liniowe
Wiersze macierzy DCT (Ci ,j ) sa ortonormalne, w szczególnosci wiectworza baze przestrzeni ℜN .
Jurdzinski Kompresja danych
Kodowanie transformujace
Dyskretna transformata kosinusowa
Interpretacja
0-wy wiersz: ciag N wartosci 1N .
i-ty wiersz dla i > 0√2N
(cos(iπ1
2N),cos(iπ
32N
), . . .cos(iπ2N−1
2N))
czyli ciag wartosci funkcji cos(iπx) w punktach 12N , 3
2N , . . . , 2N−12N .
a funkcja cos(iπx) ma okres 2/i .
Jurdzinski Kompresja danych
Kodowanie transformujace
Dlaczego DCT?
Sygnał
Strumien danych mozna modelowac jako sygnał – (zazwyczaj) ciagłafunkcje. Wyrózniamy nastepujace cechy sygnału:
amplitudaokres (czestotliwosc)faza.
Co wynika z szeregów i transformat Fouriera (intuicje)
kazdy sygnał cykliczny mozna wyrazic w przeliczalnej “bazie”złozonej z funkcji sin i cos o róznych okresach i amplitudach;kazdy sygnał mozna wyrazic w bazie (mocy continuum) złozonejz funkcji sin i cos o róznych okresach i amplitudach;(dyksretna) transformata Fouriera (DFT) jest odpowiednikiempowyzszego dla funkcji “spróbkowanych”.DCT podobna do DFT, z pominieciem jej wad.
Jurdzinski Kompresja danych
Kodowanie transformujace
Dlaczego DCT c.d.
W kodowaniu obrazów
w nieduzym bloku (np. 8×8): wiekszosc energii skoncentrowanaw składowych o małych współrzednych;ludzka percepcja: słabo “widzimy” składowe o niskichczestotliwosciach (p. rysunek).Uwaga: przykład wektorów o długosci 2 to tez była macierz DCT!
DCT dwuwymiarowa:
Jurdzinski Kompresja danych
Kodowanie transformujace
JPEG
JPEG jest standardem kompresji stosujacym dyskretna transformatekosinusowa (DCT). Zakładamy, ze wartosci pikseli to liczby zprzedziału [0,2P −1]. Kodowaniu poddajemy te wartosci, po odjeciuod kazdej 2P−1.
JPEG: kodowanie1 Podział na bloki pikseli rozmiaru 8×8 (obraz rozszerzamy do
rozmiarów bedacych wielokrotnoscia 8 poprzez powtórzenieostatniej kolumny/wiersza odpowiednia liczbe razy)..
2 Transformata DCT na kazdym bloku(xi ,j)i ,j=0,...,N−1 → (θi ,j)i ,j=0,...,N−1;
3 Kwantyzacja współczynników po DCT.4 Kompresja wartosci po kwantyzacji: alg. Huffmana połaczony z
kodowaniem długosci serii.
Jurdzinski Kompresja danych
Kodowanie transformujace
JPEG: kwantyzacja
JPEG: kwantyzacja1 współczynniki uzyskane po DCT poddawane sa kwantyzacji
skalarnej, jednostajnej (tzn. o stałej długosci bloku);2 krok kwantyzacji (długosc obszaru kwantyzacji) moze byc inny
dla kazdej współrzednej; kroki kwantyzacji zadane przez macierzkwantyzacji {Qi ,j}i ,j=0,...,N−1;
3 Skwantyzowana wartosc współczynnika θi ,j jest równa
lij =
⌊θi ,j
Qi ,j+0.5
⌋czyli oznacza numer obszaru kwantyzacji odpowiadajacegowartosci θi ,j (jesli ponumerujemy w ten sposób, ze obszarzawierajacy wartosc zero ma numer 0).
4 dekodowanie: wartosc li ,j odtworzona jako:
θ′i ,j = li ,j ·Qi ,j .
Jurdzinski Kompresja danych
Kodowanie transformujace
JPEG: tablica kwantyzacji
Jak wyglada tablica kwantyzacji1 Zasada: krok kwantyzacji rosnie przy ułozeniu ciagu zygzakiem.2 Uzasadnienie: współczynniki „mniej zauwazalne” mozna
reprezentowac z mniejsza dokładnoscia.3 Spodziewany efekt kwantyzacji: w bloku 8×8 uzyskamy duzo
zer, w szczególnosci zerami beda koncowe elementy (wkolejnosci zygzaka):
duzy krok kwantyzacji zwieksza zakres wartosci, które znajda sie wzerowym obszarze kwantyzacji;w typowym bloku (gdzie zróznicowanie pikseli małe), współczynnikio wiekszych czestotliwosciach maja małe wartosci.
Jurdzinski Kompresja danych
Kodowanie transformujace
JPEG: domyslna tablica kwantyzacji
Standardowa tablica kwantyzacji w JPEG
16 11 10 16 24 40 51 6112 12 14 19 26 58 60 5514 13 16 24 40 57 69 5614 17 22 29 51 87 80 8218 33 37 56 68 109 103 7724 35 55 64 81 104 113 9249 64 78 87 103 121 120 10172 92 95 98 112 100 103 99
Kompromis miedzy stopniem kompresji i stopniem zniekształcen
zwiekszenie stopnia kompresji (kosztem jakosci obrazu):zwiekszenie wielkosci przedziałów kwantyzacji (np.,przemnozenie tablicy kwantyzacji przez 2);zmniejszenie zniekształcen (kosztem stopnia kompresji):zmniejszenie wielkosci przedziałów kwantyzacji.
Jurdzinski Kompresja danych
Kodowanie transformujace
Kodowanie wartosci skwantowanych
Podział danych
współczynniki DC (wartosci l0,0 z kazdego bloku):oznaczaja jasnosc (sygnał stały), wiec zazwyczaj wartosci wsasiednich blokach sa podobne;kodujemy wartosci DC ze wszystkich bloków jako jeden ciag (odlewej do prawej, z góry na dół);stosujemy proste kodowanie predykcyjne: przewidywana wartosckazdego współczynnika to wartosc poprzednia, kodujemy róznice.
współczynniki AC (pozostałe)współczynniki AC z kazdego bloku kodowane osobno...w kolejnosci zig-zag...w efekcie od pewnego momentu zazwyczaj beda zera.
Jurdzinski Kompresja danych
Kodowanie transformujace
Kodowanie wartosci skwantowanych c.d.
Kodowanie ciagu róznic miedzy współczynnikami DC
podział wartosci na kategorie:
kategoria wartosci w kat.1 02 −1,13 −3,−2,2,34 −7, . . . ,−4;4,5, . . . ,7· · · · · ·i [−2i−1−1,−2i−2]; [2i−2,2i−1−1]· · · · · ·
tworzymy kody Huffmana dla numerów kategorii;kazda wartosc kodowana jako para: kod Huffmana numerukategorii c; oraz 2c−2 bitów kodujacych wartosc w obrebiekategorii (0 bitów dla kategorii 1);uzasadnienie: wiekszosc wartosci bedzie bliskich zeru.
Jurdzinski Kompresja danych
Kodowanie transformujace
Kodowanie wartosci skwantowanych c.d.
Kodowanie współczynników AC
Element kodowany to trójka (Z ,C,B), gdzie:Z to liczba zer poprzedzajacych dany element;C to jego kategoria (jak w DC);B to pozycja w obrebie kategorii (jak w DC);
Uwaga1: wartosci 0 sa pomijane.Uwaga2: specjalny kod EOB (end of block) oznacza same zera zaostatnia zakodowana wartoscia.
Przykład
2 −8 3 0 0 0 0 1 1 0 0 1 0 0 . . .(0,3,2) (0,5,7) (0,3,3) (4,2,1) (0,2,1) (2,2,1) EOB
Jurdzinski Kompresja danych
Kodowanie transformujace
Kodowanie wartosci skwantowanych c.d.
Kodowanie współczynników AC c.d. (kategoria i przesuniecie)
pare Z ,C (liczba zer poprzedzajacych i numer kategorii)kodujemy razem, przy wykorzystaniu ustalonego koduprefiksowego (o ile Z ≤ 15);wartosc B kodujemy jak w DC, czyli na ustalonej liczbie bitów(wynikajacej z wartosci C);kod prefiksowy dla par Z ,C zawiera tez kody specjalneodpowiadajace EOB (koniec bloku, dalej same zera) oraz ZRL(ciag 16 zer);
Jurdzinski Kompresja danych
Kodowanie transformujace
JPEG: dekodowanie
Schemat dekodowania1 Dekodowanie wartosci współczynników (algorytm bezstratny
oraz kwantyzacja skalarna): na podstawie tablic kwantyzacji.2 Odwrotna transformata kosinusowa dla kazdego bloku rozmiaru
8×8.3 Odtworzenie obrazu z bloków.4 Usuniecie dodanych w procesie kodowania wierszy i kolumn.
Jurdzinski Kompresja danych
Kodowanie transformujace
Inne zastosowania transformat
Zastosowaniakompresja wideo: MPEG, H.263 i H.261 (telekonferencje);kompresja dzwieku: MP3 (czyli MPEG 1 Layer 3).kompresja falkowa: soon.
O czym nie powiedziałem...
kodowanie obrazów kolorowych;zastosowanie transformat do kodowania dzwieku;dynamiczny dobór liczby bitów przypadajacych na poszczególnewspółrzedne.
Ciekawy wykład o transformatatach:http://users.utu.fi/jkari/compression/
Jurdzinski Kompresja danych
Recommended