Resampling i signalbehandling er en ændring i samplingsfrekvensen af et diskret (oftest digitalt ) signal. Resampling-algoritmer er meget udbredt i behandlingen af lydsignaler , radiosignaler og billeder (resampling af en bitmap er en ændring i dens opløsning i pixels ).
De signalprøver, der svarer til den nye samplingshastighed, er beregnet ud fra de allerede tilgængelige samples og indeholder ikke ny information.
Upsampling kaldes interpolation , downsampling kaldes decimering . [en]
Ifølge Kotelnikovs teorem kan ethvert kontinuerligt signal med et endeligt spektrum (det vil sige et sådant spektrum, hvor der ikke er nogen spektrale komponenter svarende til frekvenser over eller lig med en bestemt frekvens ) repræsenteres som samples af et diskret signal med en samplingsfrekvens . Desuden er en sådan transformation en-til-en , det vil sige, underlagt betingelserne i Kotelnikov-sætningen, er det muligt at genoprette det oprindelige signal med et endeligt spektrum uden forvrængning fra et diskret signal. [2]
Ved resampling beregnes signalprøverne svarende til en samplingsfrekvens ud fra de tilgængelige samples af det samme signal svarende til en anden samplingsfrekvens (det antages, at begge samplingsfrekvenser svarer til betingelserne i Kotelnikov-sætningen). Ideel resampling svarer til at gendanne et kontinuerligt signal fra dets samples og derefter sample det ved en ny frekvens. [3]
Den nøjagtige beregning af værdien af det originale kontinuerlige signal på et bestemt punkt udføres som følger: [4] [5]
hvor er den i-te sample af signalet, er tidspunktet svarende til denne sample, er den cykliske samplingshastighed, er den interpolerede værdi af signalet på det tidspunkt .
Funktionen er ikke endelig , derfor, for at beregne signalværdien på et bestemt tidspunkt ved hjælp af ovenstående udtryk, er det nødvendigt at behandle et uendeligt antal af dens samples (både i fortiden og i fremtiden), hvilket er urealiserbart i øve sig. I det virkelige liv udføres interpolation ved hjælp af andre filtre , mens udtrykket for det har følgende form: [6] [7]
hvor er impulssvaret for det tilsvarende genvindingsfilter . Typen af dette filter vælges afhængigt af opgaven. [otte]
Direkte beregning af nye signalprøver ved hjælp af ovenstående formler kræver betydelige beregningsressourcer og er uønsket til realtidsapplikationer . Der er vigtige særlige tilfælde af resampling, hvor beregningen af nye prøver er lettere: [9]
Med sådanne begrænsninger bliver det praktisk at bruge standardimplementeringer af digitale filtre til resampling.
Valget af funktion bestemmes af et kompromis mellem kvaliteten af resampling (det vil sige dens nærhed til ideal) og den beregningsmæssige kompleksitet af denne proces. I princippet kan et hvilket som helst lavpasfilter med den ønskede cutoff-frekvens bruges til resampling . FIR-filtre er mere almindeligt anvendt til disse applikationer end IIR-filtre på grund af evnen til at bygge FIR-filtre med en lineær faserespons . [ti]
Oftest bruges følgende klasser af digitale filtre til resampling: [11]
1. Filtre bygget ud fra kriteriet om nærhed af frekvensresponsen til frekvensresponsen for et ideelt lavpasfilter :
1.1. Windowed sinc-filtre - deres impulsrespons opnås ved at multiplicere impulsresponsen af et ideelt lavpasfilter med vinduesfunktionen , 1.2. Equal-wave Chebyshev filtre .2. Klassiske metoder til funktionsinterpolation (ofte brugt til billeder) [12] :
2.1. Lineære interpolatorer , 2.2. Lagrange-interpolatorer (specielt tilfælde - kubisk interpolation ).3. CIC-filtre (kaskader af kamfiltre og integratorer). [13] Denne klasse af filtre bruger ikke multiplikationer i beregningen, hvilket sparer beregningsressourcer.
Processen med at reducere samplingshastigheden af et signal kaldes decimering. [1] Nogle gange bruges dette udtryk kun til at reducere samplingshastigheden med et helt antal gange (i det følgende ). [14] Decimering af et digitalt signal med en heltalsfaktor udføres i to trin: [10] [15]
I engelsk litteratur omtales det andet af disse trin nogle gange som downsampling . [16] I hverdagen kan dette udtryk bruges som et synonym for udtrykket "decimering".
Det første trin er nødvendigt for at eliminere aliasing , som i sin natur ligner aliasing i den indledende sampling af et analogt signal . [15] Aliasing er især mærkbar i de områder af signalet, der indeholder betydelige højfrekvente spektrale komponenter. Så på fotografierne citeret i begyndelsen af artiklen undergik himlen praktisk talt ikke aliasing, men effekten bliver mærkbar, hvis du er opmærksom på skarpe overgange.
Med softwareimplementeringen af decimeringsalgoritmen fjernes "ekstra" aflæsninger ikke, men beregnes simpelthen ikke. I dette tilfælde reduceres antallet af opkald til det digitale filter med en faktor. Med hardwareimplementering kan der opnås besparelser ved at bruge polyfasefiltre . [17]
Interpolation er en stigning i frekvensen med et heltal eller et brøktal af gange [1] ved at beregne mellemliggende aflæsninger fra eksisterende. Ideel interpolation giver dig mulighed for nøjagtigt at gendanne signalværdierne i mellemeksempler.
Standardsignalinterpolationsalgoritmen med en heltalskoefficient er som følger: [18]
I engelsksproget litteratur omtales det første af disse trin nogle gange som upsampling . [16] I dette tilfælde, i hverdagen, kan dette udtryk bruges som et synonym for udtrykket "interpolation".
Med softwareimplementering af interpolation er nul samples ikke involveret i beregningen af filterudgangssignalet, hvilket gør det muligt at optimere beregningsprocessen. Med hardwareimplementering kan polyfasefiltre bruges til at spare ressourcer. [19] [20]
For at ændre samplinghastigheden af signalet med en faktor ( og er positive heltal), kan du først øge samplingshastigheden med en faktor og derefter reducere den med en faktor. Det er nok kun at filtrere signalet én gang - mellem interpolation og decimering. [21]
Ulempen ved denne metode er behovet for at filtrere signalet med en øget samplingshastighed flere gange, hvilket kræver betydelige computerressourcer . I dette tilfælde kan den tilsvarende frekvens være mange gange større end både den indledende og den endelige resamplingfrekvens, især hvis og er tætte store tal. [22] Så for eksempel, når du resampler et lydsignal fra 44.100 Hz til 48.000 Hz ved hjælp af denne metode, er det nødvendigt at øge samplingsfrekvensen med en faktor på 160 til 7.056.000 Hz og derefter reducere den med en faktor på 147 til 48.000 Hz. I dette eksempel skal beregninger således udføres ved en samplingshastighed på mere end 7 MHz.
Gensamplingsmetoden, der anvender polyfasefiltre , ligner den foregående, med den forskel, at der i stedet for et filter, der arbejder med en høj samplingshastighed, bruges flere filtre, der arbejder ved en lav frekvens. I dette tilfælde er det muligt at opnå en reduktion i antallet af nødvendige beregninger, da det for hver prøve er nødvendigt at beregne udgangssignalet fra kun et af disse filtre. [20] [23]
Et polyfasefilter er et sæt små filtre, der arbejder parallelt, som hver kun behandler en delmængde af signalprøverne (hvis der er filtre i alt, vil hvert filter kun behandle hver -te prøve).
Polyfasefiltre bruges til resampling med både heltal og fraktionskoefficienter. [24]
DFT resampling bruges til at øge samplingshastigheden med et heltal eller et brøktal af gange. Algoritmen fungerer kun med endelige segmenter af signalet. Lad være det indledende antal samples, være antallet af samples i det resamplede signal. Algoritmen inkluderer følgende operationer: [25] [26]
1. DFT af det originale signal beregnes (oftest ved hjælp af den hurtige Fourier-transformationsalgoritme ).
2. Det nødvendige antal nulkomponenter indsættes i midten af spektret :
2.1. hvis ulige: 2.2. hvis endda:3. Den inverse diskrete Fourier-transformation med normalisering beregnes .
Enhver metode baseret på DFT er primært beregnet til periodiske diskrete signaler. For at behandle ikke-periodiske signaler er det nødvendigt at vælge signalsegmenter til beregning af DFT på en sådan måde, at deres ender overlapper hinanden. [27]
Både hardware (baseret på specialiserede mikrokredsløb [28] [29] eller FPGA [30] ) og software (baseret på processorer til generelle formål (se nedenfor) eller signalprocessorer [31] ) implementering af resampling-algoritmer er meget brugt.
Valget af en bestemt implementering af resampling-algoritmen er resultatet af et kompromis mellem kvaliteten af transformationen og dens beregningsmæssige kompleksitet . Hovedparameteren, der påvirker disse karakteristika, er de digitale filtres nærhed til de ideelle. Bedre filtre kræver flere computerressourcer. [32]
I praksis fører resampling i de fleste tilfælde til tab af information om signalet af følgende årsager:
Når samplingsfrekvensen øges og derefter reduceres til den oprindelige værdi, vil kvaliteten af signalet således gå tabt (medmindre den høje frekvens er et multiplum af den lave).
Sampling af signaler med en margin for samplingsfrekvens ( engelsk oversampling ) betyder sampling af et signal ved en frekvens flere gange højere end Kotelnikov-frekvensen , efterfulgt af decimering. Denne tilgang gør det muligt at opnå følgende fordele [35] :
En lignende tilgang bruges også ved gendannelse af et signal fra dets samples for at forenkle det analoge gendannelsesfilter . [36]
Udstyr designet til at gengive digital lyd er normalt designet til en veldefineret samplinghastighed af signalet umiddelbart før digital-til-analog konvertering . Alle lydsignaler med andre samplingshastigheder skal gensamples før eller senere [37] .
Gensampling af lydsignalet til den ønskede frekvens kan udføres af medieafspilleren , lydkortdriveren eller selve lydkortet. Brug af et afspillerprogram til dette formål kan være berettiget, hvis du vil undgå hardware-resampling af lyd (eller oversampling af driveren) for at opnå højere kvalitet (med højere CPU- belastning ). Software-resampling af det reproducerede materiale til en frekvens forskellig fra den frekvens, der understøttes af udstyret, giver imidlertid ikke mening og fører kun til et tab i signalkvalitet.
Der er open source-software lydresamplere :
Gensampling understøttes også af lydredigeringssoftware (såsom Adobe Audition , Sony Sound Forge eller Audacity ).
Ændring af størrelse er en af de mest almindelige billedbehandlingsoperationer. Næsten ideel oversampling er ikke altid ønskelig. Tværtimod kan resultaterne af filtre med en frekvensgang, der er langt fra ideel, visuelt opfattes som gode. [42] Valget af filter til resampling er resultatet af en afvejning mellem artefakternes art og sværhedsgrad og den beregningsmæssige kompleksitet af transformationen (relevant for realtidsapplikationer ).
Typiske artefakter ved ændring af billedopløsning: [12] :
Til billedresampling bruges et stort antal filtre, som kan klassificeres som følger [12] :
Billederne nedenfor illustrerer anvendelsen af de mest almindeligt anvendte billedstørrelsesfiltre. Når du øger billedstørrelsen uden et filter, er billedet skarpt, men pixeleret. Med bilineær interpolation er pixelering mindre mærkbar, men billedet er sløret. Ved brug af Gauss-filteret er billedet sløret, men pixeleringen er næsten ikke mærkbar. Når du bruger Lanczos-filteret, er der ingen pixelering, billedet er også sløret, og ringningen er mærkbar (synlig som en lys kant rundt om figurerne).
Billede forstørret 4 gange uden filter
Billede forstørret med 4 gange med bilineær interpolation
Billede forstørret 4 gange med et Gaussisk filter
Billede forstørret 4 gange med Lanczos-filteret
Ved demodulering af digitale signaler er det ønskeligt, at samplingshastigheden af signalet er et multiplum af dets nøglehastighed (med andre ord, at hvert symbol har det samme antal signalsamples). Imidlertid er samplinghastigheden af inputsignalet fra ADC normalt fast, mens nøglehastigheden kan variere. Løsningen er signalresampling. [43]