logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Czym jest Oversampling? a czym antyaliasing?

Jasiex 17 Paź 2004 18:52 21380 21
  • #1 918923
    Jasiex
    Poziom 13  
    Witajcie specjaliści ! :-)

    Od długiego czasu nurtuje mnie realizacja funkcji realizującej oversampling.
    Jeśli dysponuję zapisem cyfrowym sygnału próbkowanego z częstotliwością 8363 Hz (jest to popularna częstotliwość podstawowa próbek z plików modułów muzycznych MOD itp) i chcę odtworzyć ją np. z współcześnie popularną częstotliwością 44100Hz, to kolejne jej wartości w buforze dźwiękowym muszą się powtarzać:
    44100/8363 = 5,27323 (około).
    Jednak jak wiadomo (lub nie) dla zmniejszenia częstotliwości odgrywanego instrumentu (próbki) na danym kanale w module muzycznym obniżana jest częstotliwość poprzez jeszcze większe powielanie wartości próbek.
    W efekcie tego zwłaszcza przy próbkach których treścią są dźwięki basowe (o niskich częstotliwościach) słyszymy oprócz próbki świst któremu towarzyszy również lekkie "chrapanie".

    W wielu player-ach stosuje się Oversampling. Kiedyś myślałem że ma to coś współnego z interpolacją ale nie sądzę bo wstawienie dodatkowych "międzypróbek" podczas pobierania spowoduje mniej skokowe zmiany amplitudy i zadziała troszke jak filtr wygładzający.

    Niewiem na czym polega "rasowy oversampling" i bardzo chciałbym się dowiedzieć. Sama nazwa Oversampling podpowiada że jest to jakby ponowne próbkowanie? nadpróbkowanie?
    Czy trzeba uwzględnić że wszelkie zmiany fizyczne sygnału rzeczywistego następują ciągle i w zapisie dyskretnym (cyfrowym) należy braki podczas zmiany częstotliwości odtwarzania nadrobić sinusami ?
    Antyaliasing wydaje mi się pokrewny oversamplingowi z tego powodu że choć stosowany w grafice to dotyczy zjawiska niwelowania skokowości na bardziej łagodne i rzeczywiste zmiany wartości.

    Przepraszam za długi tekst i brak fachowej wiedzy, ale mam nadzieję że
    na tym forum wymienimy poglądy podczas interesującej dyskusji.
    Pozdrawiam !
  • #2 918979
    Xitami
    Poziom 29  
    tak... i jak tu odpowiedzieć w dwu zdaniach
    oversampling stosuje sięw celu uproszczenia konstrukcji analogowej części przetwornika.
    przy przetwarzaniu D/A robi się interpolację.
    jeśli czytasz po angielsku to może http://www.dspguide.com/ch3.htm
    nawet liniowa interpolacja pomiędzy punktami poprawi sprawę (zmniejszy szum i harmoniczne aliasing)
    tak rasowo to się to robi przez dodanie pomiędzy oryginalnymi próbkami zer, i puszczeniu tego przez dolnoprzepustowy filtr cyfrowy. Jeśli myślisz że tym sposobem zwojujesz coś na małym uC to nie licz na zbyt wiele. Na PC to nawet nie będzie za trudne.
  • #3 919043
    h-doc
    Poziom 27  
    xitami napisał co nieco o oversamplingu, a ja dorzucą o antyaliasingu. Otóż antyalising to metoda pozwalająca uniknąć zjawiska aliasingu. Najczęściej ze zjawiskiem tym mamy do czynienia przy konwersji A/C i antyaliasing realizuje się przy pomocy filtracji dolnoprzepustowej. Ważna uwaga - filtracja ta musi odbywać się po stronie analogowej.
    Natomiast to co w przetwarzaniu grafiki nazywa się antyaliasingiem niewiele ma wspólnego z antyaliasingiem w klasycznym znaczeniu tego słowa. Niestety, ktoś użył niefachowej nomenklatury i już tak się przyjęło. To co w grafice nazywa się antyalisingiem powinno w zasadzie nazywać się filtracją dolnoprzepustową lub filtracją wygładzającą. I tu ważna uwaga - ten rodzaj filtracji może odbywać się zarówno po stronie cyfrowej jak i analogowej.
  • #4 919665
    Jasiex
    Poziom 13  
    dziękuje za odpowiedzi, pytania zadałem ogólnie i nie zamierzam implementować (nie mam takiej potrzeby) na żadnym mikrokontrolerze -ale kto wie?, po prostu ciekawi mnie idea oversamplingu.

    Niektóre programy posiadają opcje np. 256 * oversampling i co to ma niby oznaczać? (mam na myśli kultowy Inertia Player pod M$ DOS).
    W kilku aplikacjach m.in. ModPlug player autorstwa Oliviera Lapicque, rzecz którą nazwałem "oversampling" nazwana jest "resampling" i występuje w odmianie prostej i wielopunktowej(do wyboru).
  • #5 919723
    Xitami
    Poziom 29  
    MODy, miały tylko 8kHz? to było jakoś kodowane czy poprosu próbki? no bo około 8kHz stosuje się w telefonji (3,3 kHz*2<8kHz).
    256* czyli właśnie 265* ;) tylu krotnie podniesiona częstotliwość przetwarzania,
    resampling to pojęcie ogólne, zmiana częstotliwości może odbywać się w górę (zwykla na etapie D/A) albo w dół (A/D) albo kiedy potrzebne jest połączenie między procesami które wymagają sygnału próbkowanego różnymi częstotliwościami.
    (poszukaj sobie jak nagrywane i odtwarzane są płyty CD, zobacz też przetworniki sigma-delta)
  • #6 919764
    shg
    Poziom 35  
    xitami napisał:
    MODy, miały tylko 8kHz?

    Nie :D
    To jest częstotliwość próbkowania, z jaką odtwarzana jest nutka C-2,
    a częsotliwość ta to częstotliwość nuty C-2 razy ileś tam próbek na okres (potęga 2). Chociaż trochę dziwne, że akurat C-2, ja widziałem zazwyczaj C-3 (16 kHz) jako podstawową, no ale w sumie nieważne :D

    Ale to jest ważne MODy mają nie tylko 8 kHz, częstotliwość, z jaką odtwarzany jest sampel zależy od nuty, więc równie dobrze to może być 18kHz, czy 4kHz. W związku z tym, nie można zakładać stałej f i trzeba to uwzględnić w procedurze dokonującej resamplingu

    Jakość możesz zwiększyć właśnie przez uzupełnianie dziur między próbkami przez wartości interpolowane.
    Najlepsze efekty uzyskasz stosując interpojację (sin x)/x
    Można też, nie robić najpierw żadnej interpojacji, tylko powtarzać kilka razy tą samą próbkę, a potem przepuścić przez filtr IIR (wymagane z 20MIPSów), albo FIR (tu z MIPSami jest różnie, dużo zależy od charakterystyki filtru i częstotliwości)

    Można też użyć filtrów CIC, te są bardzo szybkie i to co robią wygląda mniej więcej jak wielokrotna interpolacja liniowa.
    Można to zrobić tak: 256 krotny oversampling i puścić to przez kaskadę 8 filtrów CIC, o tych filtrach już pisałem, także "Szukaj" :D
    A potem downsampling bez żadnych cudów (zwyczajne wycinanie) do pożądanej częstotliwości.
    Nie wiem, czy dobrze to wykombinowałem, tak tylko palnąłem :D.

    W sumie, to można stosować każdy rodzaj interpolacji, im jej wynik będzie bardziej zbliżony do (sin x)/x tym lepsza jakość dźwięku. Chociaż z doświadczenia wiem, że sample o tak niskiej częstotliwośći próbkowania brzmią nieco przyjemniej dla ucha, gdy nie wytnie się całkowicie harmonicznych powyżej fS/2.
  • #7 919814
    Xitami
    Poziom 29  
    powtarza siępróbkę czy wstawia zera?
    a jak interpolować sinc'em?
  • #8 919874
    shg
    Poziom 35  
    Powtarza się próbkę
    Jak powstawiasz zera, to dostaniesz powielone widmo (ale nie odbicia lustrzane, tylko zwykłe kopie), a jak ułożysz te zera nieco inaczej (najpierw 0, potem próbka) to dostaniesz j.w., ale przemnożone przez jakiś sinus (takiego tricku używa się w FFT. dspguide rozdział 12), w każdym razie będzie brzmiało fajnie, ale mało... :D

    a jak tym sinc się robi to bladego pojęcia nie mam, ale podejrzewam, że to ma coś wspólnego z FIRami, bo tam się stosuje (sin x)/x tylko nie pamiętam do czego :D
    Zresztą filtracja na sinc jest też w dspguide, rozdział 16 no i widzę, że jakieś FIRy tam są. W sumie niby filtracja niekoniecznie da taki sam wynik jak interpolacja, ale o to samo chodzi i będzie tak samo brzmiało. A zresztą, to sygnał audio trzeba właśnie przefiltrować, a interpolacji należało by użyć do wyświetlania (np. na oscyloskopie)
    W sumie to jeszcze się ni spotkałem z jakimś "przyjaznym" omówieniem interpolacji sinc'em, ale to może przez to, że za mało się starałem :D

    Jasiex jakby co to dspguide masz tutaj:
    http://www.dspguide.com/pdfbook.htm

    --------------------

    No chyba bardzo słabo się starałem, bo właśnie znalazłem, w sumie całkiem prosta rzecz :D , aczkolwiek dość sporo operacji do wykonania
    http://www.csounds.com/ezine/summer2000/internals/
    W skrócie:
    Dla każdej próbki obliczamy funkcję sinc której szczyt pokrywa się z próbką (czyli przesuwamy sinc'a po x i skalujemy po y) i tak obliczone funkcje sumujemy. No nie spodziewał bym się, że to aż tak proste będzie :D

    A tu jeszcze trochę o interpolacji:
    http://www.biochem.oulu.fi/~oniemita/dsp/deip.pdf

    ------------------------

    O jeszcze obrazek, żeby było łatwiej zrozumieć:
    Czarne kwadraty, to nasze próbki
    Na czerwono zostały zaznaczone składowe funkcje sinc, dwie z nich zostały wyróżnione - Czarna i Purpurowo-różowa.
    Kolorem niebieskim zaznaczona została zaznaczona krzywa będąca wynikiem interpolacji (sin x)/x, czyli suma wszystkich funkcji składowych.

    "Okres" funkcji sinc należy dobrać taki, aby 1/4 jego odpowiadała okresowi próbkowania, tzn. tak, żeby dla każdej próbki innej, niż ta, dla której liczymy sinc, wartość tej funkcji była = 0
  • #9 920371
    Xitami
    Poziom 29  
    Ta interpolacja sinc, coś kiedyś widziałem, ale nie zrozumiałem, teraz to jasne.
    I jeszcze coś, co wstawiamy pomiędzy próbki oryginalnego sygnału przed przepuszczeniem przez filtr cyfrowy kiedy chcemy podnieść fs? piszesz powrarzamy wartość poprzedniej, a ot co pisze Steven W. Smith, w The Scientist and Engineer's
    Guide to Digital Signal Processing: "...Multirate techniques can also be used in the output portion of our example
    system. The 8 kHz data is pulled from memory and converted to a 64 kHz
    sampling rate, a procedure called interpolation. This involves placing seven
    samples, with a value of zero, between each of the samples obtained from
    memory. The resulting signal is a digital impulse train, containing the desired
    voice band between 100 and 3000 hertz, plus spectral duplications between 3
    kHz and 32 kHz."
  • #10 921032
    shg
    Poziom 35  
    xitami napisał:
    The resulting signal is a digital impulse train, containing the desired
    voice band between 100 and 3000 hertz, plus spectral duplications between 3
    kHz and 32 kHz."

    Czyli te nieszczęsne kopie widma, o których pisałem, a nam zależy na pozostawieniu oryginalnego widma, ale pozbawionego "ostrych" zboczy pomiędzy próbkami, które generują dodatkowe harmoniczne.

    EEEEeee zresztą nieważne, co wstawisz pomiędzy te próbki, ważne, żebyś wyciął w procesie interpolacji wszelkie "naddatki" widma :D (czyli przy wypełnieniu zerami pozbył się tych kopii widma, a przy powtarzaniu próbki harmonicznych leżących powyżej fS/2 sygnału poddawanego upsamplingowi)

    Powtarzanie próbki, to najprostsza metoda upsamplingu, nic już później nie trzeba robić, aczkolwiek takie podejście nie daje nam żadnego zwiększenia jakości, bo zostają zachowane wszystkie cechy sygnału pierwotnego.
    Natomiast samo wypełnienie dziur zerami wprowadzi znaczne dodatkowe zniekształcenia, które należy usunąć przez filtrowanie (albo interpolację)

    PS. z tym "okresem" sinc'a to się walnąłem, miało być oczywiście 1/2 a nie 1/4
  • #11 921375
    Paweł Es.
    VIP Zasłużony dla elektroda
    Aliasing to zjawisko występujace wtedy gdy w próbkowanym sygnale występuja składowe o częstotliwościach wyższych niż połowa częstotliwości próbkowania. Składowe te pojawiają się w widmie użytecznym sygnału jako składowe nieharmoniczne.

    Np dla fp=32 kHz, składowa sygnału wejściowego o częstotliwości 20 kHz pojawi się w sygnale spróbkowanym jako 32kHz-20 kHz=12 kHz.

    Dla uniknięcia tego zjawiska stosuje się filtrację sygnału wejściowego przed procesem próbkowania filtrem o częstotliwości granicznej wynoszącej np. 0.4*FP. Częstotliwość filtru wybiera się zależnie od wymaganej dokładności filtracji i możliwego do uzyskania nachylenia filtru dolnoprzepustowego.

    Oversampling czyli nadpróbkowanie to zabieg stosowany w nowoczesnych przetwornikach analogowo-cyfrowych (szczególnie do zastosowań fonicznych). Przetwornik próbkuje sygnał z częstotliwością np. 256*częstotliwość przesyłania próbek.

    Przykładowo magnetofony cyfrowe zapisują sygnał o częstotliwości próbkowania 48000 Hz. Przetwornik wejściowy pracuje z częstotliwością 256*48000 Hz czyli 12,288 MHz. Pozwala to zastosować proste filtry analogowe o częstotliwości granicznej dużo wyższej niż maksymalna częstotliwość sygnału akustycznego (20 kHz) ale też dużo niższej niż połowa częstotliwości próbkowania (6.144 MHz). Sygnał wyjściowy z przetwornika (zwykle 1 bitowy PWM) jest podawany do filtru cyfrowego o skończonej odpowiedzi impulsowej (FIR) o częstotliwości granicznej np. 22 kHz (łatwego do zrealizowania w układzie scalonym). Sygnał wyjściowy filtru jest próbkowany z częstotliwością 48 kHz i podawany do dalszego przetwarzania w postaci słów 16-24 bitowych w kodzie U2.

    Stosuje się też dodatkową filtrację szumu kwantowania dla obniżenia jego mocy w zakresie największej czułości słuchu (1-3 kHz).

    Filtry FIR mają liniowy przebieg fazy (ważne w systemach wielokanałowych) i łatwo zrealizować identyczną filtrację we wszystkich kanałach (co jest trudne w realizacji czysto analogowej).
    ------------------------------------------------------------------------------------
    Upsampling - to jest operacja, którą Kolega pomylił z Oversamplingiem - polega na sztucznym podwyższeniu częstotliwości próbkowania przez wstawienie nowych, nieistniejących próbek w istniejący sygnał. Dokonujemy tego w następującyc sposób (wykorzystujący oversampling):

    1. Wytwarzamy z istniejącego ciągu próbek o częstotliwości FP1 nowy ciąg
    przez wstawienie pomiędzy próbki istniejące próbek o wartości zerowej.

    p1,0,0,0,0,0,0,0,p2,0,0,0,0,0,0,0,p3,0,0,0,0,0,0,0

    np. 8 krotne nadpróbkowanie.

    2. Powstały ciąg przepuszczamy przez filtr cyfrowy o częstotliwości
    granicznej < FP2/2 i dużym nachyleniu

    gdzie FP2 nowa częstotliwość próbkowania i FP2>FP1

    3. Sygnał wyjściowy filtru próbkujemy z częstotliwością FP2

    8)
  • #12 921884
    Xitami
    Poziom 29  
    fajnie napisane. ale....
    Omawiając oversampling napisałeś "...Sygnał wyjściowy z przetwornika (zwykle 1 bitowy PWM) jest podawany do filtru cyfrowego"
    opisujesz przetwornik sigma-delta, owszem tam w pewnym momencie występuje jednobitowy ciąg, ale nie ma on wiele wspólnego z PWM, w naszym przypadku istotny jest stosunek liczby jedynek do liczby zer (w PWM wynosi on 1).
  • #13 922592
    Paweł Es.
    VIP Zasłużony dla elektroda
    Ponieważ z przetwornika delta-sigma wychodzi ciąg zerojedynkowy to jednak upierałbym się, że można go traktować jako sygnał o modulacji szerokości impulsu tyle, że nie jest zdefiniowany okres powtarzania. Informacja jest niesiona w wartości średniej przebiegu.


    xitami napisał:

    istotny jest stosunek liczby jedynek do liczby zer (w PWM wynosi on 1).


    Czy w sygnale typu:

    100000100000100000100000100000100000100000

    będącym sygnałem PWM o stałym wypełnieniu 1/6 stosunek ilości jedynek do zer wynosi 1 ?
  • #14 922635
    Xitami
    Poziom 29  
    PWM? po moim trupie ;)
    a co do tej jedynki w pwm to odszczekuję
  • #15 922924
    Paweł Es.
    VIP Zasłużony dla elektroda
    Wedle życzenia, klient nasz Pan (to o "pomoimtrupie"), BANG ! BANG !

    Czy PWM to kwestia punktu widzenia


    111000110000011111001100011001101000100
    ----___---_____-------__--____--__---_-___-__

    Ja tu widzę PWM jak żywe !
  • #16 923234
    h-doc
    Poziom 27  
    xitami i Paweł Sujko:
    Sygnał z przetwornika sigma-delta to sygnał o modulacji PDM (modulacja intensywności impulsów). Jest to strumień bitowy modulowany zarówno szerokością impulsów jak i częstotliwością ich występowania (przy takiej definicji to w zasadzie każdy sygnał cyfrowy to PDM). Różnica pomiędzy PDM a PWM jest taka, że przy PWM impulsy mają stały okres.
  • #17 923468
    Xitami
    Poziom 29  
    święte słowa dobrodzieju, święte słowa
    a po zastanowieniu to nawet pozostanę przy zdaniu że w PWM ten stosunek wynosi JEDEN
  • #18 923778
    Paweł Es.
    VIP Zasłużony dla elektroda
    h-doc napisał:
    xitami i Paweł Sujko:
    Sygnał z przetwornika sigma-delta to sygnał o modulacji PDM (modulacja intensywności impulsów). Jest to strumień bitowy modulowany zarówno szerokością impulsów jak i częstotliwością ich występowania (przy takiej definicji to w zasadzie każdy sygnał cyfrowy to PDM). Różnica pomiędzy PDM a PWM jest taka, że przy PWM impulsy mają stały okres.


    Zgadzam się na wszystko ALE:

    1. PDM - to modulacja GĘSTOŚCI impulsów a nie intensywności (amplituda jest stała).

    2. Strumień bitowy jest wytwarzany w przetworniku d-s a nie modulowany
    w nim.

    3. Czy w danej chwili jest 0 czy 1 wynika z tego czy estymata sygnału ma
    wartość większą czy mniejszą od aktualnej wartości sygnału
    wejściowego przetwornika.

    4. Szerokość bitów jest stała i wynika z częstotliwości taktowania
    rejestru.

    Faktycznie PWM ma stały okres. :oops:
  • #19 923782
    Tomcio888
    Poziom 14  
    Jeżeli częstotliwość próbkowania f0 jest mniejsza od dwukrotnej wartośći częstotliwości Nyquista fN (f0<2fN), to występuje efekt nakładania się widma sygnału odtwarzanego nazywany aliasingiem, co prowadzi w efekcie do błędnego odtwarzania sygnałów. Okresowe powielanie widma sygnału odtwarzanego jest spowodowane operacją próbkowania sygnału. W sytuacji gdy niemożliwe jest spełnienie tego że f0> 2fN co zachodzi na przykład gdy sygnał f(t) posiada nieograniczone widmo, konieczne jest zastosowanie filtru dolnoprzepustowego o częstości odcięcia mniejszej od częstotliwości Nyquista , przez co ograniczyć można błędy odtwarzania sygnałów spróbkowanych.

    sorki xitami & dzieks myslał indyk o niedzieli a w sobote mu leb odcieli:)
  • #20 923893
    h-doc
    Poziom 27  
    Paweł Sujko - no i sprawa jasna. A jeśli chodzi o definicje PDM, to wziąłem ją z książki panów C. Marvens, G. Ewers "Zarys Cyfrowego Przetwarzania Sygnałów", więc jeśli chodzi o punkty 1 i 2 to pewnie coś im się pomyliło. A jeśli chodzi o punkt 4 to prawda to oczywista, przy czym należy wziąć pod uwagę, że mówiliśmy o szerokości impulsów a nie bitów tworzących impulsy.

    pozdrawiam!
  • #21 925444
    Paweł Es.
    VIP Zasłużony dla elektroda
    h-doc - to pewnie nie im się pomyliło tylko tłumacz źle przełożył słowo Density (pomylił z Intensity). Niestety, często tłumaczeniania niedokładnie oddają treść oryginału zagranicznego, szczególnie wtedy gdy osoba tłumacząca nie zna dokładnie tematu i związanych z nim niuansów słownych.

    Też pozdrawiam !
  • #22 1561268
    dykan
    Poziom 10  
    a propo aliasingu. czy macie mzoe jakies adresiki obrazujące zjawisko alisaingu najlepiej jakies preznetacje albo duzo mase teori na temat :
    Zjawisko aliasingu jego przyczyny, skutki sposoby objawiania się w sygnałach oraz metody eliminacji. zgóry dziekuje za linki o tym pozdrowienia
REKLAMA