Ćwiczenie 5 Próbkowanie i rekonstrukcja sygnałów
Próbkowanie jest procesem, który przekształca sygnał o ciągłym czasie w sygnał o czasie dyskretnym. Próbki sygnału czasu dyskretnego reprezentują spróbkowany sygnał ciągły. W zastosowaniach praktycznych próbkowanie dokonywane jest z wykorzystaniem przetworników analogowo-cyfrowych (A/C).
Schemat systemu przetwarzania sygnału analogowego w sygnał cyfrowy
Aby sygnał z czasem dyskretnym w sposób wystarczający reprezentował sygnał ciągły należy go próbkować z odpowiednią częstotliwością. Podstawową cechą sygnału z czasem dyskretnym jest jego niejednoznaczność w dziedzinie częstotliwości. Oznacza to iż, podczas odtwarzania sygnału do jego postaci z czasem ciągłym istnieje kilka możliwych rozwiązań. Istnieje nieskończona ilość sygnałów ciągłych, które w wybranych chwilach czasowych (dyskretnych) posiadają identyczne wartości. Nawet jeżeli próbkowany sygnał był sinusoidalny istnieje kilka częstotliwości sygnału ciągłego reprezentujących sygnał z czasem dyskretnym. Rozważmy sygnał sinusoidalny:
gdzie fo - oznacza częstotliwość tego sygnału,
Jeżeli poddamy taki sygnał próbkowaniu równomiernemu z częstotliwością fs, otrzymamy zbór wartości w dyskretnych chwilach czasowych o odstępie
. Wartość kolejnej próbki określić możemy następującym wzorem:
Ponieważ dla dowolnej liczby całkowitej m zapisać możemy
więc prawdziwe jest również równanie:
gdzie:
; czyli
, tzn. m jest k-krotną wielokrotnością n.
Możemy więc zapisać, iż
co oznacza iż ciąg próbek z sygnałem dyskretnym reprezentuje nie tylko jedną ciągłą sinusoidę o częstotliwości f0 ale również przebiegi o częstotliwościach równych sumie częstotliwości przebiegu podstawowego oraz wielokrotności częstotliwości próbkowania. Mając więc próbki o czasie dyskretnym nie jesteśmy w stanie rozróżnić częstotliwości przebiegu.
Rozciągając powyższy przykład z przebiegiem sinusoidalnym na przebieg dowolnego sygnału ciągłego o określonym widmie ciągłym, widmo spróbkowanego sygnału będzie zawierało okresowe powielania widma sygnału ciągłego. Przy czym okresy powielania widma będą od siebie odległe o częstotliwość próbkowania. Co się jednak stanie gdy sygnał będzie się składał z dwu sinusoid o częstotliwościach f0 oraz f0+kfs? Nie jest wtedy możliwe jednoznaczne rozróżnienie tych przebiegów a efekt ten nazywamy aliasingiem. Dlatego też w praktycznych przypadkach próbkowanie należy prowadzić co najmniej z częstotliwością dwukrotnie większą, niż maksymalna częstotliwość sygnału ciągłego. Jeżeli w sygnale ciągłym obserwować możemy częstotliwości większe niż połowa częstotliwości próbkowania przed przetwornikiem A/C stosuje się dolnoprzepustowy filtr analogowy, który wycina wyższe częstotliwości. Filtry takie nazywa się filtrami antyaliasingowymi.
Zjawisko powielania częstotliwości cyfrowej oraz aliasningu w przypadku zbyt małej częstotliwości próbkowania.
Zmniejszenie wpływu zakłóceń o częstotliwości wyższej niż połowa częstotliwości próbkowania dzięki zastosowaniu filtru antyaliasingowego (brak widma narysowanego linią przerywaną).
Na błędy powstałe podczas próbkowania ma wpływ wiele czynników. Jednym z nich jest nieokreśloność czasu próbkowania, zarówno przy próbkowaniu jak i odtwarzaniu. Rozważając przykładowy sygnał sinusoidalny, najgorszym przypadkiem wpływu nieokreśloności czasu jest próbkowanie w momencie największego nachylenia sygnału. Wpływ nieokreśloności czasu jest niezauważalny gdy zmiana amplitudy jest mniejsza niż wartość najmniej znaczącego bitu.
,
najmniejsza zmiana amplitudy odpowiadająca wartości najmniejszego bitu wynosi:
Z powyższych zależności wyprowadzić można wzór na maksymalną nieokreśloność czasu próbkowania:
Nieuniknionym błędem podczas zamiany sygnału analogowego na cyfrowy jest błąd kwantyzacji. Jeżeli za q przyjmiemy elementarny przedział kwantyzacji, który określa liczba poziomów kwantyzacji n, błąd kwantyzacji mieści się wtedy w granicach:
Jeżeli założymy równomierny rozkład błędu kwantyzacji otrzymamy wartość skuteczną błędu kwantyzacji:
Ponieważ wartość skuteczną sygnału zapisać można jako:
Stosunek sygnału do szumu wynosi wtedy odpowiednio:
oraz w decybelach:
Wzór ten jest ważny dla przetworników o liczbie bitów większej niż 5. Zdefiniować możemy teraz pojęcie zakresu dynamicznego, który jest równy stosunkowi sygnału do szumu zmierzonemu w paśmie równym połowie częstotliwości próbkowania.
Jednym ze sposobów zmniejszenia błędu kwantyzacji jest zastosowanie nadpróbkowania czyli częstotliwości próbkowania większej niż maksymalna częstotliwość sygnału. Zwiększenie rozdzielczości następuje wtedy poprzez losowy rozkład błędu w szerszym paśmie. Stosunek sygnału do szumy zapisać można odpowiednio:
Gdzie fno - częstotliwość próbkowania większa dwukrotnie od największej częstotliwości sygnału. Powyższe wzory są prawdziwe dla symetrycznej charakterystyki przetwarzania przetworników.
Próbkowanie pasmowe
Jeżeli sygnał ciągły jest skupiony wokół pełnej częstotliwości a szerokość sygnału jest ograniczona możemy zastosować inny rodzaj próbkowania znany pod nazwami próbkowanie harmoniczne, próbkowanie poniżej częstotliwości Nyquista, podpróbkowanie. W tym rodzaju próbkowania najważniejsza jest szerokość widma sygnału a nie jego częstotliwość maksymalna. Okazuje się, iż sygnał taki próbkować można z częstotliwością mniejszą niż dwukrotna częstotliwość maksymalna przebiegu. Istnieją pewne zasady co do wyboru takiej niższej częstotliwości. Jeżeli przyjmiemy iż sygnał jest skupiony wokół częstotliwości nośnej fc a jego szerokość spektralna wynosi B wtedy częstotliwość próbkowania musi się zawierać w przedziale:
gdzie m jest liczbą naturalną zapewniającą, że
Sygnał pasmowy o szerokości spektralnej B oraz częstotliwości nośnej fc.
Cechą charakterystyczną tego rodzaju próbkowania jest, iż niektóre częstotliwości próbkowania co prawda nie powodują aliasingu lecz powodują odwrócenie widma względem zera częstotliwości. Optymalna częstotliwość próbkowania z uwzględnieniem odwracania częstotliwości wyraża się wzorem:
, gdzie kp=2, 4, 6, 8....
Przetwarzanie cyfrowo-analogowe
Rekonstrukcja sygnału z próbek polega na interpolacji gładką funkcją czasu ciągłego pomiędzy wejściowymi próbkami. Przetworniki C/A (cygrowo/analogowe) opisać można następującym wzorem:
gdzie: p(t) jest charakterystycznym kształtem impulsu przetwornika czy też konwertera. Powyższy wzór oznacza, iż sygnał wyjściowy przetwornika jest otrzymywany poprzez dodanie wielu pojedynczych impulsów poprzesuwanych w czasie. Każda dyskretna próbka czasowa
powoduje utworzenie impulsu
o amplitudzie proporcjonalnej do wartości próbki dyskretnej x(n). Każdy impuls posiada taki sam kształt określony funkcją p(t), jeżeli czas trwania impulsu jest dłuższy niż okres próbkowania będą one na siebie zachodzić i tworzyć ciągły przebieg. Optymalny kształt impulsu wymagany do właściwej rekonstrukcji sygnału x(t) uzyskać można z teorii próbkowania Shannona. Najprostszym kształtem impulsu jest symetryczny impuls prostokątny:
Suma impulsów prostokątnych będzie funkcją schodkową. Jest to bardzo słaba aproksymacja rekonstruowanej funkcji ciągłej.
Kolejnym sposobem jest interpolacja liniowa, impuls jest wtedy wielomianem pierwszego rzędu opisany funkcją:
Rozwiązanie to jest bardziej gładkie i lepiej aproksymuje niż funkcja prostokątna. Inne rodzaje interpolacji wymagają aproksymacji pomiędzy punktami wielomianami większego stopnia.
W celu usunięcia widm powielonych i częstotliwości próbkowania po przetworzeniu sygnału cyfrowego na analogowy stosuje się filtr dolnoprzepustowy. To właśnie ten filtr dokonuje interpolacji pomiędzy punktami kwantowania. Filtr taki wprowadza zniekształcenia sin(x)/x, które powodują zmniejszenie amplitudy na końcach pasma przepustowego.
Rozwiązania praktyczne
W przypadku rozwiązań praktycznych pamiętać należy iż próbkowania nie można rozpatrywać osobno bez uwzględnienia operacji kodowania oraz ograniczeń odnośnie maksymalnej przepływności bitowej systemów.
Parametry odtwarzacza płyt kompaktowych:
- częstotliwość próbkowania 44.1 kHz,
- pasmo przenoszenia ograniczone za pomocą filtru antyaliasingowego do 22.05 kHz.
- pasmo przenoszenia częstotliwości 10 Hz - 20 kHz, +/- 0,3 dB,
- dynamika 96 dB, - stosunek sygnału do szumów większy od 90 dB,
- tłumienie między kanałami stereofonicznymi większe niż 90 dB
- zniekształcenia nieliniowe mniejsze niż 0,04%,
- różnice wzmocnienia kanałów mniejsze niż 0,3 dB,
- współczynnik zawartości harmonicznych mniejszy niż 0,005%.
Parametry DVD-Audio Digital Audio Disc (DAD)
- 96 kHz/24
- możliwe kombinacje 44.1, 88.2, 96 a nawet 192 kHz; kwantowanie 16, 20 i 24 bitów
Super Audio CD (SACD) Direct Stream Digital (DSD)
- częstotliwość próbkowania 2,822 MHz,
- przetwarzanie jednobitowe sigma-delta,
Telefonia komórkowa
Sygnał głosowy jest ograniczany filtrem analogowym do pasma 4 kHz a następnie próbkowany 8 kHz i przetwarzany 13-bitowym liniowym przetwornikiem A/C. Ciąg próbek (104 kbit/s) jest przetwarzany blokowo w odstępach czasu 20 ms poprzez koder sygnałów mowy co daje w każdym bloku 260 bitów. Szybkość binarna spada z 104 do 13 kbit/s. W takim bloku danych występują trzy części rozróżniane w sensie ich ważności co do przesyłu danych. Blok najważniejszy jest kodowany w sposób zapewniający poprawne odtworzenie pomimo zakłóceń (50 bitów bardzo ważnych + 3 bity kontroli); 132 bity średnio ważne (50 bitów+ 3 bity bardzo ważne oraz 132 nowy bity po zakodowaniu daje 378 bitów); 78 bitów najniższej klasy nie podlegają kodowaniu co daje razem 456 bitów (20ms, 22,8 kbit/s). Następnie na danych dokonywana jest operacja przeplotu zapobiegająca paczkom błędów powstających w kanale radiowym (rozproszenie błędów, 8 x 57 bitów = 456 bitów). Wszystkie operacje mogą powodować opóźnienie nawet do 70-80 ms. Dodatkowo jest tu zastosowany system detekcji ciszy, który w przypadku wykrycia braku rozmowy wysyła ramki generujące ciszę.
Praktyczne wykonanie ćwiczenia
Wykorzystując polecenia Matlaba narysuj następujący przebieg
dla n od 1 do 20 oraz
Narysuj sygnał dyskretno-czasowy który będzie spróbkowanym sygnałem ciągłym o częstotliwości f0=10 oraz częstotliwości próbkowania odpowiednio 5, 9, 10, 15, 19, 20, 25, 30, 38, 40, 50
Wykorzystując program pasmprobko.m dokonaj analizy próbkowania pasmowego dla różnych częstotliwości w zakresie oraz poza zakresem dozwolonych częstotliwości próbkowania, zmieniając stosunek częstotliwości próbkowania do częstotliwości nośnej.
Zapoznaj się z programem demonstracyjnym aliasing.
Zapoznaj się z m-plikami demonstrującymi różnego rodzaju funkcje interpolacyjne w przypadku przetworników C/A
Przetwarzanie A/C i C/A obrazów
Obraz może być przedstawiony jako funkcja x(t1,t2) dwu zmiennych reprezentujących punkty w przestrzeni. Dla obrazów monochromatycznych sygnał x jest sygnałem skalarnym, dla obrazów kolorowych funkcja przyjmuje wartości wektorowe np. są to wartości kolorów czerwonego, zielonego i niebieskiego. Obrazy monochromatyczne wyświetlać można w skali szarości. Obraz spróbkowany cyfrowo (obraz cyfrowy) może być przedstawiony jako macierz x[m,n] gdzie punkt dla konkretnej wartości m oraz n nazwany jest pixel (picture element). Wartości macierzy są dodatnie i ograniczone co do amplitudy. Typowo amplituda przedstawiana jest na 8 bitach (256 wartości). W naszym ćwiczeniu aby obraz został poprawnie wyświetlony za pomocą funkcji show_img.m musimy pamiętać iż poszczególne wartości pixeli powinny być wartościami nieujemnymi. A wartości ujemne mogą się pojawić np. w następstwie filtracji cyfrowej. Obraz powinien się mieścić w skali szarości od 0 do 255 w innym przypadku należy go przekonwertować.
Wprowadzanie obrazu
Polecenie load obraz (wprowadzenie pod zmienną, sprawdzenie komendą whos)
Jeżeli chcemy wyświetlić kolumnę obraz130=obraz(130,:); wartości sygnału powienny się mieścić od 0 do 255
colormap(gray(256))
Generacja obrazu testowego
xpix=ones(256,1)cos(2*pi*(0:255)/16);
Zadanie: utwórz obraz, w którym będą pasy poziome (i lub pionowe)
Rozdzielczość dpi (dots per inch), inch=2,54 cm
Down-sampling (decymacja częstotliwości)
obrazp=obraz(1:p:end,1:p:end) gdzie p jest współczynnikiem decymacji
Jak aliasing wpływa na obraz?
Rekonstrukcja obrazów
Kiedy posiadamy spróbkowany obraz cyfrowy chcąc przedstawić go w postaci analogowej bądź dokonać jego expansji (zwiększenia rozdzielczości) należy ustalić wartości pomiędzy próbkami poprzez interpolacje. Aby tego dokonać na początku zapiszmy obraz3 jako obraz powstały przez decymacje z współczynnikiem p=3.
Przykład
xr1=(-2).^(0:6);
L=length(xr1);
nn=ceil((0.999:1:4*L)/4);
xr1hold=xr1(nn); plot(xr1hold)
Dokonaj dla każdego wiersza interpolacji (współczynnik 3). Wyświetl wynik jako obraz i porównaj wynik. Dokonaj interpolacji dla każdej kolumny i wyświetl wynik. Porównaj otrzymane obrazy.
Interpolacja liniowa
N1=0:6;
xr1=(-2).^(n1);
tti=0:0.1:6;
xr1linear=interp1(n1,xr1,tti);
stem(tti,xr1linear);
Jaki jest współczynnik interpolacji? Dokonaj interpolacji obrazu zarówno w wierszach jak i w kolumnach (obrazu decymowanego). Dokonaj porównania. Czy interpolacja usuwa aliasing? Porównaj obszar o dużej i małej częstotliwości.
help interp1 - jakie są inne możliwości interpolacji, przeprowadź interpolacje dla innych metod.
Katedra Elektroniki PL - Cyfrowe przetwarzanie sygnałów
Próbkowanie i rekonstrukcja sygnałów
1