DSP Wyk%b3ad 11 UWM

background image

Sławomir Kulesza

slawek.kulesza@gmail.com

Wydział Matematyki i Informatyki

Cyfrowe przetwarzanie sygnałów (6/7)

Wykład dla studentów I roku Informatyki UWM w Olsztynie

Specjalność: Multimedia

background image

Transformaty ortogonalne – przypomnienie

Transformatą T nazywamy przekształcenie, które sygnałowi x przyporządkowuje
sygnał y taki, że:

y=T⋅x

gdzie:

x=

[

x

0

x

1

...

x

N −1

]

; y=

[

y

0

y

1

...

y

N −1

]

; T =

[

t

0,0

t

0,1

...

t

0, N −1

t

1,0

t

1,1

...

t

1, N −1

...

...

...

...

t

N −1,0

t

N −1,1

... t

N −1, N −1

]

Spośród wszystkich możliwych przekształceń sygnału, pozycję wyróznioną
zajmują transformaty ortogonalne.

background image

Własności przekształceń ortogonalnych

Przekształcenia ortogonalne:

zachowują energię sygnału (są transformatami bezstratnymi):

y

2

=y

T

⋅y=x

T

⋅x=x

2

T⋅x

T

T⋅x=x

T

T

T

T⋅x

Macierz odwrotna transformaty powstaje przez transpozycję macierzy prostej:

T =

[

t

0,0

t

0,1

...

t

0, N −1

t

1,0

t

1,1

...

t

1, N −1

...

...

...

...

t

N −1,0

t

N −1,1

... t

N −1, N −1

]

;T

1

=

T

T

=

[

t

0,0

t

1,0

...

t

N −1,0

t

0,1

t

1,1

...

t

N −1,1

...

...

...

...

t

0, N −1

t

1, N −1

... t

N −1, N −1

]

background image

Przykłady przekształceń ortogonalnych

Do przekształceń ortogonalnych zalicza się m.in.:

transformatę Karhunena-Loevego,

dyskretną transformatę Fouriera,

dyskretną transformatę kosinusową,

transformaty falkowe.

background image

Transformaty ortogonalne – transformata Karhunena-Loevego

Transformata optymalna w sensie upakowania energetycznego sygnału –
dekorelacja próbek obniża entropię sygnału do wartości minimalnej.

Funkcje bazowe są konstruowane w oparciu o sygnał kodowany –
transformata adaptacyjna.

Wynik kodowania silnie uzależniony od danych wejściowych (kłopot dla
kodowania predykcyjnego).

Duża złożoność obliczeniowa (obliczenie macierzy kowariancji, rozwiązanie
zagadnienia własnego) – brak szybkich algorytmów.

background image

Transformata jako przekształcenie rzutujące

Przekształcenie ortogonalne można wyobrażać sobie jako rzutowanie wektora
sygnału na przestrzeń rozpinaną przez wektory bazowe tworzące macierz
przekształcenia. Wówczas, otrzymane współczynniki transformaty opisują
podobieństwo sygnału transformowanego oraz wektorów bazowych.

background image

Rzutowanie na przykładzie DFT

Zdjęcie oryginalne (16x16 px) oraz wektor bazowy (u=15, v=15):

Rzutowanie polega na wysumowaniu iloczynów wartości piksela obrazu i bazy.
W ten sposób określa się podobieństwo obrazu do wzorca ('zawartość' wzorca w obrazie).

background image

Tablica wektorów bazowych FT dla bloków 16x16 px

background image

Transformaty ortogonalne –

dyskretna transformata kosinusowa (DCT)

Prosta i odwrotna transformaty kosinusowe zdefiniowane są następująco:

S u=

C u

N / 2

x=0

N −1

sx⋅cos

2 x1⋅u⋅

2⋅N

sx =

u=0

N −1

C u

N /2

S u⋅cos

2 x1⋅u⋅

2⋅N

gdzie:

C u=

{

1

2

u=0

1⇔u0

}

background image

DCT jest transformatą ortogonalną

x=0

N −1

C u

N / 2

cos

2 x1⋅u⋅

