<< Chapter < Page | Chapter >> Page > |
The wiener filter is an adaptive filter. It tailors itself to be the “best possible filter” for a given dataset. Below is a simplistic version of the derivation for the wiener formula.
Consider our standard equation to model a signal with noise:
We want to pass this y[n] through a filter ‘h’ such that we get back something that very closely resembles our original signal x, i.e. x.
So basically we want to design a filter that minimizes the difference between x and x. Lets start out by minimizing the least mean square error between x and x.
But we know x is h*y (h convolved with y), so we have:
We can expand this expression known algebraic rules. Then we can take the Fourier transform of the expression to find the power spectra.
We minimize this expression over H and in the end after all the simplification we get the following formula for H, our filter optimized to minimize the difference between x and x.
Where X(f) is the power of the signal and N(f) is the power of the noise.
Just by inspection we can see that this filter will take care of the basics. For example when there is no noise, the filter response goes to just 1. When the signal is 0 the filter response goes to 0.
Notice to use this filter we will need to know the power spectrum of the actual signal. We also need to estimate the power spectrum of the noise. In real life this is done in numerous ways. Oftentimes out of convenience engineers will approximate the noise to Gaussian. This works well with varying results.
One way to approximate the noise is “by inspection” or what is more commonly known as “guess and check”. In this method, you take a close look at your received signal and your pure signal.
Then we try to figure out what the noise could look like based on this information. For this data set, we have traced out our “best guess” for the noise spectrum below
Just by looking at the noise spectrum we want, we look for patterns we could fit a mathematical formula to. In this example you can see that the function decays like a polynomial on one side and exponentially on the other.
So our general noise toggling function becomes:
And so we fix our parameters alpha, beta and gamma until we get something that resembles the function we drew in red earlier.
So now using the values we calculated for X(f) and N(f) we create our wiener filter.
So lets try the filter on the data shall we?
We see that the wiener filter does its job pretty well. It even wins over the bandpass filter in the simpler example since it even removes the excess amplitude added by the noise.
Lets take a look at the image of all the time series vectors.
We can see that the unfiltered image is pretty blurry with not much distinguishable from the background. On the other hand the picture of the filtered version comes out pretty well and we can see distinct values for every time series.
So that concludes the section on filtering. Hopefully you have a better understanding on how to design adaptive filters, the wiener filter in particular. Now its time to move the data to the next stage of the process: Imaging.
Notification Switch
Would you like to follow the 'Seismic imaging' conversation and receive update notifications?