Reeșantionarea

Reeșantionarea în procesarea semnalului este o modificare a frecvenței de eșantionare a unui semnal discret (cel mai adesea digital ). Algoritmii de reeșantionare sunt utilizați pe scară largă în procesarea semnalelor audio , a semnalelor radio și a imaginilor (reeșantionarea unei hărți de biți este o modificare a rezoluției sale în pixeli ).

Eșantioanele de semnal corespunzătoare noii rate de eșantionare sunt calculate din probele deja disponibile și nu conțin informații noi.

Upsampling se numește interpolare , downsampling se numește decimare . [unu]

Principii generale

Conform teoremei lui Kotelnikov , orice semnal continuu cu un spectru finit (adică un astfel de spectru în care nu există componente spectrale corespunzătoare frecvențelor peste sau egale cu o anumită frecvență ) poate fi reprezentat ca mostre ale unui semnal discret cu o frecvență de eșantionare. . Mai mult, o astfel de transformare este unu-la-unu , adică, sub rezerva condițiilor teoremei Kotelnikov, este posibil să se restabilească semnalul original cu un spectru finit fără distorsiuni de la un semnal discret. [2]

La reeșantionare, eșantioanele de semnal corespunzătoare unei frecvențe de eșantionare sunt calculate din eșantioanele disponibile ale aceluiași semnal corespunzătoare unei alte frecvențe de eșantionare (se presupune că ambele frecvențe de eșantionare corespund condițiilor teoremei Kotelnikov). Reeșantionarea ideală este echivalentă cu restabilirea unui semnal continuu din probele sale și apoi eșantionarea acestuia la o nouă frecvență. [3]

Calculul exact al valorii semnalului continuu original la un anumit punct se realizează după cum urmează: [4] [5]

unde este i-a probă a semnalului, este momentul de timp corespunzător acestui eșantion, este rata de eșantionare ciclică , este valoarea interpolată a semnalului la momentul .

Funcția nu este finită , prin urmare, pentru a calcula valoarea semnalului la un anumit moment în timp folosind expresia de mai sus, este necesar să se proceseze un număr infinit de mostre (atât în ​​trecut, cât și în viitor), ceea ce este irealizabil în practică. În viața reală, interpolarea se realizează folosind alte filtre , în timp ce expresia pentru aceasta ia următoarea formă: [6] [7]

unde este răspunsul la impuls al filtrului de recuperare corespunzător . Tipul acestui filtru este selectat în funcție de sarcină. [opt]

Calculul direct al noilor eșantioane de semnal folosind formulele de mai sus necesită resurse de calcul semnificative și este nedorit pentru aplicațiile în timp real . Există cazuri speciale importante de reeșantionare pentru care calculul noilor eșantioane este mai ușor: [9]

Cu astfel de restricții, devine convenabil să folosiți implementări standard ale filtrelor digitale pentru reeșantionare.

Reeșantionare cu filtre digitale

Selectarea filtrului pentru reeșantionare

Alegerea funcției este determinată de un compromis între calitatea reeșantionării (adică apropierea acesteia de ideal) și complexitatea computațională a acestui proces. În principiu, orice filtru trece-jos cu frecvența de tăiere dorită poate fi folosit pentru reeșantionare . Filtrele FIR sunt utilizate mai frecvent pentru aceste aplicații decât filtrele IIR datorită capacității de a construi filtre FIR cu un răspuns de fază liniar . [zece]

Cel mai adesea, următoarele clase de filtre digitale sunt utilizate în reeșantionare: [11]

1. Filtre construite pe baza criteriului de apropiere a răspunsului în frecvență față de răspunsul în frecvență al unui filtru trece -jos ideal :

1.1. Filtre sinc cu ferestre - răspunsul lor la impuls este obținut prin înmulțirea răspunsului la impuls al unui filtru trece-jos ideal cu funcția fereastră , 1.2. Filtre Chebyshev cu undă egală .

2. Metode clasice de interpolare a funcțiilor (deseori utilizate pentru imagini) [12] :