2⋅N

C v

N / 2

cos

2 x1⋅v⋅

2⋅N

=

{

1⇔ u=v
0⇔ uv

}

Tak więc:

S u⋅S v =

uv

S

T

v =S

1

v

Przy tym:

S v =S

T

v

Macierz DCT jest więc także symetryczna.

background image

2D (i)DCT

2-wymiarowa DCT zdefiniowana jest następująco:

S u , v =

C u

N /2

C v

N /2

x=0

N −1

y=0

N −1

sx , y⋅cos

2 x1⋅u⋅

2⋅N

cos

2 y1⋅v⋅

2⋅N

Transformata odwrotna ma postać:

sx , y =

u=0

N −1

v=0

N −1

C u

N / 2

C v

N /2

S u , v ⋅cos

2 x1⋅u⋅

2⋅N

cos

2 y1⋅v⋅

2⋅N

background image

Tablica wektorów bazowych DCT dla bloków 8x8 px

background image

Separowalność 2D DCT

2-wymiarową DCT można wyrazić jako:

S u , v =

C u

N /2

C v

N /2

x=0

N −1

y=0

N −1

sx , y⋅cos

2 x1⋅u⋅

2⋅N

cos

2 y1⋅v⋅

2⋅N

=

...

...=

C u

N /2

C v

N /2

x=0

N −1

cos

2 x1⋅u⋅

2⋅N

y =0

N −1

sx , y⋅cos

2 y1⋅v⋅

2⋅N

Oznacza to, że 2D DCT można obliczyć poprzez dwukrotne wykonanie 1D DCT
na wierszach oraz kolumnach obrazu:

background image

Kodowanie i kompresja DCT – przykład

Obraz oryginalny

2D DCT (log 10)

background image

Rekonstrukcja obrazu po obcięciu 80 % współczynników DCT

background image

Rekonstrukcja obrazu po obcięciu 90 % współczynników DCT

background image

Rekonstrukcja obrazu po obcięciu 95 % współczynników DCT

background image

Rekonstrukcja obrazu po obcięciu 99 % współczynników DCT

background image

Związki pomiędzy DCT a DFT

Zauważmy, że z dowolnego sygnału rzeczywistego s(n) można zawsze wydzielić
składową parzystą (even, symmetric) i nieparzystą (odd, antisymmetric):

sn=s

e

ns

o

n

gdzie:

s

e

n=

1

2

sns−n

s

o

n=

1
2

sn−s−n

background image
background image

Z własności DFT wynika jednak, że:

DFT sn=DFT

s

e

ns

o

n

=ℜ

S n j⋅ℑS n

Ostatecznie:

DFT

s

e

n

=ℜ

S n

DFT

s

o

n

= ℑ

S n

background image

Przedłużenie symetryczne sygnału

Ponieważ funkcje cos są parzyste, zaś współczynniki DCT – rzeczywiste, istnieje
analogia do transformowania sygnałów parzystych przy pomocy DFT. Należy
zatem oczekiwać, iż DCT daje się wyrazić przy pomocy parzystego rozwinięcia
DFT.

Z dowolnego sygnału można utworzyć sygnał parzysty, gdy dokona się jego
symetrycznego przedłużenia:

background image

Obliczenia DCT przy pomocy DFT (FFT)

W celu obliczenia DCT można wykorzystać algorytmy FFT, co jest możliwe dzięki
istnieniu zależności takich jak np.:

S k =

2

N

exp−

j k

2 N

m=0

2N−1

u

m

exp−

j 2

2 N

km

(*)

gdzie: S(k) – oznacza współczynniki DCT, zaś um jest wektorem sygnału s(m)
uzupełnionym zerami:

u m=

u

0,

u

1,

... ,

u

N −1

,

u

N

,

u

N 1

,... ,

u

2N−1

=

s

0,

s

1,

... , s

N −1

, 0,0, ,... , 0

background image

Zauważmy, że powyższe wyrażenie zawiera k-ty współczynnik DFT (FFT):

S

FT

k =

m=0

2N−1

u

m

exp

j 2

2 N

