Kompresja danych DKDA (11) Marcin Gogolewski marcing@wmi.amu.edu.pl Uniwersytet im. Adama Mickiewicza w Poznaniu Poznań, 20 grudnia 2016
Idea Schematy typu analiza-synteza Główna idea Zamiast otrzymywać przybliżenia kolejnych wartości sygnału źródłowego, modelujemy sygnał wejściowy i przesyłamy parametry modelu. Odbiornik na podstawie otrzymanych parametrów syntetyzuje sygnał źródłowy. Metoda stosowana najczęściej do kompresji mowy. Stosujemy model symulujący działanie narządu mowy wysyłając takie parametry jak dźwięczność czy bezdźwięczność, szybkość przepływu powietrza czy naprężenie strun głosowych.
Kodowanie dźwięku Schemat systemu Sygnał wzbudzenia, najczęściej dwóch różnych typów: szum lub pewna ustalona częstotliwość dźwięku. Filtr model narządu mowy. Pierwsze prace nad mówiącymi maszynami sięgają XVIII wieku!
Kodowanie dźwięku Głoska dźwięczna
Kodowanie dźwięku Głoska bezdźwięczna
Kodowanie dźwięku Schemat model syntezy mowy
Kodowanie dźwięku Schemat wokoder odbiornika
Kodowanie obrazów Schematy typu analiza-synteza w kodowaniu obrazów Są prowadzone badania nad zastosowaniem tego typu schematów w kompresji obrazów, jednak modele tego typu nie doczekały się jeszcze implementacji na szerszą skalę (przykład: generowanie modelu twarzy mówiącego, zamiast przesyłania samych obrazów).
Wprowadzenie Wprowadzenie Zdefiniowane na kolejnych slajdach pojęcia dotyczą sygnałów, jednak większość z nich mogłaby być bardziej ogólna (tzn. nie są to terminy mające w teorii sygnałów jakieś odmienne znaczenie czasami można jednak przyjąć pewne drobne uproszczenia). Większość z definiowanych pojęć (może nawet wszystkie) wystąpiło już albo na wcześniejszych wykładach, albo w programie innych (obowiązkowych!) przedmiotów.
Wprowadzenie Przestrzenie (sygnałów deterministycznych) Przestrzeń metryczna Zbiór sygnałów w którym zdefiniowana jest metryka funkcjonał przyporządkowujący dowolnym dwóm sygnałom x i y nieujemną liczbę ρ(x, y) R spełniający warunki: 1 tożsamości (ρ(x, y) = 0 x = y), 2 symetrii (ρ(x, y) = ρ(y, x)), 3 nierówności trójkąta (ρ(x, y) + ρ(y, z) ρ(x, z)).
Wprowadzenie Przestrzenie (sygnałów deterministycznych) (2) Przestrzeń liniowa Zbiór sygnałów z operacjami dodawania sygnałów oraz mnożenia sygnałów (x, y, z) przez liczbę (α, β) takimi, że: 1 x + y = y + x, 2 (x + y) + z = x + (y + z), 3 α (x + y) = α x + α y, 4 α (β x) = (α β) x, 5 istnieje element 0 taki, że 0 x = 0, 6 istnieje element 1 taki, że 1 x = x.
Wprowadzenie Przestrzenie (sygnałów deterministycznych) (3) Przestrzeń liniowa unormowana Przestrzeń liniowa z odwzorowaniem R (normą) takim, że dla każdego sygnału x: 1 x 0, 2 x = 0 x = 0, 3 α x = α x, 4 x + y x + y.
Iloczyn skalarny Iloczyn skalarny Iloczyn skalarny Odwzorowanie przyporządkowujące uporządkowanej parze sygnałów (x, y) liczbę x, y taką, że: 1 x, y = y, x, 2 α x + β y, z = α x, z + β y, z, 3 x 0 x, x > 0, 4 x = 0 x, x = 0, gdzie * oznacza sprzężenie zespolone.
Iloczyn skalarny Przestrzenie (sygnałów deterministycznych) (4) Przestrzeń unitarna Przestrzeń liniowa, w której określony jest iloczyn skalarny x, y i która jest unormowana przez normę związaną z tym iloczynem x = x, x. Przestrzeń unitarna ortogonalność Sygnały x i y są ortogonalne, jeżeli x, y = 0. Przestrzeń unitarna ortonormalność Sygnały x i y są ortonormalne (unormowane), jeżeli są ortogonalne oraz x, x = y, y = 1.
Iloczyn skalarny Przestrzeń Hilberta (dygresja) Przestrzeń Hilberta Przestrzeń unitarna, metrycznie zupełna (każdy ciąg Cauchy ego ma granicę w tej przestrzeni) (rzeczywista lub zespolona). Przykład przestrzenie euklidesowe Dla każdego n N przestrzenie R n oraz C n z iloczynem skalarnym zdefiniowanym jako x, y = n j x j yj jest przestrzenią Hilberta.
Iloczyn skalarny Baza i liniowa niezależność Liniowa niezależność Zbiór (np. wektorów) S = {v 1, v 2,..., v n } nazywamy liniowo niezależnym, jeżeli nie istnieje taki ciąg liczb rzeczywistych a 1, a 2,..., a n nie wszystkich równych 0 taki, że n a i v i = 0. i=0 Baza Bazą nazywamy maksymalny zbiór wektorów liniowo niezależnych w danej przestrzeni liniowej (każdy wektor z tej przestrzeni może zostać przedstawiony jako kombinacja liniowa wektorów z bazy).
Wprowadzenie Podstawowe informacje Bezpośrednie obliczenie DFT ze wzoru N 1 X k = x n e i2πk n N, n=0 dla k = 0, 1,..., N 1 wymaga O(N 2 ) operacji. Algorytmy FFT wymagają O(N log N) (dla uproszczenia załóżmy, że N jest potęgą dwójki, w razie potrzeby można inaczej próbkować sygnał). Dla jednowymiarowego DFT/FFT daje to około 800 tys. razy szybsze wykonanie przy N = 2048. Wykonywanie większych obliczeń przed powstaniem szybkiego algorytmu było praktycznie niemożliwe. Wyniki DFT i FFT są identyczne (zakładając tę samą precyzję obliczeń).
Wprowadzenie Podstawowe informacje (2) Algorytm odkryty ponownie w 1965 (Cooley-Tukey). Używany przez Carla Friedricha Gaussa do interpolacji trajektorii asteroid w 1805 (opublikowany pośmiertnie). Zajmiemy się najprostszym przypadkiem radix-2, DIT (podstawa dwa, decymacja w czasie) w praktyce używa się nieco zmodyfikowanych wersji.
Algorytm Algorytm Dzielimy sygnał na dwa przeplatające się sygnały i obliczamy DFT N 1 X k = x n e i2πk n N, n=0 obu sygnałów, tzn. x 0, x 2,... x 2m 2 oraz x 1, x 3,..., x 2m 1 (N = 2m), oczywiście możemy dalej te sygnały dzielić rekurencyjnie.
Algorytm Algorytm (2) X[0..N-1] ditfft2(x, N, s): if N = 1 then X[0]:=x[0] else for i:=0 to N/2-1: X[i] :=ditfft2(x, N/2, 2s) // DFT(x[0], x[2s], x[4 X[i+N/2]:=ditFFT2(x+s, N/2, 2s) // DFT(x[s], x[3s], x[5 for k=0 to N/2-1: t :=X[k] X[k] :=t+exp(-2ni k/n) X[k+N/2] X[k+N/2]:=t-exp(-2ni k/n) X[k+N/2]
Algorytm Algorytm dlaczego działa Przypomnijmy. DFT to X k = N 1 n=0 x ne i2πk n N. Możemy jednak liczyć najpierw parzyste, a następnie nieparzyste składniki X k = = N/2 1 m=0 N/2 1 m=0 x 2m e i2πk 2m N x 2m e i2πk 2m N = E k + e 2πik N Ok. N/2 1 + m=0 + e 2πik N 2m+1 i2πk x 2m+1 e N N/2 1 m=0 x 2m+1 e i2πk 2m N Ze względu na okresowość DFT: E k+n/2 = E k oraz O k+n/2 = O k
Algorytm Algorytm dlaczego działa (2) Ostatecznie DFT możemy obliczyć jako: { Ek + e 2πik N O k dla k < N/2 X k = E k N/2 e 2πi(k N/2) N O k N/2 dla k N/2.
Metody kompresji stratnej śledzenie i upraszczanie zmian sygnału (np. ADPCM) przekształcanie do dziedziny częstotliwości i kwantyzacja współczynników (np. JPEG) metoda eliminacji niepotrzebnych składowych (kodowanie podpasmowe, częściowo MPEG) modelowanie w sposób uproszczony źródeł generowania sygnału
Szkic algorytmu podstawowa informacja zawarta w paśmie 300-3500Hz, zatem stosowany jest filtr antyaliasingowy (dolnoprzepustowy) o częstotliwości odcięcia 3500Hz, zgodnie z regułą próbkujemy 8000/s próbkujemy z rozdzielczością 7-16 bitów (kwantyzatorem liniowym lub z kompanderem, np. µ-law (USA), czy A-law (Europa)) dzielimy na krótkie fragmenty (np. 30ms) wyznaczamy parametry modelu (zwykle najpierw decydujemy, czy głoska była dźwięczna, czy bezdźwięczna, a potem określamy pozostałe parametry traktu głosowego) i przesyłamy do dekodera (lub zapisujemy)
Kwantyzatory µ-law, A-law stosowane głównie do kwantyzacji sygnału dźwięku gęściej próbkują sygnał w okolicy zera zapewniają percepcyjnie lepszą jakość dźwięku (przy tym samym bitrate), np. 8-bitowy logarytmiczny można porównać do 12-bitowego liniowego przekształcenie kodujące µ-law to: ln (1 + µ x ) F (x) = sgn(x) ln (1 + µ), gdzie µ = 255 (funkcja F (x) przyjmuje wartości z przedziału ( 1, 1), dla x z takiego przedziału) wersja dyskretna może być przedstawiona za pomocą kilkunastoelementowej tabeli
Trakt głosowy Moduł charakterystyki amplitudowo-częstotliwościowej ma cztery maksima, zatem potrzeba co najmniej czterech biegunów transmitancji, leżących wewnątrz okręgu jednostkowego, blisko pulsacji rezonansowych traktu głosowego. Ze względu na lepszą charakterystykę wykorzystywany jest filtr IIR. Ponieważ będą to bieguny zespolone, a wielomian mianownika ma mieć wyłącznie współczynniki rzeczywiste, to... muszą być one sprzężone (stąd mamy już 8). W praktyce przyjmuje się dziesiąty rząd wielomianu H(z) = = G A(z) = G 1 + a 1 z 1 + a 2 z 2 +... + a 10 z 10 G (1 p 1 z 1 )(1 p1 z 1 )... (1 p 5 z 1 )(1 p5 z 1 ).
Projektowanie filtrów metodą zer i biegunów
Wyznaczanie parametrów Wyznaczanie parametrów sprowadza się do wyznaczenia wzmocnienia G oraz współczynników a 1,..., a k. Transmitancji H(z) odpowiada następujące równanie czasowe filtra syntezy s(n) = G e(n) 10 k=1 a k s(n k)
Wyznaczanie (bez)dźwięczności Jak sprawdzić, czy dany fragment (np. 30ms) należy do głoski dźwięcznej, czy do bezdźwięcznej? Wykorzystujemy funkcję autokorelacji lub AMDF (Average Magnitude Difference Function) śledzące zmienność okresu tonu podstawowego. Ciekawostka Ze względu na ograniczenie konstrukcyjne narządu głosu człowieka przyjmuje się, że ramka dźwięczna nie może leżeć pomiędzy bezdźwięcznymi i na odwrót (bez względu na wstępną klasyfikację).
Wyznaczanie (bez)dźwięczności (2) Metoda funkcji autokorelacji Definiujemy funkcję r(k) = N 1 n=0 s(n)s(n + k), gdzie s(n) oznacza sygnał mowy po: filtracji filtrem dolnoprzepustowym o częstotliwości granicznej 900Hz: x (n) = M 1 k=0 h(k)x(n k) wymnożenia wyniku z oknem Hamminga w(n): s(n) = x (n) w(n), gdzie w(n) = 0, 54 0, 46cos( 2πn N 1 ), 0 n N 1.
LPC-10
LPC-10
LPC-10
LPC-10
LPC-10
LPC-10
LPC-10
LPC-10
LPC-10
LPC-10
LPC-10
LPC-10
LPC-10
LPC-10
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
O co z tymi oknami chodzi
Wyznaczanie (bez)dźwięczności (3) Metoda funkcji autokorelacji przypomnienie Definiujemy funkcję r(k) = N 1 n=0 s(n)s(n + k), gdzie s(n) oznacza sygnał mowy po przekształceniach. Obliczamy pierwsze globalne maksimum r(k) po k > K 0 (K 0 zależy m.in. od częstotliwości próbkowania). Jeżeli jest ono większe od wartości 0, 3 r(0) (do 0, 35), to uznajemy fragment za dźwięczny, w przeciwnym razie za bezdźwięczny.
Wyznaczanie (bez)dźwięczności (4) Ciekawostka W przeszłości wykorzystywano funcję AMDF zdefiniowaną jako N 1 D(k) = s(n) s(n + k), n=0 ze względu na to, że procesory krócej wykonywały dodawanie niż mnożenie.
Matroska strona domowa: http://www.matroska.org obsługa wielu strumieni audio/wideo/napisów obsługa menu (podobnie jak w DVD) podział na rozdziały szybkie wyszukiwanie w pliku możliwe strumieniowanie (HTTP, FTP, CIFS) odporność na błędy (np. brakująca część pliku) możliwe dalsze rozszerzenia (modularna budowa) EBML (Extensible Binary Meta Language)
AVI następca RIFF z 1991 (a pośrednio Interchange File Format (IFF) Electronic Arts z 1985) plik podzielony jest na kawałki (chunks), z których każdy ma swój identyfikator FourCC (ang. four-character code) standardowo: hdrl metadane określające plik video, tzn. rozmiar obrazu i liczbę klatek, movi dane audiowizualne, idxl informacje o położeniu kawałków wewnątrz pliku strona z opisem: http://www.jmcgowan.com/avi.html
MP4 - MPEG-4 Part 14 format pliku (tzn. np. nie strumień) standard z 2003 roku bardziej przemyślany niż AVI, ale nie oferujący wielu nowych możliwości jeżeli plik zawiera tylko strumień audio, to czasami ma rozszerzenie.m4a (zamiast mp4)
3GP uproszczona wersja MP4 wideo zwykle w formacie MPEG-4 część 2 lub H.263 audio często w AMR-NB lub AAC-LC (trochę nietypowe i częściowo opatentowane) ciekawostka: bajty w kolejności big-endian
ASF Advanced Systems Format dawniej nazywany Advanced Streaming Format głównie do przechowywania strumieni WMA i WMV objęty patentem i według obowiązującej licencji nie jest możliwa konwersja plików ASF do innego formatu!
Inne kontenery wideo Ogg MPEG2 QuickTime RealMedia (CBR) RMVB (VBR) WebM (kontener oparty na Matroska, cel: HTML5, proponowany przez Google)
Podsumowanie Wiele standardów kompresji (np. JPEG) nie definiuje formatu pliku. Często format jest zapożyczany (np. format TIFF w przypadku JPEG) lub tworzony, gdy zaistnieje taka potrzeba (obecnie pliki kodowane algorytmem JPEG zapisywane są najczęściej w JFIF JPEG File Interchange Format).