2.1. interpolatoare liniare , 2.2. Interpolatoare Lagrange (caz special - interpolare cubică ).

3. Filtre CIC (cascade de filtre pieptene și integratoare). [13] Această clasă de filtre nu utilizează înmulțiri în calcul, ceea ce economisește resurse de calcul.

Decimarea cu un factor întreg

Procesul de reducere a ratei de eșantionare a unui semnal se numește decimare. [1] Uneori, acest termen este folosit doar pentru a reduce rata de eșantionare de un număr întreg de ori (în continuare ). [14] Decimarea unui semnal digital cu un factor întreg se realizează în două etape: [10] [15]

  1. Filtrarea digitală a semnalului pentru a elimina componentele de înaltă frecvență care nu îndeplinesc condițiile teoremei Kotelnikov pentru o nouă rată de eșantionare;
  2. Eliminarea (eliminarea) citirilor suplimentare (fiecare -a citire este salvată).

În literatura engleză, al doilea dintre acești pași este uneori denumit subeșantionare . [16] În viața de zi cu zi, acest termen poate fi folosit ca sinonim pentru termenul „decimare”.

Primul pas este necesar pentru a elimina aliasing , care este similar în natură cu aliasing-ul în eșantionarea inițială a unui semnal analogic . [15] Aliasarea este vizibilă în special în acele zone ale semnalului care conțin componente spectrale semnificative de înaltă frecvență. Deci, în fotografiile citate la începutul articolului, cerul practic nu a suferit aliasing, dar efectul devine vizibil dacă acordați atenție tranzițiilor ascuțite.

Odată cu implementarea software a algoritmului de decimare, citirile „extra” nu sunt eliminate, ci pur și simplu nu sunt calculate. În acest caz, numărul de apeluri către filtrul digital este redus cu un factor. Cu implementarea hardware, se pot realiza economii prin utilizarea filtrelor polifazate . [17]

Interpolare cu un factor întreg

Interpolarea este o creștere a frecvenței de un număr întreg sau fracționar de ori [1] prin calcularea citirilor intermediare din cele existente. Interpolarea ideală vă permite să restabiliți cu precizie valorile semnalului în probe intermediare.

Algoritmul standard de interpolare a semnalului cu un coeficient întreg este următorul: [18]

  1. introducerea citirilor zero în locul citirilor de calculat;
  2. filtrarea semnalului cu un filtru digital trece-jos pentru a elimina componentele spectrale ale semnalului, care evident nu puteau fi în semnalul original conform teoremei Kotelnikov; ieșirea filtrului este înmulțită cu factorul de interpolare pentru a se normaliza .

În literatura de limba engleză, primul dintre acești pași este uneori denumit supraeșantionare . [16] În acest caz, în viața de zi cu zi, acest termen poate fi folosit ca sinonim pentru termenul „interpolare”.

Cu implementarea software a interpolării, zero eșantioane nu sunt implicate în calculul semnalului de ieșire al filtrului, ceea ce permite optimizarea procesului de calcul. Cu implementarea hardware, filtrele polifazate pot fi folosite pentru a economisi resurse. [19] [20]

O combinație de interpolare și decimare

Pentru a modifica rata de eșantionare a semnalului cu un factor ( și sunt numere întregi pozitive), puteți mai întâi să creșteți rata de eșantionare cu un factor și apoi să o micșorați cu un factor. Este suficient să filtrați semnalul o singură dată - între interpolare și decimare. [21]

Dezavantajul acestei metode este necesitatea de a filtra semnalul la o rată de eșantionare crescută de mai multe ori, ceea ce necesită resurse de calcul semnificative . În acest caz, frecvența corespunzătoare poate fi de multe ori mai mare decât frecvența de reeșantionare inițială și finală, mai ales dacă și sunt numere mari apropiate. [22] Deci, de exemplu, atunci când reeșantionați un semnal audio de la 44.100 Hz la 48.000 Hz folosind această metodă, este necesar să creșteți frecvența de eșantionare cu un factor de la 160 la 7.056.000 Hz și apoi să o micșorați cu un factor de la 147 la 48.000. Hz. Astfel, în acest exemplu, calculele trebuie efectuate la o rată de eșantionare mai mare de 7 MHz.