km

Stąd też, k-ty współczynnik DCT wynosi:

S k =

2

N

exp

j k

2 N

S

FT

k

background image

Widmo DCT

Dzięki analogii do DFT, transformatę DCT można traktować jak dekompozycję
częstotliwościową sygnału. Współczynniki o dużej energii okazują się być
niskoczęstotliwościowymi składowymi dekompozycji częstotliwościowej, podczas
gdy te o niewielkich wartościach są składowymi wysokoczęstotliwościowymi.

background image

Upakowanie energii w widmie DCT

Energia (wartość) współczynników transformaty jest zlokalizowana w dolnych
częstotliwościach widma.

background image

Podobieństwo DCT do KLT – dekorelacja sygnału

Podstawowym zadaniem transformaty jest usunięcie nadmiarowości
przestrzenno-czasowej pomiędzy sąsiednimi próbkami sygnału, co obniża jego
entropię i pozwala kodować współczynniki transformaty niezależnie.

Porównajmy dwa obrazy: nieskorelowany (a) oraz wysoce skorelowany (b).

background image

Na kolejnych rysunkach przedstawiono histogramy obu obrazów:

Oraz ich znormalizowane funkcje autokorelacji:

background image

Porównajmy następnie funkcje autokorelacji tych samych obrazów z funkcjami
autokorelacji ich widm DCT:

Widać wyraźny spadek amplitudy autokorelacji na całej powierzchni obrazów po
zastosowaniu DCT, co świadczy o dobrych własnościach dekorelacyjnych DCT.

background image

Zależność pomiędzy DCT a KLT

Rozważmy sygnał generowany według formuły:

sk 1=⋅s k z k

gdzie: ρ = (0, 1); s(k) – k-ta próbka sygnału, z(k) – próbka szumu.
Porównajmy macierz wektorów własnych macierzy kowariancji sygnału s (lewa)
oraz macierz przekształcenia DCT (prawa):

Podobieństwo pomiędzy oboma przekształceniami jest tym większe, im
współczynnik korelacji ρ jest bliższy jedności. Tym samym, DCT osiąga
optymalne własności dekorelacyjne (upakowanie energii, obniżenie entropii) dla
sygnałów wysoce skorelowanych.

background image

Podsumowanie DCT

Transformata o własnościach dekorelacyjnych zbliżonych do KLT, a więc prawie
optymalna.

DCT dokonuje analizy częstotliwościowej w sposób zbliżony do DFT, jednak
wymaga znacznie mniejszych zasobów systemowych – współczynniki DCT są
wyłącznie rzeczywiste.

DCT może być liczona w oparciu o algorytmy FFT.

Dla N próbek sygnału DCT produkuje N próbek jego widma, które nie wykazuje
symetrii cechującej DFT sygnałów rzeczywistych.

DCT tłumi wysokie harmoniczne powstające na krawędziach obrazu – silne
upakowanie energii i brak artefaktów (efekt Gibbsa).

DCT stosuje się zwykle do makrobloków 8x8 lub 16x16 px, co nie usuwa
korelacji pomiędzy blokami.

background image

Porównanie widm DFT i DCT ('cow.wav') pod kątem symetrii

Widmo DFT

Widmo DCT

background image

Powstawanie artefaktów na obrazach – nieciągłość transformat

Podział obrazu na bloki powoduje zerwanie ciągłości funkcji bazowych i powstanie
efektów krawędziowych widocznych zwłaszcza na względnie płaskich obszarach
obrazu (efekt maskowania wizualnego).

background image

Nieciągłość transformat na brzegach bloków

background image

Powstawanie artefaktów na obrazach – nieciągłości sygnału

Analiza sygnału przy pomocy funkcji ciągłych powoduje powstanie silnych
oscylacji (wysokie harmoniczne) w punktach nieciągłości sygnału (np. krawędzie
obiektów), co jest dodatkowo uwypuklone przez obcięcie wysokich harmonicznych
podczas kwantyzacji (efekt maskowania wizualnego).

0

5 0

1 0 0

1 5 0

-0 . 5

0

0 . 5

