Transformaty. Kodowanie transformujace Kodowanie i kompresja informacji - Wykład 10 10 maja 2009
Szeregi Fouriera Każda funkcję okresowa f (t) o okresie T można zapisać jako f (t) = a 0 + a n cos nω 0 t + n=1 b n sin nω 0 t = c n e inω 0t i=1 n= gdzie ω 0 = 2π T i c n = 1 T T 0 f (t)e inω 0t dt.
Szeregi Fouriera Każda funkcję okresowa f (t) o okresie T można zapisać jako f (t) = a 0 + a n cos nω 0 t + n=1 b n sin nω 0 t = c n e inω 0t i=1 n= gdzie ω 0 = 2π T i c n = 1 T T 0 f (t)e inω 0t dt. Co daje reprezentacja Fouriera?
Szeregi Fouriera Każda funkcję okresowa f (t) o okresie T można zapisać jako f (t) = a 0 + a n cos nω 0 t + n=1 b n sin nω 0 t = c n e inω 0t i=1 n= gdzie ω 0 = 2π T i c n = 1 T T 0 f (t)e inω 0t dt. Co daje reprezentacja Fouriera? Współczynniki c n daja nam wielkości oscylacji występujacych w sygnale.
Szeregi Fouriera Każda funkcję okresowa f (t) o okresie T można zapisać jako f (t) = a 0 + a n cos nω 0 t + n=1 b n sin nω 0 t = c n e inω 0t i=1 n= gdzie ω 0 = 2π T i c n = 1 T T 0 f (t)e inω 0t dt. Co daje reprezentacja Fouriera? Współczynniki c n daja nam wielkości oscylacji występujacych w sygnale. Ale nie daje informacji jak sygnał zmienia się w czasie.
Transformata Fouriera Rozpatrzmy funkcję f (t) określona na przedziale [0, T ).
Transformata Fouriera Rozpatrzmy funkcję f (t) określona na przedziale [0, T ). Zdefiniujmy okresowe rozszerzenie f jako f P (t) = n= f (t nt ), gdzie dla t / [0, T ) przyjmujemy f (t) = 0.
Transformata Fouriera Rozpatrzmy funkcję f (t) określona na przedziale [0, T ). Zdefiniujmy okresowe rozszerzenie f jako f P (t) = n= f (t nt ), gdzie dla t / [0, T ) przyjmujemy f (t) = 0. f P (t) jest okresowa więc możemy dla niej zdefiniować szereg Fouriera c n = 1 T T /2 T /2 f P (t)e inω 0t dt
Transformata Fouriera Rozpatrzmy funkcję f (t) określona na przedziale [0, T ). Zdefiniujmy okresowe rozszerzenie f jako f P (t) = n= f (t nt ), gdzie dla t / [0, T ) przyjmujemy f (t) = 0. f P (t) jest okresowa więc możemy dla niej zdefiniować szereg Fouriera c n = 1 T T /2 T /2 f P (t)e inω 0t dt Zdefiniujmy C(n, T ) = c n T i ω = ω 0, wtedy C(n, T ) f P (t) = e in ωt dt T n=
Transformata Fouriera Aby odtworzyć f (t) obliczamy T /2 lim T, ω 0 T /2 f P (t)e inω 0t dt = f (t)e iωt dt
Transformata Fouriera Aby odtworzyć f (t) obliczamy T /2 lim T, ω 0 T /2 f P (t)e inω 0t dt = Transformata Fouriera nazywamy równanie F(ω) = f (t)e iωt dt f (t)e iωt dt Mówi ono jak sygnał zmienia się przy różnych częstotliwościach.
Transformata Fouriera Aby odtworzyć f (t) obliczamy T /2 lim T, ω 0 T /2 f P (t)e inω 0t dt = Transformata Fouriera nazywamy równanie F(ω) = f (t)e iωt dt f (t)e iωt dt Mówi ono jak sygnał zmienia się przy różnych częstotliwościach. Odwrotna transformata Fouriera nazywamy f (t) = 1 2π F(ω)e iωt dω
Dyskretna transformacja Fouriera Transformata Fouriera jest wykonywana dla funkcji ciagłych w czasie a w kompresji mamy do czynienia z ciagiem wartości (próbkowanie).
Dyskretna transformacja Fouriera Transformata Fouriera jest wykonywana dla funkcji ciagłych w czasie a w kompresji mamy do czynienia z ciagiem wartości (próbkowanie). Przypuśćmy, że próbkujemy N razy w okresie T. Wtedy współczynniki szeregu możemy otrzymać jako F k = 1 T T 0 N 1 f (t) δ(t nt /N)e ikω0t dt n=0 = 1 T N 1 f (nt /N)e i2πkn/n n=0
Dyskretna transformacja Fouriera Przyjmujac T = 1 i f n = f (n/n) otrzymamy współczynniki dyskretnego szeregu Fouriera N 1 F k = f n e i2πkn/n n=0
Dyskretna transformacja Fouriera Przyjmujac T = 1 i f n = f (n/n) otrzymamy współczynniki dyskretnego szeregu Fouriera N 1 F k = f n e i2πkn/n n=0 Przeprowadzajac odpowiednie przekształcenia otrzymamy f n = 1 N 1 F k e i2πkn/n N k=0
Transformata Z Analogicznie możemy utworzyć transformatę Fouriera dla funkcji próbkujacej.
Transformata Z Analogicznie możemy utworzyć transformatę Fouriera dla funkcji próbkujacej. Zmieniajac f (t) na funkcję spróbkowana otrzymujemy dyskretna transformatę Fouriera F(ω) = f n e iωnt, gdzie f n = f (nt ). n=
Transformata Z Analogicznie możemy utworzyć transformatę Fouriera dla funkcji próbkujacej. Zmieniajac f (t) na funkcję spróbkowana otrzymujemy dyskretna transformatę Fouriera F(ω) = f n e iωnt, n= gdzie f n = f (nt ). Transformata Z ciagu {f n } jest uogólnieniem DFT i dana wzorem F(z) = f n z n gdzie z = e σt +iωt. n=
Kodowanie transformujace - wprowadzenie Przekształcenie informacji w taki sposób aby po przekształceniu można było zrezygnować z części elementów.
Kodowanie transformujace - wprowadzenie Przekształcenie informacji w taki sposób aby po przekształceniu można było zrezygnować z części elementów. Podstawowy schemat kompresji ma 4 kroki
Kodowanie transformujace - wprowadzenie Przekształcenie informacji w taki sposób aby po przekształceniu można było zrezygnować z części elementów. Podstawowy schemat kompresji ma 4 kroki 1 Podziel sygnał wejściowy na bloki.
Kodowanie transformujace - wprowadzenie Przekształcenie informacji w taki sposób aby po przekształceniu można było zrezygnować z części elementów. Podstawowy schemat kompresji ma 4 kroki 1 Podziel sygnał wejściowy na bloki. 2 Oblicz przekształcenie każdego bloku.
Kodowanie transformujace - wprowadzenie Przekształcenie informacji w taki sposób aby po przekształceniu można było zrezygnować z części elementów. Podstawowy schemat kompresji ma 4 kroki 1 Podziel sygnał wejściowy na bloki. 2 Oblicz przekształcenie każdego bloku. 3 Skwantyzuj współczynniki.
Kodowanie transformujace - wprowadzenie Przekształcenie informacji w taki sposób aby po przekształceniu można było zrezygnować z części elementów. Podstawowy schemat kompresji ma 4 kroki 1 Podziel sygnał wejściowy na bloki. 2 Oblicz przekształcenie każdego bloku. 3 Skwantyzuj współczynniki. 4 Zakoduj skwantyzowane współczynniki kompresja bezstratna.
Kodowanie transformujace - wprowadzenie Przekształcenie informacji w taki sposób aby po przekształceniu można było zrezygnować z części elementów. Podstawowy schemat kompresji ma 4 kroki 1 Podziel sygnał wejściowy na bloki. 2 Oblicz przekształcenie każdego bloku. 3 Skwantyzuj współczynniki. 4 Zakoduj skwantyzowane współczynniki kompresja bezstratna. Odkodowywanie jest odwrotnościa kodowania.
Przykład Rozpatrzmy pary (wzrost,waga): (165, 77), (190, 85), (152, 68), (178, 77), (142, 59), (203, 92), (173, 73), (127, 50), (102, 36), (127, 70), (175, 67), (157, 64), (193, 74), (163, 54)
Przykład Rozpatrzmy pary (wzrost,waga): (165, 77), (190, 85), (152, 68), (178, 77), (142, 59), (203, 92), (173, 73), (127, 50), (102, 36), (127, 70), (175, 67), (157, 64), (193, 74), (163, 54) Łatwo zauważyć że pary skupiaja się wokół prostej y = 0, 41x.
Przykład Rozpatrzmy pary (wzrost,waga): (165, 77), (190, 85), (152, 68), (178, 77), (142, 59), (203, 92), (173, 73), (127, 50), (102, 36), (127, 70), (175, 67), (157, 64), (193, 74), (163, 54) Łatwo zauważyć że pary skupiaja się wokół prostej y = 0, 41x. Możemy obrócić ten [ zbiór ] stosujac przekształcenie x θ = Az, gdzie z = odpowiada parze y wzrost-waga, a A jest macierza obrotu postaci [ ] cos φ sin φ A = sin φ cos φ a φ katem nachylenia prostej do osi x-ów.
Przykład Ciag po przekształceniu (i zaokragleniu do liczb całkowitych) ma postać (182, 7), (208, 5), (166, 4), (194, 2), (154, 1), (223, 6), (188, 0), (136, 3), (108, 6), (144, 15), (187, 6), (170, 2), (199, 25), (171, 13)
Przykład Ciag po przekształceniu (i zaokragleniu do liczb całkowitych) ma postać (182, 7), (208, 5), (166, 4), (194, 2), (154, 1), (223, 6), (188, 0), (136, 3), (108, 6), (144, 15), (187, 6), (170, 2), (199, 25), (171, 13) Teraz usuńmy drugi każdej pary.
Przykład Ciag po przekształceniu (i zaokragleniu do liczb całkowitych) ma postać (182, 7), (208, 5), (166, 4), (194, 2), (154, 1), (223, 6), (188, 0), (136, 3), (108, 6), (144, 15), (187, 6), (170, 2), (199, 25), (171, 13) Teraz usuńmy drugi każdej pary. Dekompresja ciagu z zerem na drugim miejscu jest wykonywana za pomoca macierzy [ ] cos φ sin φ A = sin φ cos φ
Przykład Ciag po przekształceniu (i zaokragleniu do liczb całkowitych) ma postać (182, 7), (208, 5), (166, 4), (194, 2), (154, 1), (223, 6), (188, 0), (136, 3), (108, 6), (144, 15), (187, 6), (170, 2), (199, 25), (171, 13) Teraz usuńmy drugi każdej pary. Dekompresja ciagu z zerem na drugim miejscu jest wykonywana za pomoca macierzy [ ] cos φ sin φ A = sin φ cos φ Wynikowy ciag to (168, 70), (192, 81), (153, 64), (179, 75), (142, 60), (206, 86), (173, 73), (125, 53), (100, 42), (133, 56), (172, 72), (157, 66), (183, 77), (158, 66)
Przekształcenia liniowe Ciag {x 0,..., x N 1 } przekształcamy na ciag {θ 0,..., θ N 1 } w następujacy sposób N 1 θ j = x i a j,i i=0
Przekształcenia liniowe Ciag {x 0,..., x N 1 } przekształcamy na ciag {θ 0,..., θ N 1 } w następujacy sposób N 1 θ j = x i a j,i i=0 Oryginalny ciag możemy odtworzyć za pomoca przekształcenia odwrotnego N 1 x j = θ i b j,i i=0
Przekształcenia liniowe Ciag {x 0,..., x N 1 } przekształcamy na ciag {θ 0,..., θ N 1 } w następujacy sposób N 1 θ j = x i a j,i i=0 Oryginalny ciag możemy odtworzyć za pomoca przekształcenia odwrotnego N 1 x j = θ i b j,i i=0 Można rozszerzyć przekształcenia jednowymiarowe (dźwięk) na dwuwymiarowe (obrazy).
Przekształcenia liniowe Ciag {x 0,..., x N 1 } przekształcamy na ciag {θ 0,..., θ N 1 } w następujacy sposób N 1 θ j = x i a j,i i=0 Oryginalny ciag możemy odtworzyć za pomoca przekształcenia odwrotnego N 1 x j = θ i b j,i i=0 Można rozszerzyć przekształcenia jednowymiarowe (dźwięk) na dwuwymiarowe (obrazy). Wszystkie przekształcenia będa ortonormalne (łatwo wyliczyć przekształcenia odwrotne).
Przekształcenie Karhunena-Loevego Wiersze macierzy przekształcenia zawieraja wektory własne macierzy autokorelacji.
Przekształcenie Karhunena-Loevego Wiersze macierzy przekształcenia zawieraja wektory własne macierzy autokorelacji. Macierz autokorelacji procesu losowego X ma postać [R] i,j = E[X n X n+ i j ]
Przekształcenie Karhunena-Loevego Wiersze macierzy przekształcenia zawieraja wektory własne macierzy autokorelacji. Macierz autokorelacji procesu losowego X ma postać [R] i,j = E[X n X n+ i j ] Przekształcenie skonstruowane w ten sposób minimalizuje średnia geometryczna wariancji współczynników przekształcenia.
Przekształcenie Karhunena-Loevego Wiersze macierzy przekształcenia zawieraja wektory własne macierzy autokorelacji. Macierz autokorelacji procesu losowego X ma postać [R] i,j = E[X n X n+ i j ] Przekształcenie skonstruowane w ten sposób minimalizuje średnia geometryczna wariancji współczynników przekształcenia. Wada metody: Jeśli rozkład danych nie jest stacjonarny to macierz autokorelacji zmienia się w czasie. Trzeba co jakiś czas na nowo wyliczyć ta macierz i przesłać odbiorcy (nie zna ciagu wejściowego).
Przykład Rozważmy przekształcenie KLT rozmiaru 2.
Przykład Rozważmy przekształcenie KLT rozmiaru 2. Macierz autokorelacji rozmiaru 2 dla procesu stacjonarnego [ ] RXX (0) R R = XX (1) R XX (1) R XX (0)
Przykład Rozważmy przekształcenie KLT rozmiaru 2. Macierz autokorelacji rozmiaru 2 dla procesu stacjonarnego [ ] RXX (0) R R = XX (1) R XX (1) R XX (0) Rozwiazuj ac równanie λi R = 0 otrzymujemy dwie wartości własne: λ 1 = R XX (0) + R XX (1) oraz λ 2 = R XX (0) [ R XX ] (1). Wektory [ własne ] maja wtedy α β postać V 1 = oraz V α 2 =, gdzie α, β sa β odpowiednimi stałymi.
Przykład Rozważmy przekształcenie KLT rozmiaru 2. Macierz autokorelacji rozmiaru 2 dla procesu stacjonarnego [ ] RXX (0) R R = XX (1) R XX (1) R XX (0) Rozwiazuj ac równanie λi R = 0 otrzymujemy dwie wartości własne: λ 1 = R XX (0) + R XX (1) oraz λ 2 = R XX (0) [ R XX ] (1). Wektory [ własne ] maja wtedy α β postać V 1 = oraz V α 2 =, gdzie α, β sa β odpowiednimi stałymi. Jeśli narzucimy warunek ortonormalności to α = β = 1/ 2.
Przykład Rozważmy przekształcenie KLT rozmiaru 2. Macierz autokorelacji rozmiaru 2 dla procesu stacjonarnego [ ] RXX (0) R R = XX (1) R XX (1) R XX (0) Rozwiazuj ac równanie λi R = 0 otrzymujemy dwie wartości własne: λ 1 = R XX (0) + R XX (1) oraz λ 2 = R XX (0) [ R XX ] (1). Wektory [ własne ] maja wtedy α β postać V 1 = oraz V α 2 =, gdzie α, β sa β odpowiednimi stałymi. Jeśli narzucimy warunek ortonormalności to α = β = 1/ 2. Dla rozmiaru 2 przekształcenie KLT nie zależy od wartości korelacji. Dla wyższych wymiarów zależy.
Dyskretne przekształcenie kosinusowe (DCT) Macierz przekształcenia N N 1 [C] i,j = N 2 N cos (2j+1)iπ 2N dla i = 0 cos (2j+1)iπ 2N dla i 0
Dyskretne przekształcenie kosinusowe (DCT) Macierz przekształcenia N N 1 [C] i,j = N 2 N cos (2j+1)iπ 2N dla i = 0 cos (2j+1)iπ 2N dla i 0 Przekształcenie blisko zwiazane z dyskretna transformata Fouriera.
Dyskretne przekształcenie kosinusowe (DCT) Macierz przekształcenia N N 1 [C] i,j = N 2 N cos (2j+1)iπ 2N dla i = 0 cos (2j+1)iπ 2N dla i 0 Przekształcenie blisko zwiazane z dyskretna transformata Fouriera. Jest łatwiejsza do policzenia i lepiej się sprawdza niż DFT.
Dyskretne przekształcenie kosinusowe (DCT) Macierz przekształcenia N N 1 [C] i,j = N 2 N cos (2j+1)iπ 2N dla i = 0 cos (2j+1)iπ 2N dla i 0 Przekształcenie blisko zwiazane z dyskretna transformata Fouriera. Jest łatwiejsza do policzenia i lepiej się sprawdza niż DFT. Używana do obrazów i dźwięków.
Baza DCT (numery odpowiadaja wierszom macierzy przekształcenia)
Macierze bazy DCT
Porównanie DFT i DCT DFT: DCT:
Dyskretne przekształcenie sinusowe Macierz przekształcenia N N 2 π(i + 1)(j + 1) [S] i,j = sin N + 1 N + 1
Dyskretne przekształcenie sinusowe Macierz przekształcenia N N 2 π(i + 1)(j + 1) [S] i,j = sin N + 1 N + 1 Lepsze niż kosinusowe gdy współczynnik korelacji ρ = E[xnx n+1] jest mały. E[xn 2 ]
Dyskretne przekształcenie sinusowe Macierz przekształcenia N N 2 π(i + 1)(j + 1) [S] i,j = sin N + 1 N + 1 Lepsze niż kosinusowe gdy współczynnik korelacji ρ = E[xnx n+1] jest mały. E[xn 2 ] Uzupełnia przekształcenie kosinusowe.
Dyskretne przekształcenie Walsha-Hadamarda Macierz przekształcenia N N Macierz Hadamarda rzędu N jest zdefiniowana wzorem HH T = NI. Dla potęg dwójki jest łatwa do wyliczenia ze wzoru: [ ] HN H H 2N = N H N H N Macierz przekształcenia uzyskujemy przez normalizację i ustawienie kolumn w porzadku ilości zmian znaków (+ na - i odwrotnie).
Dyskretne przekształcenie Walsha-Hadamarda Macierz przekształcenia N N Macierz Hadamarda rzędu N jest zdefiniowana wzorem HH T = NI. Dla potęg dwójki jest łatwa do wyliczenia ze wzoru: [ ] HN H H 2N = N H N H N Macierz przekształcenia uzyskujemy przez normalizację i ustawienie kolumn w porzadku ilości zmian znaków (+ na - i odwrotnie). Bardzo proste do uzyskania i implementacji.
Dyskretne przekształcenie Walsha-Hadamarda Macierz przekształcenia N N Macierz Hadamarda rzędu N jest zdefiniowana wzorem HH T = NI. Dla potęg dwójki jest łatwa do wyliczenia ze wzoru: [ ] HN H H 2N = N H N H N Macierz przekształcenia uzyskujemy przez normalizację i ustawienie kolumn w porzadku ilości zmian znaków (+ na - i odwrotnie). Bardzo proste do uzyskania i implementacji. Minimalizuje ilość obliczeń.
Zastosowanie do kompresji obrazów JPEG Zalecana transformacja jest DCT.
Zastosowanie do kompresji obrazów JPEG Zalecana transformacja jest DCT. Przedział kolorów przesuwamy z [0, 2 n 1] na [ 2 n 1, 2 n 1 1].
Zastosowanie do kompresji obrazów JPEG Zalecana transformacja jest DCT. Przedział kolorów przesuwamy z [0, 2 n 1] na [ 2 n 1, 2 n 1 1]. Obraz dzielimy na bloki rozmiaru 8 8.
Zastosowanie do kompresji obrazów JPEG Zalecana transformacja jest DCT. Przedział kolorów przesuwamy z [0, 2 n 1] na [ 2 n 1, 2 n 1 1]. Obraz dzielimy na bloki rozmiaru 8 8. Bloki przekształcamy transformacja DCT.
Zastosowanie do kompresji obrazów JPEG Zalecana transformacja jest DCT. Przedział kolorów przesuwamy z [0, 2 n 1] na [ 2 n 1, 2 n 1 1]. Obraz dzielimy na bloki rozmiaru 8 8. Bloki przekształcamy transformacja DCT. Stosujemy kwantyzację jednolita.
Algorytm JPEG kolejność kodowania
Zastosowanie do kompresji dźwięków Stosowane w MPEG Layer III.
Zastosowanie do kompresji dźwięków Stosowane w MPEG Layer III. Kodowanie oparte na DCT i DST.