Reeșantionare cu filtre polifazate

Metoda de reeșantionare folosind filtre polifazate este similară cu cea anterioară, cu diferența că în loc de un filtru care funcționează la o rată de eșantionare mare, se folosesc mai multe filtre care funcționează la o frecvență joasă. În acest caz, este posibil să se realizeze o reducere a numărului de calcule necesare, deoarece pentru fiecare probă este necesar să se calculeze semnalul de ieșire al unuia dintre aceste filtre. [20] [23]

Un filtru polifazic este un set de filtre mici care funcționează în paralel, fiecare dintre ele procesează doar un subset de eșantioane de semnal (dacă există filtre în total, fiecare filtru va procesa doar fiecare -a probă).

Filtrele polifazate sunt utilizate pentru reeșantionare atât cu coeficienți întregi, cât și cu coeficienți fracționali. [24]

Reeșantionarea cu transformata Fourier discretă

Reeșantionarea DFT este utilizată pentru a crește rata de eșantionare de un număr întreg sau fracționar de ori. Algoritmul funcționează numai cu segmente finite ale semnalului. Fie numărul inițial de eșantioane, fie numărul de eșantioane din semnalul reeșantionat. Algoritmul include următoarele operații: [25] [26]

1. DFT a semnalului original este calculată (cel mai adesea prin algoritmul rapid de transformare Fourier ).

2. Numărul necesar de componente zero este introdus în mijlocul spectrului :

2.1. daca ciudat: 2.2. chiar daca :

3. Se calculează transformata Fourier discretă inversă cu normalizare .

Orice metodă bazată pe DFT este destinată în primul rând semnalelor periodice discrete. Pentru a procesa semnale neperiodice, este necesar să selectați segmente de semnal pentru calcularea DFT în așa fel încât capetele lor să se suprapună. [27]

Aplicații

Implementarea algoritmilor de reeșantionare sunt utilizate pe scară largă atât hardware (bazat pe microcircuite specializate [28] [29] sau FPGA [30] ), cât și software (bazat pe procesoare de uz general (vezi mai jos) sau procesoare de semnal [31] ).

Alegerea unei anumite implementări a algoritmului de reeșantionare este rezultatul unui compromis între calitatea transformării și complexitatea sa de calcul . Principalul parametru care afectează aceste caracteristici este apropierea filtrelor digitale utilizate de cele ideale. Filtrele mai bune necesită mai multe resurse de calcul. [32]

În practică, reeșantionarea duce în majoritatea cazurilor la pierderea informațiilor despre semnal din următoarele motive:

Astfel, la creșterea frecvenței de eșantionare și apoi la scăderea acesteia la valoarea inițială, calitatea semnalului se va pierde (cu excepția cazului în care frecvența înaltă este un multiplu al celei joase).

Semnale de eșantionare cu supraeșantionare

Eșantionarea semnalelor cu o marjă pentru frecvența de eșantionare ( în engleză  supraeșantionare ) înseamnă eșantionarea unui semnal la o frecvență de câteva ori mai mare decât frecvența Kotelnikov , urmată de decimare. Această abordare permite obținerea următoarelor avantaje [35] :

O abordare similară este de asemenea utilizată la restaurarea unui semnal din probele sale pentru a simplifica filtrul de recuperare analogic . [36]

La procesarea sunetului

Echipamentul conceput pentru a reproduce sunetul digital este de obicei proiectat pentru o rată de eșantionare bine definită a semnalului, imediat înainte de conversia digital-analogic . Toate semnalele audio cu alte rate de eșantionare trebuie reeșantionate mai devreme sau mai târziu [37] .

