Savitzky-Golayfilter

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Savitzky-golay pic gaussien bruite.svg
Lissage sg3 anim.gif

Een Savitzky-Golayfilter is een veel toegepaste statistische bewerking van op regelmatige afstand genomen getalsmatige meetpunten.[1] In de bewerking wordt meestal in een beperkt gebied rond een centraal punt een polynoom door de gegevens geconstrueerd en deze kromme gebruikt voor het schatten van de waarde ervan in het centrale punt. Het doel hiervan is ofwel het filteren van ruis, ofwel het bepalen van een afgeleide ter plekke van het centrale punt.

Principe[bewerken]

Het Savitzky-Golayfilter is een toepassing van het principe van lineaire regressie. Stel we hebben onafhankelijke variabelen X en een model M voor gemeten afhankelijke variabelen Y dat onbekende parameters β bevat:

Y = M(X;β) + ε

Wanneer de fouten ε willekeurig verdeeld zijn volgens een enkele normaalverdeling N(0,σ2) ('witte' ruis) kan aangetoond worden dat de som van de kwadraten van de fouten dan minimaal is als de parameters β voldoen aan de matrixvergelijking:

β= (XTX)-1XTY

De matrix (XTX)-1XT kan beschouwd worden als een gegeneraliseerde inverse van X de matrix die alle informatie bevat over de onafhankelijke variabelen, dat wil zeggen de bij de gekozen waarden waarbij de meting verricht wordt, bijvoorbeeld de concentraties, temperaturen, locatie, golflengte, tijd enz. waarbij men besluit een meting te doen. Savitzky en Golay wijzen erop dat men de matrix (XTX)-1XT daarmee al berekenen kan voordat men de meting gedaan heeft om vervolgens de waarde ervan toe te passen op de gedane meting verzameld in de matrix Y.

Een bijzonder geval doet zich voor wanneer men besluit de metingen uit te voeren op regelmatige afstanden, bijvoorbeeld voor honderd waarden van de temperatuur van zeg 20oC tot 30oC in gelijke stappen van 0,1oC. Er wordt dan rond een bepaald meetpunt een bepaalde venster gekozen, bijvoorbeeld drie punten aan weerszijden. Met andere woorden, ieder punt kan als de oorsprong van een eigen coördinatenstelsel beschouwd worden. Aan deze punten worden dan gehele coördinaten toegekend, in dit voorbeeld:

x= ...-3, -2, -1, 0, 1, 2, 3, ...

De matrix X kan op eenvoudige wijze samengesteld worden. Stel het model dat we rond het centrale punt willen aanbrengen is een polynoom van orde drie:

Ypolynoom = a(.1) + b.x + c.x2 + d.x3

De onbekende parameters zijn vervat in β:

β = (a,b,c,d)T

De X matrix bestaat dan uit kolommen:

x0= (...1, 1, 1, 1, 1, 1, 1, ...)T
x1= (...-3, -2, -1, 0, 1, 2, 3, ...)T
x2= (...9, 4, 1, 0, 1, 4, 9, ...)T
x3= (...-27, -8, -1, 0, 1, 8, 27, ...)T

Als de groep punten rond het centrale punt beperkt wordt aan iedere kant, dan bestaat de matrix X uit bekende gehele getallen en kan de gegeneraliseerde inverse W=(XTX)-1XT eenvoudig berekend worden, zelfs al voordat de meetwaarden Y bekend zijn. In bijvoorbeeld een rekenbladprogramma als Excel kunnen we gebruik maken van de arrayfunctie

=mmult(minverse(mmult(transpose(xxx),xxx)),transpose(xxx))

waarbij xxx de naam is die we gegeven hebben aan de range die de X matrixgegevens bevat. Dit geeft als resultaat:

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

Zodra de meting Y bekend is, kunnen de parameters β geschat worden door het matrixproduct:

β = (XT.X)-1.XT.Y = W.Y

Aangezien de matrix W dezelfde is voor een bepaalde vensterbreedte, worden deze waarden dikwijls geprogrammeerd in het pakket dat gebruikt wordt om meetgegevens te verwerken. Wn bevat de gewichten waarmee de zeven meetpunten in het masker vermenigvuldigd moeten worden om de waarden van a,b,c en d te bepalen.

Toepassingen[bewerken]

Illustratie van de toepassing van het Savitsky-Golayalgoritme: A is een zeer ruizig Ramanspectrum van cyclohexaan, B is hetzelfde spectrum na uitoefenen van het Savitsky-Golayalgoritme

Omdat de waarde van de x-coordinaat ter plekke van het centrale punt nul is, kunnen we schrijven:

y(0) = a + b·0 + c·0² + d·0³ = a

Via de gewichtsfactoren in w0, bevat a informatie van de nabije datapunten. Door de kleinste kwadratenfit van de polynoom door de nabuurpunten, worden kleine variaties in het signaal uitgemiddeld. Hierdoor vermindert de ruis.

Illustratie van de toepassing van het Savitsky-Golayalgoritme: A is het Ramanspectrum van cyclohexaan, B is het eerste en C het tweede afgeleide spectrum

Behalve voor ruisfiltering kan het Savitzky-Golayalgorime gebruikt worden voor het berekenen van afgeleiden van discontinue signalen. Bijvoorbeeld voor de eerste afgeleide:

y(x) = a + b·x + c·x² + d·x³
y'(x) = 0 + b + 2c·x + 3d·x²
y(2)(x) = 2c + 6d·x
y(3)(x) = 6d

Ter plekke van het centrale punt x=0 krijgen we:

y'(0) = 0 + b + 2c·0 + 3d·0² = b
y(2)(0) = 2c + 6d·0
y(3)(0) = 6d

Dat wil zeggen dat wanneer we de tweede set gewichten w1 toepassen we een schatting krijgen voor de eerste afgeleide. Algemeen versterken afgeleiden de ruis die aanwezig is in het oorspronkelijke signaal. Door de inherente uitmiddeling, door het gebruik van data van nabuurpunten om de waarde in een punt te bepalen, wordt dit effect bij toepassing van het Savitzky-Golayalgoritme ten dele ondervangen. Savitzky-Golayfilters zijn dan ook een van de weinige praktische methodes om snel en effectief een bruikbare waarde te verkrijgen. Bijgevolg worden deze filters vaak toegepast voor het automatisch lokaliseren van pieken in gemeten signalen.

Hoewel in het bovenstaande voorbeeld een regelmatige verzameling in een dimensie is aangenomen is het principe ook uit te breiden naar twee of meer dimensies. Beelden verkregen uit fotografische methoden worden soms met het principe bewerkt om gradiënten te bepalen. Omdat het aantal buurpunten toeneemt met nd waarbij n de grootte van het gekozen filter is en d de dimensionaliteit en het aantal mogelijke termen van de polynoom minder snel stijgt zijn Savitzky-Golayfilters zelfs aanzienlijk effectiever wanneer de gegevens een hogere dimensionaliteit bezitten.

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 minder 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.

Bronnen, noten en/of referenties
  1. A. Savitkzy and M.J.E. Golay (1964). Smoothing and differentiation of data by simplified least squares procedures. Analytical Chemistry, 36(8): 1627-1964