Kodowanie i kompresja 1 Kompresja stratna 2 Kwantyzacja skalarna

Transkrypt

Kodowanie i kompresja 1 Kompresja stratna 2 Kwantyzacja skalarna
Kodowanie i kompresja
Streszczenie
Studia dzienne
Wykład 12, 5.05.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
• 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
Algorytmy kompresji stratnej wykorzystuja˛ również specyfik˛e percepcji wzrokowej (dla
obrazów i danych wideo) i słuchowej (dla danych dźwi˛ekowych).
2 Kwantyzacja skalarna
Kwantyzacja polega na reprezentowaniu dużego zbioru wartości (być może nieskończonego) za pomoca˛ wartości ze zbioru mniejszego. Chcemy osiagn
˛ ać
˛ dwa przeciwstawne
cele:
1
• maksymalizacja stopnia kompresji;
• minimalizacja zniekształceń.
Kwantyzacja skalarna: każda wartość w ciagu
˛ kwantyzowana osobno.
Kwantyzator:
• odwzorowanie kodujace:
˛
– podział zbioru wartości danych wejściowych na ustalona˛ liczb˛e podprzedziałów, przyporzadkowanie
˛
przedziałom słów kodowych
– każda wartość wejściowa reprezentowana jest przez słowo kodowe przedziału, do którego należy.
• odwzorowanie dekodujace:
˛
– każdemu słowu kodowemu przyporzadkowujemy
˛
wartość rekonstrukcji (z
przedziału, który koduje to słowo)
– każde słowo kodowe w ciagu
˛ skompresowanym jest odtwarzane przy pomocy przypisanej mu wartości rekonstrukcji.
Poj˛ecia:
• granice decyzyjne: końce przedziałów (gdy M przedziałów, potrzeba M + 1 granic decyzyjnych);
• poziomy rekonstrukcji: wartości przyporzadkowane
˛
przedziałom (M wartości dla
M przedziałów); dla przedziałów nieskończonych dopuszczamy wartości ±∞.
Miary jakości kwantyzatora:
• średniokwadratowy bład
˛ kwantyzacji σq2 : jak najmniejszy przy ustalonej (maksymalnej) średniej długości słowa kodowego.
• (średnia) długość słowa kodowego: jak najmniejsza przy ustalonej maksymalnej
wartości σq2 .
M
Niech {bi }M
i=0 to granice decyzyjne, a {yi }i=1 to poziomy rekonstrukcji a fX to funkcja
rozkładu prawdopodobieństwa danych wejściowych. Operacj˛e kwantyzacji definiujemy
jako:
Q(x) = yi ⇐⇒ bi−1 < x ≤ bi .
Średniokwadratowy bład
˛ kwantyzacji jest równy:
σq2 =
Z ∞
−∞
(x − Q(x))2 fX (x)dx =
2
M Z bi
X
i=1 bi−1
(x − yi )2 fX (x)dx.
A średnia długość słowa kodowego to
R=
M
X
li
Z bi
bi−1
i=1
fX (x)dx,
gdzie li to długość słowa kodowego odpowiadajacego
˛
i-temu przedziałowi (i-tej wartości rekonstrukcji).
UWAGA: przy słowach kodowych o zmiennej długości wartość ta zależy nie tylko od
liczby przedziałów.
2.1 Kwantyzator równomierny
Założenia: wszystkie przedziały tej samej długości (za wyjatkiem,
˛
ewentualnie, skrajnych), poziomy rekonstrukcji to środki przedziałów.
Kwantyzator stały w zerze i ze skokiem w zerze.
Kwantyzacja dla rozkładu jednostajnego Założenia: rozkład danych jednostajny w
przedziale [−Xmax , Xmax ], kwantyzator ma M poziomów.
Wówczas wielkość przedziału to
2Xmax
M
δ=
a bład
˛ średniokwadratowy (“zniekształcenie”)
σq2 = 2
M/2 Z iδ
X
i=1
(i−1)δ
µ
x−
2i − 1
δ
2
¶2
1
δ2
dx = .
2Xmax
12
UWAGA: dla rozkładu jednostajnego i kwantyzatora równomiernego optymalne sa˛ słowa
kodowe o stałej długości (z dokładnościa˛ do możliwości zaoszcz˛edzenia jednego bitu
na niektórych słowach – patrz kody stałe dla kodowania arytmetycznego).
Kwantyzacja dla rozkładu niejednostajnego Założenie: rozkład danych w przedziale nieograniczonym (przyjmujemy cz˛esto, że symetryczny wzgl˛edem zera).
Cel: dla ustalonej liczby przedziałów M wyznaczyć optymalna˛ wielkość przedziałów
(wszystkie przedziały za wyjatkiem
˛
skrajnych maja˛ równa˛ długość; skrajne nieograniczone z lewej/prawej).
Bład
˛ średniokwadratowy dla symetrycznej funkcji rozkładu fX wyliczamy jako
σq2
=2
M/2−1 Z iδ
X
i=1
(i−1)δ
µ
2i − 1
x−
δ
2
3
¶2
fX (x)dx
+2
µ
Z ∞
(M/2−1)δ
x−
M −1
δ
2
¶2
fX (x)dx.
Wartość optymalna˛ wyznacza si˛e przez znalezienie miejsc zerowych pochodnej powyższego wyrażenia, w praktyce cz˛esto przy pomocy metod numerycznych.
2.2 Kwantyzacja adaptacyjna
Kwantyzacja adaptacyjna w przód (off-line) : dane dzielone na bloki, dla każdego
bloku parametry kwantyzacji dobierane sa˛ po wcześniejszej analizie i przesyłane wraz
ze skwantyzowanymi danymi.
Kwantyzacja adaptacyjna w tył (on-line) : parametry kwantyzatora modyfikowane
w oparciu o już zakodowane dane.
Krokiem kwantyzacji nazywamy wielkość przedziału przy kwantyzacji jednostajnej.
Idea kwantyzatora Jayanta (liczba przedziałów ustalona, celem optymalny dobór kroku
kwantyzacji; rozkład jest symetryczny i nieskończony):
• jeżeli kolejna wartość wejściowa trafia do przedziałów wewn˛etrznych, należy
zwi˛ekszyć krok kwantyzacji, w przeciwnym razie należy zmniejszyć krok kwantyzacji
• dobór parametrów zwi˛ekszania/zmniejszania powinien „stabilizować” krok kwantyzacji po dopasowaniu do rzeczywistego rozkładu danych.
Generalnie, krok kwantyzacji przy kodowaniu n-tej wartości wejściowej wynosi
δn = wf (n−1) δn−1 ,
gdzie δn−1 to krok dla (n − 1)-szej wartości, f (n − 1) to numer przedziału, do którego
wpada wartość (n − 1)sza, a w1 , . . . , wM to ustalone współczynniki.
Wartości w1 , . . . , wM dobieramy tak, że przedziałom bliskim zera odpowiadaja˛ wartości
mniejsze od 1 a przedziałom zewn˛etrznym wartości wi˛eksze od 1.
Skuteczność kwantyzatora Jayanta: zależna od doboru δ1 i parametrów w1 , . . . , wM .
Sposób doboru współczynników w1 , . . . , wM (przy założeniu, że dane ze stacjonarnego
procesu losowego):
• gdy kwantyzator „pasuje” do danych wejściowych, zwi˛ekszanie i zmniejszanie
kroku powinny si˛e znosić:
nk
ΠM
k=0 wk = 1,
gdzie nk to liczba elementów, które trafiaja˛ do k-tego przedziału.
4
• po obliczeniu pierwiastka N -tego stopnia, gdzie N to liczba elementów w danych
wejściowych:
Pk
ΠM
k=0 wk = 1,
gdzie Pk = nk /N .
• ograniczenie zbioru rozwiazań:
˛
wk = γ lk ,
gdzie γ > 1 to ustalony parametr (określajacy
˛ szybkość adaptacji/stabilność), a
P
lk to liczba całkowita. Uzyskujemy wtedy warunek M
k=0 lk Pk = 0
Zasada: dobre kwantyzatory szybciej si˛e rozszerzaja˛ niż kurcza˛ (ze wzgl˛edu na nieograniczony bład
˛ w przedziałach zewn˛etrznych).
2.3 Kwantyzacja nierównomierna
Zasada: przedziały kwantyzacji nie musza˛ mieć tej samej długości.
Analogia do kodów o zmiennej długości:
symbole o wi˛ekszym prawdopodobieństwie maja˛ krótsze słowa kodowe ↔ w obszarach
o wi˛ekszym prawdopodobieństwie stosujemy mniejsze przedziały.
Kwantyzacja optymalizowana ze wzgl˛edu na rozkład : gdy znany jest rozkład prawodpodobieństwa danych.
Cel: dla znanej funkcji rozkładu prawdopodobieństwa fX i ustalonej liczby przedziałów
M
M należy dobrać granice decyzyjne {bi }M
i=0 i poziomy rekonstrukcji {yi }i=1 , tak aby
zminimalizować
M Z bi
X
i=1 bi−1
(x − yi )2 fX (x)dx.
Szukajac
˛ miejsc zerowych pochodnej wzgl˛edem yj w przedziale [bj−1 , bj ] uzyskujemy
rozwiazanie:
˛
R bj
xfX (x)dx
b
yj = Rj−1
bj
bj−1 fX (x)dx
Z kolei miejsca zerowe pochodnej wzgl˛edem bj to:
bj =
yj+1 + yj
.
2
Iteracyjne poszukiwanie rozwiazań
˛
powyższych równań (algorytm Lloyda-Maxa):
5
1. Założenie: funkcja rozkładu prawdopodobieństwa jest symetryczna, projektujemy kwantyzator ze skokiem w zerze (czyli 0 ma być końcem przedziału), liczba
przedziałów równa jest M .
2. Ze wzgl˛edu na symetri˛e, indeksujemy: y−M/2 , . . . , y−1 , y1 , . . . , yM/2 , oraz b−(M/2−1) , . . . , b−1 ,
b0 = 0, b1 , . . . , bM/2−1 . Wyznaczać b˛edziemy tylko wartości z dodatnimi indeksami, ponieważ y−j = yj i b−j = bj .
3. Przyjmujemy b0 = 0, y1 -dowolne.
4. Dla j = 2, . . . , M/2:
(a) wyznaczamy bj−1 z równania jednej zmiennej
R bj
b
yj = Rj−1
bj
xfX (x)dx
bj−1
fX (x)dx
(b) wyznaczamy yj := 2bj−1 + yj−1
5. wyznaczamy bM/2 na podstawie danych wejściowych (np. jako maksymalna˛ wartość wejściowa)
˛
6. jeśli różnica mi˛edzy wyliczona˛ w powyższy sposób wartościa˛ yM/2 a wyrażeniem
R bM/2
bM/2−1 xfX (x)dx
R bM/2
bM/2−1 fX (x)dx
jest mniejsza od przyj˛etej wartości bł˛edu, kończymy obliczenia. W przeciwnym
razie zwi˛ekszamy y1 (gdy powyższa różnica ujemna) lub zmiejszamy y1 (gdy
powyższa różnica dodatnia) i przechodzimy do punktu 4.
Niektóre dowodliwe własności kwantyzatora Lloyda-Maxa:
• wartość średnia danych wejściowych jest równa wartości średniej danych wyjściowych;
• wariancja danych wyjściowych jest mniejsza lub równa wariancji danych wejściwowych.
Problem w zastosowaniach praktycznych (np. kwantyzacja mowy): rozkład danych
zmienia si˛e w czasie. Rozwiazanie:
˛
adaptacyjna wersja powyższej metody.
6
2.4 Kwantyzacja z kompanderem
Idea: zamiast stosować przedziały o różnych długościach (kwantyzacja nierównomierna),
przekształcamy dane wejściowe funkcja˛ (kompresorem) dajac
˛ a˛ (w miar˛e) jednostajny
rozkład. Dekodowanie wymaga wówczas zastosowania funkcji odwrotnej (ekspandera).
Metoda ta stosowana jest w telefonii.
Całka Bennnetta: sposób konstrukcji kompresora/ekspandera, nie wymagajacy
˛ znajomości funkcji rozkładu prawdopodobieństwa (przy pewnych upraszczajacych
˛
założeniach).
2.5 Optymalizacja średniej długości słowa kodowego
Zadanie: dla ustalonej liczby przedziałów M , mamy ustalić granice decyzyjne, poziomy
rekonstrukcji i słowa kodowe dla poziomów rekonstrucji tak, aby uzyskać jak najmniejsze zniekształcenie (bład
˛ średniokwadratowy) i jak najmniejsza˛ średnia˛ długość słowa
kodowego: Podejścia:
1. jednoczesny dobór wszystkich parametrów – trudne;
2. słowa kodowe o stałej długości, algorytm dobiera granice decyzyjne i poziomy
rekonstrukcji – średnia długość słowa kodowego to dlog M e, nie jest optymalizowana;
3. najpierw dobór granice decyzyjnych i poziomów rekonstrukcji, potem słów kodowych:
• tworzymy kwantyzator minimalizujacy
˛ zniekształcenia (np. algorytm LloydaMaxa)
• wartości wyjściowe kwantyzatora traktujemy jak ciag
˛ wartości niezależnych
o prawdopodobieństwach równych prawdopodobieństwom poszczególnych
przedziałów – stosujemy dla nich kodowanie dla ciagów
˛
niezależnych (np.
Huffmana, arytmetyczne).
3 Kwantyzacja wektorowa
Kwantyzacja wektorowa: dane dzielone na bloki (wektory), każdy blok kwantyzowany
jako jeden element danych.
Ogólny schemat kwantyzacji wektorowej dla L-wymiarowych wektorów:
• ustalamy M wektorów L-wymiarowych jako wartości rekonstrukcji, nazywanych
też wektorami kodowymi; każdemu z wektorów kodowych przyporzadkowujemy
˛
indeks w tablicy tych wektorów, zwanej słownikiem;
7
• dane dzielimy na bloki o długości L;
• dla każdego bloku danych znajdujemy najbliższy mu wektor kodowy i on staje
si˛e skwantyzowana˛ wartościa˛ tego bloku.
Miary jakości kwantyzatora wektorowego:
• (średniokwadratowy) bład
˛ kwantyzacji σq2 , w którym odległość mi˛edzy wektoP
rami X = (x1 . . . xL ) i Y = (y1 . . . yL ) to kX − Y k; gdzie kXk2 = Li=1 x2i .
• (średnia) liczba bitów na próbk˛e: równa
L rozmiar kwantyzowanych wektorów.
dlog Ke
,
L
gdzie K to rozmiar słownika, a
Pogladowe
˛
przykłady przewagi kwantyzacji wektorowej nad skalarna:
˛
• dane skorelowane (np. pary (wzrost,waga));
• dane nieskorelowane: wartości odwzorowane na konkretny wektor kodowy nie
musza˛ być zdefiniowane w postaci przedziałów („prostopadłościanów”).
Algorytm Lindego-Buzo-Graya (LBG) Dane: zbiór wektorów uczacych
˛
{Xn }N
n=1 ,
próg bł˛edu ε, M – liczba wektorów kodowych takie, że N À M .
Cel: minimalizacja średniej odległości mi˛edzy wektorem uczacym
˛
a reprezentujacym
˛
go wektorem kodowym.
(0)
(0)
1. Wybierz dowolnie zbiór wektorów kodowych {Yi }M
= 0.
i=1 . Niech k = 0, D
˛ sposób:
2. Określ obszary kwantyzacji V1 , . . . , VM w nast˛epujacy
(k)
Vi
(k)
(k)
Załóżmy, że Vi
(k)
= {Xn | d(Xn , Yi ) < d(Xn , Yj ) dla każd. j 6= i}
6= ∅ dla każdego i ∈ [1, M ].
3. Oblicz średnia˛ odległość mi˛edzy wektorami uczacymi
˛
a odpowiadajacymi
˛
im
wektorami kodowymi
D
(k)
M
X
1 X
(k)
=
d(Xj , Yi ).
N i=1
(k)
Xj ∈Vi
4. Jeśli
D(k) −D(k−1)
D(k)
< ε, zakończ obliczenia.
5. niech nowe wektory kodowe to średnie wartości obszarów kwantyzacji:
(k+1)
Yj
=
1
X
(k)
|Vj | X ∈V (k)
i
j
8
Xi dla j ∈ [1, M ].
6. Niech k := k + 1, przejdź do kroku 2
Problemy techniczne w algorytmie LBG:
˛
wektorów kodowych.
• Wybór poczatkowych
Technika podziałów: zaczynamy z jednym poczatkowym
˛
wektorem kodowym,
po zastosowaniu algorytmu LBG dołaczamy
˛
drugi wektor, uzyskany z pierwszego
przez dodanie ustalonego „wektora zaburzeń” γ. Majac
˛ 2i wektorów kodowych,
i+1
stosujemy LBG i uzyskujemy 2
wektorów przez dodanie zaburzenia do każdego z wynikowych wektorów kodowych.
Algorytm par najbliższych sasiadów
˛
(PNN): zaczynamy ze zbiorem wektorów
kodowych równym zbiorowi uczacemu.
˛
W każdym kroku (aż do uzyskania M
wektorów) wybieramy 2 najbliższe wektory kodowe i zast˛epujemy je ich średnia˛
i stosujemy algorytm LBG.
• Problem pustych obszarów kwantyzacji.
Metoda: usuwamy wektor kodowy odpowiadajacy
˛ pustemu obszarowi kwantyzacji, zast˛epujemy go losowo wybranym wektorem uczacym
˛
z obszaru kwantyzacji,
który zawiera najwi˛ecej wektorów.
Typowe zastosowanie: kompresja obrazów (wektory to bloki rozmiaru n × m, co umożliwia wykorzystanie korelacji poziomych i pionowyc); ograniczeniem jest wzrost rozmiaru słownika i dobór słownika (statyczny czy projektowany dla każdego obrazka
osobno, co wymaga dołaczenia
˛
słownika do danych).
3.1 Kwantyzatory o strukturze drzewiastej
Idea: chcemy zmniejszyć liczb˛e porównań potrzebna˛ do ustalenia obszaru kwantyzacji,
do którego należy dany wektor.
Metoda: tworzymy zbalansowane drzewo binarne, w każdym w˛eźle umieszczamy wektor, w liściach wektory kodowe; dla ustalenia obszaru kwantyzacji danego wektora Z, w
każdym kroku przechodzimy do tego dziecka aktualnego wierzchołka w drzewie, który
znajduje si˛e bliżej Z (zaczynajac
˛ od korzenia).
Cechy:
• czas znalezienia obszaru kwantyzacji dla danego wektora redukuje si˛e z M do
d2 log M e;
˛
• wzrost zniekształceń: podział na obszary kwantyzacji nie zawsze przyparzadkowuje wektor do obszaru o najbliższym mu wektorze kodowym;
• wzrost pami˛eci: oprócz wektorów kodowych, potrzeba M −1 wektorów w wierzchołkach wewn˛etrznych.
9
Ogólna metoda tworzenia kwantyzatora drzewiastego o gł˛ebokości k dla zbioru wektorów X :
• jeśli k = 0: utwórz kwantyzator z jednym wektorem kodowym równym średniej
z wektorów z X ;
• wybieramy dwa poczatkowe
˛
wektory kodowe: średnia˛ S z wektorów ze zbioru X
i wektor otrzymany z S przez dodanie zaburzenia;
• tworzymy kwantyzator z dwoma wektorami kodowymi (stosujac
˛ np. algorytm
LBG) Y1 , Y2 ;
• dzielimy X na X1 , X2 takie, że X1 składa si˛e z wektorów uczacych
˛
bliższych Y1
a X2 składa si˛e z wektorów uczacych
˛
bliższych Y2
• tworzymy (osobno!) kwantyzatory o gł˛ebokości k − 1 dla zbiorów X1 i X2 .
Modyfikacje: „przycinanie” – usuwanie obszarów kwantyzacji, do których należy najmniej wektorów uczacych
˛
(zmniejszanie średniej długości słowa kodowego kosztem
wzrostu zniekształceń).
10

Podobne dokumenty