1

1 . 5

background image

Kodowanie makrobloków

background image

Zastosowanie DCT – kodowanie JPEG

Cechy formatu JPEG (nie mylić z JPEG 2000 (kompresja falkowa)):

pierwszy ogólnoświatowy standard kompresji obrazów cyfrowych,

typowe poziomy kompresji: od 10:1 do 50:1,

kompresja stratna lub bezstratna:

sekwencyjna,

progresywna (sukcesywne wyostrzanie obrazu – przesyłanie najpierw
składowych niskich i sukcesywne dosyłanie wysokich (Internet)),

hierarchiczna (wielorozdzielcza),

bezstratna.

background image

JPEG – ogólny schemat kodowania

background image

1 etap kodowania JPEG – przygotowanie obrazu

Przygotowanie obrazu – stratny,

separacja kolorów (RGB → YCbCr (YUV)),

podpróbkowanie chrominancji (4:2:0),

podział obrazu na bloki 8x8 px przetwarzane dalej niezależnie.

background image

Różnice w postrzeganiu luminancji i chrominancji

background image

2 etap kodowania JPEG – analiza

Analiza częstotliwościowa DCT – bezstratny,

współczynnik S(0,0) – składowa DC (średnie natężenie sygnału w całym
bloku),

współczynnik S(7,7) – składowa o najwyższej częstotliwości,

3 etap kodowania JPEG – progowanie i kwantyzacja

Progowanie i kwantyzacja – stratny,

progowanie DCT – usuwanie wsp. o wartościach poniżej ustalonego progu,

dzielenie wartości współczynników DCT przez wartości macierzy kwantyzera
t(u,v), mnożenie przez współczynnik jakości Q i zaokrąglanie
całkowitoliczbowe,

wyższe wartości t oznaczają większą kompresję, ale gorszą jakość (utrata
składowych DCT),

wyższe wartości t stosuje się zwykle dla składowych wysokiej częstotliwości

wyższe wartości Q oznaczają lepszą jakość, ale gorszą kompresję,

background image

Original block

Transformed block

139 144 149 153 155 155 155 155

235.

6

-1.0 -12.1 -5.2 2.1 -1.7 -2.7 1.3

144 151 153 156 159 156 156 156

-22.

6

-17.5 -6.2 -3.2 -2.9 -0.1 0.4 -1.2

150 155 160 163 158 156 156 156

-10.

9

-9.3 -1.6 1.5 0.2 -0.9 -0.6 -0.1

159 161 162 160 160 159 159 159

-7.1 -1.9 0.2 1.5 0.9 -0.1 0.0 0.3

159 160 161 162 162 155 155 155

-0.6 -0.8 1.5 1.6 -0.1 -0.7 0.6 1.3

161 161 161 161 160 157 157 157

1.8 -0.2 1.6 -0.3 -0.8 1.5 1.0 -1.0

162 162 161 163 162 157 157 157

-1.3 -0.4 -0.3 -1.5 -0.5 1.7 1.1 -0.8

162 162 161 161 163 158 158 158

-2.6 1.6 -3.8 -1.8 1.9 1.2 -0.6 -0.4

Quantization matrix

Quantized coefficients

16

11

10

16

24

40

51 61

15

0

-1

0

0

0

0

0

12

12

14

19

26

58

60 55

-2

-1

0

0

0

0

0

0

14

13

16

24

40

57

69 56

-1

-1

0

0

0

0

0

0

14

17

22

29

51

87

80 62

-1

0

0

0

0

0

0

0

18

22

37

56

68 109 103 77

0

0

0

0

0

0

0

0

24

35

55

64

81 104 113 92

0

0

0

0

0

0

0

0

49

64

78

87 103 121 120 101

0

0

0

0

0

0

0

0

72

92

95

98 112 100 103 99

0

0

0

0

0

0

0

0

Dequantized coefficients

Decompressed block

240

0

-10

0

0

0

0

0

144 146 149 152 154 156 156 156

-24 -12

0

0

0

0

0

0

148 150 152 154 156 156 156 156

-14 -13

0

0

0

0

