Vensterfunctie
Een vensterfunctie, in het Engels window function, apodization function of tapering function[1], is een wiskundige functie die nul is buiten een bepaald interval. Zo wordt een functie die nul is buiten een interval, en die een constante waarde heeft binnen het interval een rechthoekige vensterfunctie of rechthoekig venster genoemd, vanwege de vorm die dit venster heeft. Wanneer een ander signaal met de vensterfunctie puntsgewijs wordt vermenigvuldigd is het product nul buiten het interval van de vensterfunctie. Vandaar de benaming venster: men kijkt naar een ander signaal door een venster, waardoor men als het ware een stuk uit het volledige signaal knipt. Indien de vorm binnen het bereik van de vensterfunctie niet constant is, wordt het uitgeknipte stuk van het oorspronkelijk signaal ook nog eens gewijzigd.
Vensterfuncties worden onder meer gebruikt in alle analoge en digitale toepassingsgebieden van signaalverwerking, gevorderde varianten van de fouriertransformatie, beeldverwerking en digitale spraakverwerking. Ook analoge en digitale filters kunnen op basis van vensterfuncties worden ontworpen.
Effecten van het gebruik
[bewerken | brontekst bewerken]![](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Leakage.jpg/260px-Leakage.jpg)
De nevenstaande figuur illustreert de onderstaande uitleg concreet voor een sinus van 5,26 Hz die wordt waargenomen met een rechthoekig venster van 5 seconden. De fouriertransformatie van een oneindig lange sinus bestaat uit één enkele piek op de eigen frequentie. Een wiskundig perfecte sinus bevat immers enkel zijn eigen frequentie. Deze piek, groen op bijgaande figuur, is wiskundig voor te stellen als een Diracfunctie op die precieze frequentie. Wanneer echter (bijvoorbeeld) een rechthoekig venster op de sinus wordt toegepast is de fouriertransformatie, wegens de convolutiestelling de convolutie van de fouriertransformatie van de sinus en de fouriertransformatie van het venster. De convolutie van een Diracfunctie en een andere functie is op zijn beurt een verschuiving van de andere functie tot op de plaats van de Diracfunctie. Dit is een eigenschap van de Diracfunctie. Deze convolutie is de golvende functie in het rood op de figuur. De fouriertransformatie van een sinus, genomen door een rechthoekig venster, is dus een sinc-functie met haar maximum op de frequentie van de sinus (en een tweede sinc-functie op de negatieve frequentie). De fouriertransformatie van een rechthoekig tijdsignaal is immers een sinc-functie in frequentie.
Indien:
op het interval en nul daarbuiten, dan is de fouriertransformatie
De unieke spectrale lijn op de frequentie van de sinus is dus nu vervangen door deze sinc-functie gecentreerd op de frequentie van de sinus.
Indien:
op het interval en nul daarbuiten, dan is de fouriertransformatie
Daarboven komt nog het feit dat de fouriertransformatie in de praktijk wordt berekend door middel van een FFT, en deze berekent de fouriertransformatie in een discrete vorm: het resultaat van de FFT bevat enkel informatie op de veelvouden van de grondfrequentie van de meting, en deze is één gedeeld door de duur van de meting. Een meting van 5 seconden levert dus enkel fouriercoëfficiënten op 0,2 Hz, 0,4 Hz, 0,6 Hz... In het algemeen zullen deze zichtbare frequenties, de blauwe pieken op de figuur, niet samenvallen met de piek van de getransformeerde van het venster, en wordt er dus geen unieke piek gemeten, maar een gans bos van pieken die hun maximum bereiken in de buurt van de werkelijke frequentie van de te meten sinus. De maximale piek zal echter lager zijn dan de werkelijke sterkte van de sinus.
Alles bij elkaar wordt in het Fourierspectrum een sinus dus vervangen door de Fouriertransformatie van het gebruikte venster, en wordt dit dan nog eens bemonsterd op de zichtbare frequenties van de Fouriertransformatie. Als de werkelijke frequentie van de sinus niet met een die zichtbare frequenties samenvalt zal de fouriertransformatie van het gebruikte venster dus niet in zijn maximum worden bemonsterd.
Een rechthoekig venster gebruiken zal dus aanleiding geven tot de volgende fouten:
- Amplitudefout: De amplitude wordt te laag gemeten. Deze fout kan in het slechtste geval oplopen tot 36% te weinig, of dus 3,9 dB te laag
- Resolutiefout: De werkelijke frequentie van de sinus is niet meer nauwkeurig te meten, maar ligt tussen de twee hoogste pieken. Ook kan het voorkomen dat twee sinussen met lichtjes verschillende frequentie niet meer afzonderlijk te zien zijn, maar één gezamenlijke piek in het spectrum creëren.
- Leakage: De nabijgelegen zichtbare frequenties hebben niet-nulle amplitude, die er in realiteit niet is, maar die wel zwakkere sinussen in het signaal kunnen overstemmen. Dit effect wordt aangeduid met de Engelse benaming leakage, het weglekken van de energie van de werkelijke niet zichtbare frequentie naar nabijgelegen zichtbare frequenties.
Het gebruik van andere vensters probeert aan deze fouten iets te doen, maar geen enkel venster kan alle fouten samen verminderen. In het algemeen worden de amplitudefout en leakage samen kleiner (of groter) naargelang de resolutiefout groter (of kleiner) wordt.
Kwaliteitscriteria
[bewerken | brontekst bewerken]![](https://upload.wikimedia.org/wikipedia/commons/thumb/c/c6/Window_Criteria.jpg/260px-Window_Criteria.jpg)
De fouriergetransformeerde van een venster bestaat steeds uit een centrale hoofdlobe (main lobe) en afnemende zijlobes (side lobes). De vensters kunnen worden beoordeeld volgens volgende criteria:
- Scallop loss: de maximale fout in dB die kan voorkomen bij een amplitudemeting. Deze fout treedt op indien de top van de hoofdlobe niet samenvalt met een zichtbare frequentie van de Fouriertransformatie. In het slechtste geval ligt de frequentie van een te meten sinus toevallig net tussen de frequenties van twee opeenvolgende fouriercoëfficiënten. In deze situatie wordt de scallop loss bepaald.
- Main lobe width: de breedte van de hoofdlobe. Hoe breder de hoofdlobe, hoe moeilijker sinussen met bijna gelijke frequentie zullen kunnen onderscheiden worden. Bij vensters met een zeer brede hoofdlobe zullen de twee sinussen als één gezamenlijke piek zichtbaar zijn. Deze breedte kan op verschillende wijze worden gegeven, bijvoorbeeld de breedte op −3
dB uitgedrukt in bins. Een bin is het verschil in frequentie tussen twee opeenvolgende fouriercoëfficiënten. - Highest side lobe level: geeft aan hoeveel dB de hoogste zijlobe onder het niveau van de hoofdlobe ligt.
- Side lobe roll off: geeft aan met hoeveel dB/decade het niveau van de zijlobes zakt. Een decade is een frequentietoename met een factor tien. Samen met het niveau van de hoogste zijlobe bepaalt dit criterium in welke mate zwakke sinussen mogelijk zullen worden overstemd door de leakage van sterke sinussen die in de buurt liggen. Indien de frequentieas logaritmisch wordt gekozen is de side lobe roll off op de figuur een constant dalende lijn.
Types van vensters
[bewerken | brontekst bewerken]Terminologie:
- is de breedte in netpunten van de discrete vorm van het venster. Meestal is dat in de praktijk een macht van 2 zodat het Fast Fourier Transform-algoritme in optimale omstandigheden kan worden toegepast.
- is een gehele parameter die loopt van 0 tot N-1. De vensters worden dus beschreven op een internal [0..N-1] zodat het maximum van de vensters ruwweg ligt op n = N/2.
Rechthoekig venster
[bewerken | brontekst bewerken]![](https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Window_function_%28rectangular%29.svg/260px-Window_function_%28rectangular%29.svg.png)
Het rechthoekig venster is ook gekend onder de naam Dirichlet-venster. Het snijdt gewoon een stuk van lengte N uit een digitaal signaal zonder dat de samplewaarden van het signaal worden gewijzigd. Dit leidt in veel gevallen tot discontinuïteiten aan de randen van het interval waardoor het venster zeer slecht scoort op de criteria betreffende de hoogte zijlobe (slechts 13 onder de centrale lobe). Omdat de side lobe roll off slechts 20 dB met decade bedraagt kampt dit venster met ernstige leakage. Qua resolutie scoort dit venster wel heel goed.
Von Hann-venster
[bewerken | brontekst bewerken]![](https://upload.wikimedia.org/wikipedia/commons/thumb/2/28/Window_function_%28hann%29.svg/260px-Window_function_%28hann%29.svg.png)
Dit venster is ook gekend onder de benaming Hann-venster en Hanning-venster.
De vorm is niets anders dan een cosinusvorm die aan beide uiteinden nul wordt. Hierdoor worden discontinuïteiten aan de uiteinden vermeden. De side lobe roll off scoort heel goed met 60 dB/decade. Het Hanning-venster is een eenvoudig en goed compromis dat als algemeen bruikbaar venster wordt beschouwd, zonder uitzonderlijke kwaliteiten maar ook zonder grote gebreken.
Hamming-venster
[bewerken | brontekst bewerken]![](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Window_function_%28hamming%29.svg/260px-Window_function_%28hamming%29.svg.png)
Dit is een optimalisatie van het Von Hann-venster. De vorm is een kleine constante plus een cosinusvorm. De optimalisatie is zodanig dat de hoogte van de eerste zijlobe gevoelig wordt onderdrukt. De prijs die hiervoor betaald wordt is een minder snelle afname van de zijlobes: de side lobe roll off is 20 dB/decade, net zoals het rechthoekig venster. Omdat de hoogste zijlobe echter veel lager ligt dan bij het rechthoekig venster en het verval bij beide vensters gelijk is, scoort het Hamming-venster beter dan het rechthoekig venster op het gebied van detectie van zwakkere componenten in het signaal.
Tukey-venster
[bewerken | brontekst bewerken]![](https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Window_function_%28Tukey%3B_alpha_%3D_0.5%29.png/260px-Window_function_%28Tukey%3B_alpha_%3D_0.5%29.png)
Het Tukey-venster kan worden beschouwd als een cosinusvorm met een breedte die wordt geconvolueerd met een rechthoekig venster met een breedte . Voor a=0 wordt het venster rechthoekig, en voor a=1 een Hanning-venster.
Cosinus-venster
[bewerken | brontekst bewerken]![](https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Window_function_%28sine%29.png/260px-Window_function_%28sine%29.png)
Driehoekig venster (Bartlett-venster)
[bewerken | brontekst bewerken]![](https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Window_function_%28bartlett%29.png/260px-Window_function_%28bartlett%29.png)
Met eindpunten die nul zijn (Bartlett-venster):
![](https://upload.wikimedia.org/wikipedia/commons/thumb/9/97/Window_function_%28triangular%29.png/260px-Window_function_%28triangular%29.png)
Met eindpunten verschillend van nul:
Dit venster heeft een hoofdlobe die tweemaal zo breed is als het rechthoekig venster, en een hoogste zijlobe op −26 dB.
Kaiser-vensters
[bewerken | brontekst bewerken]![](https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Window_function_%28Kaiser%3B_alpha_%3D_2%29.png/260px-Window_function_%28Kaiser%3B_alpha_%3D_2%29.png)
![](https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Window_function_%28Kaiser%3B_alpha_%3D_3%29.png/260px-Window_function_%28Kaiser%3B_alpha_%3D_3%29.png)
Kaiser-vensters zijn gebaseerd op de Besselfunctie, en kunnen niet in een expliciete analytische vorm geschreven worden:
waarbij de nulde orde gemodificeerde Besselfunctie van de eerste soort is, en een parameter die doorgaans 3 wordt gekozen. Merk op dat
Blackman–Harris-venster
[bewerken | brontekst bewerken]![](https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/Window_function_%28blackman-harris%29.png/260px-Window_function_%28blackman-harris%29.png)
Dit is een veralgemening van een Hamming-venster. Er wordt in het venster nog een tweede cosinusgolf toegevoegd met een dubbele frequentie van die van het Hanning-venster. De bedoeling is het niveau van de zijlobes te verlagen.
Flattopvenster
[bewerken | brontekst bewerken]![](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Window_function_%28flat_top%29.png/260px-Window_function_%28flat_top%29.png)
Het flattopvenster is ontworpen om de scallop loss, dus de mogelijke fout bij de amplitudemeting van een sinusvormig signaal, te minimaliseren. Een flattopvenster geeft een quasi-correcte amplitudemeting. Daar tegenover staat een zeer slechte prestatie op het gebied van resolutie, want de hoofdlobe van een flattopvenster is vijf maal zo breed als bij een rechthoekig venster.
Vergelijking van enkele vensters
[bewerken | brontekst bewerken]![](https://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Window_function_%28comparsion%29.png/260px-Window_function_%28comparsion%29.png)
Onderstaande tabel vergelijkt de kwaliteitskarakteristieken van enkele veelgebruikte vensters. De scallop loss verbetert naarmate men lager in de tabel afdaalt, net als het niveau van de hoogste zijlobe. De breedte van de hoofdlobe wordt dan weer slechter. Het flat top venster is een speciaal geval. Signalen waarin sinuscomponenten aanwezig zijn met sterk verschillende amplitude zullen beter bestudeerd worden met vensters die lager in de tabel staan, omdat zwakke componenten kans lopen in het spectrum te worden overstemd door de zijlobes van de sterkere componenten indien een venster van bovenaan de tabel gebruikt wordt. Die vensters zijn dan weer beter geschikt om frequenties nauwkeuriger te meten. In het algemeen is een Hanning-venster een goed compromis.
Venster | Scallop Loss | main lobe width op −3 dB | higest side lobe level | side lobe roll off |
---|---|---|---|---|
Rechthoekig | −3,92 | 0,89 | −13 | −20 |
Driehoekig | −1,82 | 1,28 | −26 | −40 |
Hanning | −1,42 | 1,44 | −31 | −60 |
Hamming | −1,78 | 1,30 | −41 | −20 |
Kaiser(a=3) | −1,02 | 1,71 | −69 | −20 |
Blackman Harris (3 sample) | −1,13 | 1,66 | −71 | −20 |
Flat top | < 0,01 | 2,94 | −44 | −20 |
Overlappende vensters
[bewerken | brontekst bewerken]Indien een signaal te lang is om in één keer te worden behandeld kan men het opdelen en de stukken afzonderlijk bestuderen. Echter, de meeste vensters gaan aan de uiteinden naar nul. Om toch met alle informatie rekening te houden moeten de vensters daarom elkaar gedeeltelijk overlappen. Indien men bijvoorbeeld Hanning-vensters 50% laat overlappen wordt met elk detail in het signaal voor precies 100% rekening gehouden, verdeeld over twee aansluitende vensters.
Dit principe wordt toegepast in de zogenaamde Short-time Fourier Transformatie, kortweg STFT. Door een venster in overlappende stapjes over een lang signaal te laten schuiven, en steeds een Fouriertransformatie te berekenen krijg men niet alleen informatie over de frequenties die in het signaal aanwezig zijn, maar ook hoe deze in de tijd doorheen het signaal evolueren. De nauwkeurigheden waarmee die gebeurt in tijd en frequentie zijn echter omgekeerd evenredig met elkaar. Een verbeterde nauwkeurigheid (resolutie) in de tijd betekent een verzwakte nauwkeurigheid in frequentie en omgekeerd.
Externe link
[bewerken | brontekst bewerken]- (en) Windowing: Optimizing FFTs Using Window Functions Deze link bevat aanwijzingen welk venster te gebruiken naargelang het type signaal.
- A.W.M. van den Enden, N.A.M. Verhoeckx "Digitale Signaalbewerking" Delta Press, ISBN 90-6674-722-6
- E.C. Ifeachor, B.W. Jervis "Digital Signal Processing, a practical approach" Addison-Wesley Publ.Company ISBN 0-201-54431-8
- S.K. Mitra "Digital Signal Processing, a computer based approach" McGraw-Hill International Edition ISBN 007-124467-0
- K.M.M. Prabhu "Window Functions and Their Application in Signal Processing" CRC Press ISBN 978-1-4665-1583-3
- ↑ Eric W. Weisstein (2003). CRC Concise Encyclopedia of Mathematics. CRC Press. ISBN 1-58488-347-2.