Savitzky-Golayfilter

Een Savitzky-Golayfilter is een wiskundig filter uit de signaalverwerking voor toepassing op equidistante getalsmatige data. De methode is gebaseerd op bestaande wiskundige technieken en werd voor het eerst in 1964 beschreven door Abraham Savitzky en Marcel J. E. Golay.[1] Het filter maakt het oorspronkelijke signaal "gladder", dat wil zeggen vlakt snelle wisselingen af, waardoor ruis wordt gefilterd. Tevens kan het filter gebruikt worden om van het gefilterde signaal afgeleiden te bepalen. De afvlakking gebeurt door in het midden van een venster de gefilterde waarde te bepalen als gewogen som van de oorspronkelijke data in het venster. De wegingsfactoren worden bepaald met een polynoom die in een omgeving van het punt goed bij de data past.

Principe

bewerken

Een signaal is op equidistante afstanden gegeven door de rij:

 

Rondom het  -de punt in de rij wordt een venster

 

beschouwd, dat dus zicht biedt op de data

 

Op het venster wordt een polynoom van graad   gedefinieerd door

 ,

die zo goed mogelijk bij de data in het venster past in de zin van kleinste kwadraten, dus zo dat

  minimaal is.

De kleinste-kwadratenoplossing   voldoet aan de normaalvergelijkingen:

 

Deze vergelijkingen hebben de vorm:

 ,

met als oplossing

 ,

waarin de  -matrix   vanwege de equidistante afstanden een eenvoudige vorm heeft, die voor alle punten dezelfde is. De kolommen zijn:

 
 
 
 
 
 

en

 

is de kolomvector met de waarden van de data in het venster.

 
A is het Ramanspectrum van cyclohexaan met veel ruis, B is hetzelfde spectrum na filtering met het Savitsky-Golayfilter

De matrix   is een matrix met constante antidiagonalen (diagonalen dwars op de hoofddiagonaal), dus bij snijden van de hooddiagonaal met elementen gelijk aan het element op de hoofddiagonaal:

 ,

en bij kruisen van de hoofddiagonaal de waarden 0.

De matrix   is alleen afhankelijk van de halve vensterbreedte   en de graad   van de polynoom, en kan dus berekend worden onafhankelijk van de data.

Voor bijvoorbeeld   en   is:

 .

Voor   en   is:

 

en voor   en   is:

 

Het gefilterde signaal bestaat uit de rij:

 ,

met

 

Het gefilterde signaal is dus een vorm van convolutie van de eerste rij (met rij-index 0) van de matrix   en het oorspronkelijke signaal, en wordt gegeven door de gewogen som van de waarden van de data in het venster.

Afgeleiden

bewerken
 
A is het Ramanspectrum van cyclohexaan, B is de eerste afeleide en C de tweede afgeleide van het spectrum

De matrix   kan ook gebruikt worden om afgeleiden van het gefilterde signaal te berekenen. In het  -de punt wordt het gefilterde signaal voorgesteld door de polynoom

 

Deze heeft de afgeleiden:

 ,
 ,

met in het  -de punt de waarde

 

en

 

Analoog geldt voor andere afgeleiden:

 

De rij van   met rij-index   levert dus de wegingsfactoren voor het berekenen van de afgeleide van orde  .

Voorbeeld

bewerken

Voor   en   is de matrix  :

Gewichtsfactor Waarde gewichtsfactor
w0 −0,095238095 0,142857143 0,285714286 0,333333333 0,285714286 0,142857143 −0,095238095
w1 0,087301587 −0,265873016 −0,23015873 0 0,23015873 0,265873016 −0,087301587
w2 0,05952381 0 −0,035714286 −0,047619048 −0,035714286 0 0,05952381
w3 −0,027777778 0,027777778 0,027777778 0 −0,027777778 −0,027777778 0,027777778

Eigenschappen en beperkingen

bewerken

Het Savitzky-Golayfilter heeft ook zijn beperkingen. Als ruisfilter zijn de eigenschappen vaak eerder cosmetisch dan van praktisch belang omdat het filter het frequentiespectrum van de ruis nadelig beïnvloedt. Het onderdrukt een deel van de hoogfrequentie ruis, maar laat de langzamere componenten die vaak meer de analyse van de gegevens in de war sturen ongemoeid. Het is immers de laagfrequente ruis die het moeilijk maakt een piek van de signaalachtergrond te onderscheiden. Na filtering door middel van Savitzky-Golay is de ruis niet langer 'wit' en de meetfout niet langer normaal verdeeld.

Het aantal punten en het aantal termen in het filter met zorg gekozen moeten worden. De eigenschappen van een S-G filter hangen in belangrijke mate af van het gekozen venster en de gekozen orde van de polynoom. Als het model niet past is de uitkomst van de regressie niet te vertrouwen en komen er soms volkomen verkeerde getallen uit de berekening. Dit geldt eveneens in sterke mate voor de aanwezigheid van uitbijters in het signaal: een enkel volkomen fout punt (bijvoorbeeld ten gevolge van een schakelpuls in de stroom). Hoe groter het venster des te meer middeling en des te meer de ruis onderdrukt wordt. Hoe meer termen in de polynoom, hoe meer het oorspronkelijke signaal (inclusief ruis) benaderd wordt. Het benodigde venster voor het berekenen van de gekozen polynoom mag eveneens niet kleiner zijn dan het meetsignaal.