Reeșantionarea semnalului audio la frecvența dorită poate fi efectuată de playerul media , driverul plăcii de sunet sau placa de sunet în sine. Utilizarea unui program de player în acest scop poate fi justificată dacă doriți să evitați reeșantionarea hardware a sunetului (sau supraeșantionarea de către driver) pentru a obține o calitate mai bună (cu încărcare mai mare a procesorului ). Cu toate acestea, reeșantionarea prin software a materialului reprodus la o frecvență diferită de frecvența suportată de echipament nu are sens și duce doar la o pierdere a calității semnalului.

Există reeșantionare audio cu software open source :

Reeșantionarea este acceptată și de software-ul de editare audio (cum ar fi Adobe Audition , Sony Sound Forge sau Audacity ).

La procesarea imaginilor

Redimensionarea este una dintre cele mai comune operațiuni de procesare a imaginii. Supraeșantionarea aproape ideală nu este întotdeauna de dorit. Dimpotrivă, rezultatele filtrelor cu un răspuns în frecvență departe de a fi ideal pot fi percepute vizual ca fiind bune. [42] Alegerea filtrului pentru reeșantionare este rezultatul unui compromis între tipul și gravitatea artefactelor și complexitatea computațională a transformării (relevantă pentru aplicațiile în timp real ).

Artefacte tipice la modificarea rezoluției imaginii: [12] :

Pentru reeșantionarea imaginii, se utilizează un număr mare de filtre, care pot fi clasificate după cum urmează [12] :

  1. Filtre de tip interpolare , care au un răspuns la impuls relativ îngust. Acestea includ, în special, filtrul triunghiular, care produce interpolare biliniară , și polinomul Lagrange , cu care poate fi implementată interpolarea bicubică . Utilizarea unor astfel de filtre face posibilă reeșantionarea imaginii destul de rapid.
  2. Filtre în formă de clopot , cum ar fi filtrul Gaussian . Aceste filtre fac o treabă bună de pixelare, sunet și aliasing, precum și filtrarea zgomotului de înaltă frecvență. Dezavantajul lor este o estompare vizibilă a imaginii.
  3. Fereastra sinc filtre . Un filtru sinc este un filtru trece-jos ideal. După cum am menționat mai sus, nu poate fi implementat. Totuși, dacă răspunsul în frecvență al filtrului sinc este înmulțit cu funcția fereastră , se obține un filtru implementabil cu proprietăți spectrale bune. Atunci când se aplică aceste filtre imaginilor, este posibil să se mențină o definiție relativ înaltă (chiar și atunci când rezoluția este crescută), dar efectul de sonerie poate fi foarte vizibil. Unul dintre cele mai utilizate filtre de acest tip este filtrul Lanczos .

Imaginile de mai jos ilustrează aplicarea celor mai frecvent utilizate filtre de redimensionare a imaginii. Când măriți dimensiunea imaginii fără un filtru, imaginea este clară, dar pixelată. Cu interpolarea biliniară, pixelarea este mai puțin vizibilă, dar imaginea este neclară. Când utilizați filtrul Gaussian, imaginea este neclară, dar pixelarea aproape nu este vizibilă. Când utilizați filtrul Lanczos, nu există pixelare, imaginea este, de asemenea, neclară și sunetul este vizibil (vizibil ca un chenar ușor în jurul figurilor).

La procesarea semnalelor radio

La demodularea semnalelor digitale, este de dorit ca rata de eșantionare a semnalului să fie un multiplu al ratei sale de codificare (cu alte cuvinte, ca fiecare simbol să aibă același număr de mostre de semnal). Cu toate acestea, rata de eșantionare a semnalului de intrare de la ADC este de obicei fixă, în timp ce viteza de tasare poate varia. Soluția este reeșantionarea semnalului. [43]

Vezi și

