Wiener filter

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Wiener-filtering is een methode om een vervuild signaal (bestaande uit een nuttig signaal en een ruissignaal) te filteren zodanig dat er zo veel mogelijk ruis verwijderd wordt, en dus dat het zuiver signaal zo goed mogelijk benaderd wordt. De methode werd ontworpen door Norbert Wiener in de jaren 40.

Het voordeel van deze methode is dat ze makkelijk te implementeren is in een wiskundepakket (bijvoorbeeld MATLAB), het nadeel is dat ze informatie vereist over het zuiver signaal én over het ruissignaal. Deze signalen worden stationair verondersteld, en beide signalen moeten ongecorreleerd zijn. Het filter zal dus goed werken bij bijvoorbeeld witte gaussiaanse ruis.

Het filter wordt gekarakteriseerd door zijn impulsantwoord. Dit impulsantwoord is te vinden door het oplossen van de Wiener-Hopf vergelijking: conv(h,Rxx)=Rss De afleiding hiervan steunt op statische overwegingen (het projectietheorema: de kleinste kwadratische afwijking minimaal maken).

Probleemstelling[bewerken]

De ingang van het filter wordt beschouwd als een zuiver signaal s(t) vervuild met additieve ruis r(t). Het resultaat van het filter \hat{s}(t) wordt bekomen door een convolutie met g(t):

\hat{s}(t) = g(t) * (s(t)+r(t)) = g(t) * s(t)

met

  • s(t) het zuiver signaal
  • r(t) de additieve ruis
  • x(t) het vervuilde signaal
  • g(t) het impulsantwoord van het filter
  • \hat{s}(t) het gefilterde signaal

De fout is gedefinieerd als het verschil tussen het zuivere signaal en het gefilterde signaal:

e(t) = s(t + \alpha) - \hat{s}(t)

Het zuivere signaal wordt verschoven over \alpha om rekening te houden met de vertraging van het filter.

De kwadratische fout wordt zo:

e^2(t) = s^2(t + \alpha) - 2s(t + \alpha)\hat{s}(t) + \hat{s}^2(t)

Afhankelijk van de waarde van \alpha kunnen we drie soorten problemen onderscheiden:

  • \alpha > 0: voorspelling (de fout wordt kleiner als \hat{s}(t) lijkt op latere waarden van s)
  • \alpha = 0: filtering (de fout wordt kleiner als \hat{s}(t) lijkt op s(t))
  • \alpha < 0: smoothing (de fout wordt kleiner als \hat{s}(t) lijkt op eerdere waarden van s)

We kunnen de convolutie uitschrijven:

\hat{s}(t) = \int_{-\infty}^{\infty}{g(\tau)\left[s(t - \tau) + r(t - \tau)\right]\,d\tau}.

Substitueren in de vergelijking voor e^2(t) en het bereken van de verwachtingswaarde levert:

E(e^2) = R_{ss}(0) - 2\int_{-\infty}^{\infty}{g(\tau)R_{xs}(\tau + \alpha)\,d\tau} + \int_{-\infty}^{\infty}{\int_{-\infty}^{\infty}{g(\tau)g(\theta)R_{xx}(\tau - \theta)\,d\tau}\,d\theta}

met

  • R_{ss} de autocorrelatiefunctie van s(t)
  • R_{xx} de autocorrelatiefunctie van x(t)
  • R_{xs} de kruiscorrelatiefunctie van x(t) and s(t)

Indien het signaal s(t) en de ruis r(t) ongecorreleerd zijn geldt het volgende:

  • R_{xs}=R_{ss}
  • R_{x}=R_{s}+R_{r}

Voor veel toepassingen is dit een redelijke aanname aangezien de ruis niet afhangt van het signaal (bijvoorbeeld: quantisatieruis, sensorruis,...).

Het doel van het filter is E(e^2) te minimaliseren door het bepalen van een optimale g(t)