0

0

155 156 157 158 158 157 156 156

0

0

0

0

0

0

0

0

160 161 161 162 161 159 157 155

0

0

0

0

0

0

0

0

163 163 164 163 162 160 158 156

0

0

0

0

0

0

0

0

163 164 164 164 162 160 158 157

0

0

0

0

0

0

0

0

160 161 162 162 162 161 159 158

0

0

0

0

0

0

0

0

158 159 161 161 162 161 159 158

background image

Strefowe próbkowanie vs. strefowe kodowanie transformaty

Odrzucamy składowe o najmniejszej spodziewanej energii. Kształt i wielkość stref
próbkowania może się zmieniać dynamicznie podczas kodowania.
Lepsze efekty daje strefowe kodowanie transformaty, gdzie na składowe niskie
przeznacza się 4-8 bitów, zaś na składowe wysokie 0-3 bitów.

background image

Tablice kwantyzerów

Jeszcze lepsze efekty daje użycie wielu tablic kwantyzerów, dostosowanych do
dynamiki sygnału w danym bloku (wartość wariancji), co wymaga jednak
kodowania dwuprzebiegowego (zebranie statystyk i podział bloków na klasy +
właściwe kodowanie z użyciem tablic kwantyzerów właściwych dla danej klasy).

Luminance

Chrominance

16 11 10 16 24 40 51 61

17 18 24 47 99 99 99 99

12 12 14 19 26 58 60 55

18 21 26 66 99 99 99 99

14 13 16 24 40 57 69 56

24 26 56 99 99 99 99 99

14 17 22 29 51 87 80 62

47 66 99 99 99 99 99 99

18 22 37 56 68 109 103 77

99 99 99 99 99 99 99 99

24 35 55 64 81 104 113 92

99 99 99 99 99 99 99 99

49 64 78 87 103 121 120 101

99 99 99 99 99 99 99 99

72 92 95 98 112 100 103 99

99 99 99 99 99 99 99 99

background image

Klasy obrazów

ORIGINAL IMAGE

TRANSFORMED IMAGE

FLAT

10

10

10

10

40.0

0.0

0.0

0.0

10

10

10

10

0.0

0.0

0.0

0.0

10

10

10

10

0.0

0.0

0.0

0.0

10

10

10

10

0.0

0.0

0.0

0.0

IMPULSE

10

10

10

10

42.5

1.4

-2.5

-3.2

10

20

10

10

1.4

0.7

-1.4

-1.8

10

10

10

10

-2.5

-1.4

2.5

3.3

10

10

10

10

-3.2

-1.8

3.3

4.3

EDGE (vertical)

10

10

20

20

60.0

-18.4

0.0

7.7

10

10

20

20

0.0

0.0

0.0

0.0

10

10

20

20

0.0

0.0

0.0

0.0

10

10

20

20

0.0

0.0

0.0

0.0

EDGE (horizontal)

10

10

10

10

60.0

0.0

0.0

0.0

10

10

10

10

-18.4

0.0

0.0

0.0

20

20

20

20

0.0

0.0

0.0

0.0

20

20

20

20

7.7

0.0

0.0

0.0

background image

4 etap kodowania JPEG – kodowanie widma

kolejkowanie tablicy współczynników (zig-zak)

background image

kodowanie długości serii (RLE) – bezstratny

background image

kodowanie Huffmana – bezstratny

Kodowanie odbywa się z użyciem 'drzewa kodowego':


Wyszukiwarka

Podobne podstrony:
DSP Wyk%b3ad 04 UWM
DSP Wyk%b3ad 02 UWM
DSP Wyk%b3ad 08 UWM
DSP Wyk%b3ad 07 UWM
DSP Wyk%b3ad 10 UWM
DSP Wyk%b3ad 05 UWM
DSP Wyk%b3ad 09 UWM
DSP Wyk%B3ad 01 UWM
DSP Wyk%b3ad 03 UWM
DSP Wyk%b3ad 13 UWM
DSP Wyk%b3ad 06 UWM
DSP Wyk%b3ad 04 UWM

więcej podobnych podstron