Note

  1. 1 2 3 Crochiere, Rabiner, 1983 , p. 3.
  2. Crochiere, Rabiner, 1983 , p. 19.
  3. Crochiere, Rabiner, 1983 , p. 22.
  4. Crochiere, Rabiner, 1983 , p. douăzeci.
  5. Romanyuk, 2005 , p. 136.
  6. Crochiere, Rabiner, 1983 , p. 21.
  7. Romanyuk, 2005 , p. 149.
  8. Crochiere, Rabiner, 1983 , p. 180.
  9. Crochiere, Rabiner, 1983 , p. 29.
  10. 1 2 Lyon, 2006 , p. 383.
  11. Crochiere, Rabiner, 1983 , p. 143.
  12. 1 2 3 Redimensionare și scalare Arhivat la 5 mai 2009 la Wayback Machine de pe site-ul ImageMagick .
  13. Înțelegerea filtrelor integratoare-pieptene în cascadă (link descendent) . Consultat la 13 iunie 2009. Arhivat din original pe 26 septembrie 2007. 
  14. Lyon, 2006 , p. 382.
  15. 1 2 Crochiere, Rabiner, 1983 , p. 31.
  16. 1 2 Suprasantionare și interpolare, downsampling și decimare  (downlink) .
  17. Polyphase decimation filter Arhivat 8 aprilie 2009 la Wayback Machine .
  18. Lyon, 2006 , p. 387.
  19. Filtre de interpolare polifazică Arhivat 21 aprilie 2009 la Wayback Machine .
  20. 1 2 Lyon, 2006 , p. 391.
  21. Lyon, 2006 , p. 389.
  22. Interpolarea, Decimarea și Schimbarea Ratei prin fracții întregi Arhivat 9 aprilie 2009 la Wayback Machine .
  23. Crochiere, Rabiner, 1983 , p. 79.
  24. Reeșantionarea polifazată cu un factor rațional Arhivat la 3 ianuarie 2009 la Wayback Machine .
  25. Romanyuk, 2005 , p. 223.
  26. Interpolare folosind FFT  (downlink) .
  27. Romanyuk, 2005 , p. 287.
  28. GC5016 IC de la Texas Instruments Arhivat 21 octombrie 2010 la Wayback Machine .
  29. Convertoare de frecvență de eșantionare de la Analog Devices Arhivate 8 iunie 2009 la Wayback Machine .
  30. Xilinx XAPP1113: Proiectarea convertoarelor digitale eficiente în sus și în jos . Consultat la 13 iunie 2009. Arhivat din original pe 24 ianuarie 2009.
  31. Manual de aplicații pentru familie ADSP-21000 (Vol 1.0) . Consultat la 13 iunie 2009. Arhivat din original pe 25 ianuarie 2011.
  32. Lyon, 2006 , p. 181.
  33. Crochiere, Rabiner, 1983 , p. 33.
  34. Rabiner, Gould 1978 , p. 327.
  35. Multirate DSP, partea 3: ADC oversampling Arhivat 8 februarie 2010 la Wayback Machine .
  36. Theory of Upsampled Digital Audio Arhivat 5 februarie 2009 la Wayback Machine .
  37. Un ghid complet pentru Foobar 2000 . Consultat la 13 iunie 2009. Arhivat din original la 18 aprilie 2009.
  38. Secret Rabbit Code (alias libsamplerate) . Consultat la 28 mai 2009. Arhivat din original la 30 aprilie 2009.
  39. Instrumente audio Shibatch . Consultat la 28 mai 2009. Arhivat din original pe 11 mai 2008.
  40. Biblioteca SoX Resampler . Consultat la 19 noiembrie 2013. Arhivat din original pe 3 decembrie 2013.
  41. Comparație a cinci reeșantionare pentru foobar2000 + ASIO4ALL Resampler (actualizat 18.11.2015) . Consultat la 1 octombrie 2017. Arhivat din original la 1 octombrie 2017.
  42. Don P. Mitchell, Arun N. Netravali. Filtre de reconstrucție în grafică  computerizată // Grafică computerizată. - 1988. - T. 22 , nr 4 . - S. 221-228 . Arhivat din original pe 4 iulie 2009. .
  43. Construirea unui demodulator QAM  (link nu este disponibil) .

Literatură

Link -uri