Omsampling i signalbehandling är en förändring i samplingsfrekvensen för en diskret (oftast digital ) signal. Omsamplingsalgoritmer används i stor utsträckning vid bearbetning av ljudsignaler , radiosignaler och bilder (omsampling av en bitmapp är en förändring av dess upplösning i pixlar ).
Signalsamplen som motsvarar den nya samplingshastigheten beräknas från de redan tillgängliga samplen och innehåller ingen ny information.
Uppsampling kallas interpolation , nedsampling kallas decimering . [ett]
Enligt Kotelnikovs teorem kan varje kontinuerlig signal med ett ändligt spektrum (det vill säga ett sådant spektrum där det inte finns några spektrala komponenter som motsvarar frekvenser över eller lika med en viss frekvens ) representeras som sampel av en diskret signal med en samplingsfrekvens . Dessutom är en sådan transformation en-till-en , det vill säga, med förbehåll för villkoren för Kotelnikov-satsen, är det möjligt att återställa den ursprungliga signalen med ett ändligt spektrum utan distorsion från en diskret signal. [2]
Vid omsampling beräknas signalsamplen som motsvarar en samplingsfrekvens från tillgängliga sampel av samma signal som motsvarar en annan samplingsfrekvens (det antas att båda samplingsfrekvenserna motsvarar villkoren för Kotelnikov-satsen). Ideal omsampling motsvarar att återställa en kontinuerlig signal från dess samplingar och sedan sampla den vid en ny frekvens. [3]
Den exakta beräkningen av värdet på den ursprungliga kontinuerliga signalen vid en viss punkt utförs enligt följande: [4] [5]
där är det i:te samplet av signalen, är det tidsögonblick som motsvarar detta sampel, är den cykliska samplingshastigheten, är det interpolerade värdet för signalen vid tidpunkten .
Funktionen är inte finit , därför, för att beräkna signalvärdet vid en viss tidpunkt med hjälp av uttrycket ovan, är det nödvändigt att bearbeta ett oändligt antal av dess sampel (både i det förflutna och i framtiden), vilket är orealiserbart i öva. I det verkliga livet utförs interpolation med andra filter , medan uttrycket för det har följande form: [6] [7]
var är impulssvaret för motsvarande återvinningsfilter . Typen av detta filter väljs beroende på uppgiften. [åtta]
Direkt beräkning av nya signalsampler med användning av ovanstående formler kräver betydande beräkningsresurser och är oönskat för realtidsapplikationer . Det finns viktiga specialfall av omsampling för vilka beräkningen av nya prover är lättare: [9]
Med sådana begränsningar blir det bekvämt att använda standardimplementationer av digitala filter för omsampling.
Valet av funktion bestäms av en kompromiss mellan kvaliteten på omsamplingen (det vill säga dess närhet till ideal) och beräkningskomplexiteten i denna process. I princip kan vilket lågpassfilter som helst med önskad gränsfrekvens användas för omsampling . FIR-filter används oftare för dessa applikationer än IIR-filter på grund av möjligheten att bygga FIR-filter med linjär fasrespons . [tio]
Oftast används följande klasser av digitala filter vid omsampling: [11]
1. Filter byggda utifrån kriteriet om närhet mellan frekvenssvaret och frekvenssvaret för ett idealiskt lågpassfilter :
1.1. Windowed sinc-filter - deras impulssvar erhålls genom att multiplicera impulssvaret för ett idealiskt lågpassfilter med fönsterfunktionen , 1.2. Likavågiga Chebyshev-filter .2. Klassiska metoder för funktionsinterpolation (används ofta för bilder) [12] :
2.1. Linjära interpolatorer , 2.2. Lagrange-interpolatorer (specialfall - kubisk interpolation ).3. CIC-filter (kaskader av kamfilter och integratorer). [13] Denna klass av filter använder inte multiplikationer i beräkningen, vilket sparar beräkningsresurser.
Processen att minska samplingshastigheten för en signal kallas decimering. [1] Ibland används denna term endast för att reducera samplingsfrekvensen med ett helt antal gånger (nedan ). [14] Decimering av en digital signal med en heltalsfaktor utförs i två steg: [10] [15]
I engelsk litteratur kallas det andra av dessa steg ibland som nedsampling . [16] I vardagen kan denna term användas som en synonym för termen "decimering".
Det första steget är nödvändigt för att eliminera aliasing , som till sin natur liknar aliasing i den initiala samplingen av en analog signal . [15] Aliasingen är särskilt märkbar i de områden av signalen som innehåller betydande högfrekventa spektrala komponenter. Så på fotografierna som citerades i början av artikeln genomgick himlen praktiskt taget inte aliasing, men effekten blir märkbar om du är uppmärksam på skarpa övergångar.
Med mjukvaruimplementeringen av decimeringsalgoritmen tas inte "extra" avläsningar bort, utan beräknas helt enkelt inte. I detta fall reduceras antalet anrop till det digitala filtret med en faktor. Med hårdvaruimplementering kan besparingar uppnås genom att använda flerfasfilter . [17]
Interpolation är en ökning av frekvensen med ett heltal eller bråktal av gånger [1] genom att beräkna mellanliggande avläsningar från befintliga. Idealisk interpolation gör att du kan återställa signalvärdena i mellansamplar exakt.
Standardsignalinterpolationsalgoritmen med en heltalskoefficient är som följer: [18]
I engelskspråkig litteratur kallas det första av dessa steg ibland som upsampling . [16] I det här fallet, i vardagen, kan denna term användas som en synonym för termen "interpolation".
Med mjukvaruimplementering av interpolering är nollprov inte involverade i beräkningen av filterutgångssignalen, vilket möjliggör optimering av beräkningsprocessen. Med hårdvaruimplementering kan flerfasfilter användas för att spara resurser. [19] [20]
För att ändra samplingshastigheten för signalen med en faktor ( och är positiva heltal), kan du först öka samplingshastigheten med en faktor och sedan minska den med en faktor. Det räcker att filtrera signalen endast en gång - mellan interpolering och decimering. [21]
Nackdelen med denna metod är behovet av att filtrera signalen med en ökad samplingshastighet med flera gånger, vilket kräver betydande beräkningsresurser . I detta fall kan motsvarande frekvens vara många gånger större än både den initiala och den slutliga omsamplingsfrekvensen, speciellt om och är nära stora tal. [22] Så, till exempel, när man omsamplar en ljudsignal från 44 100 Hz till 48 000 Hz med denna metod, är det nödvändigt att öka samplingsfrekvensen med en faktor på 160 till 7 056 000 Hz och sedan minska den med en faktor på 147 till 48 000 Hz. I detta exempel måste således beräkningar utföras med en samplingshastighet på mer än 7 MHz.
Omsamplingsmetoden som använder flerfasfilter liknar den föregående, med skillnaden att istället för att ett filter arbetar med en hög samplingshastighet, används flera filter som arbetar med en låg frekvens. I detta fall är det möjligt att uppnå en minskning av antalet nödvändiga beräkningar, eftersom det för varje prov är nödvändigt att beräkna utsignalen från endast ett av dessa filter. [20] [23]
Ett flerfasfilter är en uppsättning små filter som arbetar parallellt, som vart och ett bearbetar endast en delmängd av signalsamplen (om det finns filter totalt kommer varje filter att behandla endast vart :te sampel).
Flerfasfilter används för omsampling med både heltals- och bråkkoefficienter. [24]
DFT -omsampling används för att öka samplingsfrekvensen med ett heltal eller ett bråktal av gånger. Algoritmen fungerar endast med ändliga segment av signalen. Låt vara det initiala antalet sampel, vara antalet sampel i den omsamplade signalen. Algoritmen inkluderar följande operationer: [25] [26]
1. DFT för den ursprungliga signalen beräknas (oftast med den snabba Fourier-transformalgoritmen ).
2. Det erforderliga antalet nollkomponenter infogas i mitten av spektrumet :
2.1. om udda: 2.2. om ens:3. Den inversa diskreta Fouriertransformen med normalisering beräknas .
Alla metoder baserade på DFT är i första hand avsedd för periodiska diskreta signaler. För att behandla icke-periodiska signaler är det nödvändigt att välja signalsegment för beräkning av DFT på ett sådant sätt att deras ändar överlappar varandra. [27]
Både hårdvara (baserad på specialiserade mikrokretsar [28] [29] eller FPGA [30] ) och mjukvara (baserad på generella processorer (se nedan) eller signalprocessorer [31] ) implementering av omsamplingsalgoritmer används i stor utsträckning.
Valet av en viss implementering av omsamplingsalgoritmen är resultatet av en kompromiss mellan kvaliteten på transformationen och dess beräkningskomplexitet . Huvudparametern som påverkar dessa egenskaper är närheten mellan de digitala filtren som används till de idealiska. Bättre filter kräver mer datorresurser. [32]
I praktiken leder omsampling i de flesta fall till förlust av information om signalen av följande skäl:
Sålunda, när man ökar samplingsfrekvensen och sedan minskar den till det ursprungliga värdet, kommer kvaliteten på signalen att gå förlorad (såvida inte den höga frekvensen är en multipel av den låga).
Sampling av signaler med marginal för samplingsfrekvens ( engelska översampling ) innebär sampling av en signal med en frekvens flera gånger högre än Kotelnikov-frekvensen , följt av decimering. Detta tillvägagångssätt gör det möjligt att uppnå följande fördelar [35] :
Ett liknande tillvägagångssätt används också vid återställning av en signal från dess sampel för att förenkla det analoga återställningsfiltret . [36]
Utrustning utformad för att återge digitalt ljud är vanligtvis utformad för en väldefinierad samplingshastighet av signalen omedelbart före digital-till-analog konvertering . Alla ljudsignaler med andra samplingsfrekvenser måste samplas om förr eller senare [37] .
Omsampling av ljudsignalen till önskad frekvens kan göras av mediaspelaren , ljudkortsdrivrutinen eller själva ljudkortet. Att använda ett spelarprogram för detta ändamål kan motiveras om du vill undvika hårdvaruomsampling av ljud (eller översampling av drivrutinen) för att uppnå högre kvalitet (med högre CPU- belastning ). Emellertid är mjukvaruomsampling av det reproducerade materialet till en annan frekvens än den frekvens som stöds av utrustningen meningslöst och leder bara till en förlust i signalkvalitet.
Det finns ljudåterförare med öppen källkod :
Omsampling stöds också av ljudredigeringsprogram (som Adobe Audition , Sony Sound Forge eller Audacity ).
Ändring av storlek är en av de vanligaste bildbehandlingsoperationerna. Nästan idealisk översampling är inte alltid önskvärd. Tvärtom kan resultaten av filter med en frekvensgång som är långt ifrån idealisk visuellt uppfattas som bra. [42] Valet av filter för omsampling är resultatet av en avvägning mellan artefakternas typ och svårighetsgrad och beräkningskomplexiteten hos transformationen (relevant för realtidsapplikationer ).
Typiska artefakter vid ändring av bildupplösning: [12] :
För omsampling av bilder används ett stort antal filter, som kan klassificeras enligt följande [12] :
Bilderna nedan illustrerar tillämpningen av de vanligaste filtren för bildstorleksändring. När du ökar bildstorleken utan filter blir bilden skarp, men pixlad. Med bilinjär interpolation är pixelering mindre märkbar, men bilden är suddig. När man använder Gauss-filtret är bilden suddig, men pixeleringen märks nästan inte. När man använder Lanczos-filtret finns det ingen pixelering, bilden är också suddig och ringsignaler märks (synligt som en ljus kant runt figurerna).
Bilden förstorad 4 gånger utan filter
Bild förstorad med 4 gånger med bilinjär interpolation
Bilden förstorad 4 gånger med ett Gaussiskt filter
Bilden förstorad med 4 gånger med Lanczos-filtret
Vid demodulering av digitala signaler är det önskvärt att samplingshastigheten för signalen är en multipel av dess nyckelhastighet (med andra ord att varje symbol har samma antal signalsampel). Samplingshastigheten för insignalen från ADC är dock vanligtvis fast, medan nycklingshastigheten kan variera. Lösningen är signalomsampling. [43]