In signal processing, the Wiener filter is a filter used to produce an estimate of a desired or target random process by linear time-invariant (LTI) filtering of an observed noisy process, assuming known stationary signal and noise spectra, and additive noise. The Wiener filter minimizes the mean square error between the estimated random process and the desired process.
The goal of the Wiener filter is to compute a statistical estimate of an unknown signal using a related signal as an input and filtering that known signal to produce the estimate as an output. For example, the known signal might consist of an unknown signal of interest that has been corrupted by additive noise. The Wiener filter can be used to filter out the noise from the corrupted signal to provide an estimate of the underlying signal of interest. The Wiener filter is based on a statistical approach, and a more statistical account of the theory is given in the minimum mean square error (MMSE) estimator article.
Typical deterministic filters are designed for a desired frequency response. However, the design of the Wiener filter takes a different approach. One is assumed to have knowledge of the spectral properties of the original signal and the noise, and one seeks the linear time-invariant filter whose output would come as close to the original signal as possible. Wiener filters are characterized by the following:[1]
This filter is frequently used in the process of deconvolution; for this application, see Wiener deconvolution.
Let
s(t+\alpha)
x(t)
\alpha>0
\alpha=0
\alpha<0
The Wiener filter problem has solutions for three possible cases: one where a noncausal filter is acceptable (requiring an infinite amount of both past and future data), the case where a causal filter is desired (using an infinite amount of past data), and the finite impulse response (FIR) case where only input data is used (i.e. the result or output is not fed back into the filter as in the IIR case). The first case is simple to solve but is not suited for real-time applications. Wiener's main accomplishment was solving the case where the causality requirement is in effect; Norman Levinson gave the FIR solution in an appendix of Wiener's book.
G(s)=
Sx,s(s) | |
Sx(s) |
e\alpha,
where
S
g(t)
E(e2)=Rs(0)-
infty | |
\int | |
-infty |
g(\tau)Rx,s(\tau+\alpha)d\tau,
and the solution
g(t)
G(s)
G(s)=
H(s) | |||||||||
|
,
where
H(s)
Sx,s(s) | |||||||||
|
e\alpha
+ | |
S | |
x |
(s)
Sx(s)
+ | |
S | |
x |
(s)
t\ge0
- | |
S | |
x |
(s)
Sx(s)
- | |
S | |
x |
(s)
t<0
This general formula is complicated and deserves a more detailed explanation. To write down the solution
G(s)
Sx(s)
Sx(s)=
+ | |
S | |
x |
(s)
- | |
S | |
x |
(s)
S+
S-
Sx,s(s)e\alpha
- | |
S | |
x |
(s)
H(s)
H(s)
+ | |
S | |
x |
(s)
G(s)
The causal finite impulse response (FIR) Wiener filter, instead of using some given data matrix X and output vector Y, finds optimal tap weights by using the statistics of the input and output signals. It populates the input matrix X with estimates of the auto-correlation of the input signal (T) and populates the output vector Y with estimates of the cross-correlation between the output and input signals (V).
In order to derive the coefficients of the Wiener filter, consider the signal w[''n''] being fed to a Wiener filter of order (number of past taps) N and with coefficients
\{a0, … ,aN\}
x[n]=
N | |
\sum | |
i=0 |
aiw[n-i].
The residual error is denoted e[''n''] and is defined as e[''n''] = x[''n''] - s[''n''] (see the corresponding block diagram). The Wiener filter is designed so as to minimize the mean square error (MMSE criteria) which can be stated concisely as follows:
ai=\argminE\left[e2[n]\right],
where
E[ ⋅ ]
ai
\begin{align} E\left[e2[n]\right]&=E\left[(x[n]-s[n])2\right]\\ &=E\left[x2[n]\right]+E\left[s2[n]\right]-2E[x[n]s[n]]\\ &=E\left[\left(
N | |
\sum | |
i=0 |
aiw[n-i]\right)2\right]+E\left[s2[n]\right]-2E\left
N | |
[\sum | |
i=0 |
aiw[n-i]s[n]\right] \end{align}
To find the vector
[a0,\ldots,aN]
ai
\begin{align} | \partial |
\partialai |
E\left[e2[n]\right]&=
\partial | |
\partialai |
\left\{E\left[\left(
N | |
\sum | |
j=0 |
ajw[n-j]\right)2\right]+E\left[s2[n]\right]-2E\left
N | |
[\sum | |
j=0 |
ajw[n-j]s[n]\right]\right\}\\ &=2E\left[\left(
N | |
\sum | |
j=0 |
ajw[n-j]\right)w[n-i]\right]-2E[w[n-i]s[n]]\\ &=2\left(
N | |
\sum | |
j=0 |
E[w[n-j]w[n-i]]aj\right)-2E[w[n-i]s[n]] \end{align}
Assuming that w[''n''] and s[''n''] are each stationary and jointly stationary, the sequences
Rw[m]
Rws[m]
\begin{align} Rw[m]&=E\{w[n]w[n+m]\}\\ Rws[m]&=E\{w[n]s[n+m]\} \end{align}
The derivative of the MSE may therefore be rewritten as:
\partial | |
\partialai |
E\left[e2[n]\right]=2\left(
N | |
\sum | |
j=0 |
Rw[j-i]aj\right)-2Rws[i] i=0, … ,N.
Note that for real
w[n]
N | |
\sum | |
j=0 |
Rw[j-i]aj=Rws[i] i=0, … ,N.
which can be rewritten (using the above symmetric property) in matrix form
\underbrace{\begin{bmatrix} Rw[0]&Rw[1]& … &Rw[N]\\ Rw[1]&Rw[0]& … &Rw[N-1]\\ \vdots&\vdots&\ddots&\vdots\\ Rw[N]&Rw[N-1]& … &Rw[0] \end{bmatrix}}T\underbrace{\begin{bmatrix}a0\ a1\ \vdots\ aN\end{bmatrix}}a=\underbrace{\begin{bmatrix}Rws[0]\\Rws[1]\ \vdots\ Rws[N]\end{bmatrix}}v
These equations are known as the Wiener–Hopf equations. The matrix T appearing in the equation is a symmetric Toeplitz matrix. Under suitable conditions on
R
a=T-1v
In some articles, the cross correlation function is defined in the opposite way:Then, the
v
Rsw[0]\ldotsRsw[N]
Whichever notation is used, note that for real
w[n],s[n]
The realization of the causal Wiener filter looks a lot like the solution to the least squares estimate, except in the signal processing domain. The least squares solution, for input matrix
X
y
\boldsymbol{\hat\beta}=(XTX)-1XT\boldsymboly.
The FIR Wiener filter is related to the least mean squares filter, but minimizing the error criterion of the latter does not rely on cross-correlations or auto-correlations. Its solution converges to the Wiener filter solution.
For complex signals, the derivation of the complex Wiener filter is performed by minimizing
E\left[|e[n]|2\right]
E\left[e[n]e*[n]\right]
ai
The resulting Wiener-Hopf equations are:
N | |
\sum | |
j=0 |
Rw[j-i]
* | |
a | |
j |
=Rws[i] i=0, … ,N.
which can be rewritten in matrix form:
\underbrace{\begin{bmatrix} Rw[0]&
*[1] | |
R | |
w |
& … &
*[N-1] | |
R | |
w |
&
*[N] | |
R | |
w |
\\ Rw[1]&Rw[0]& … &
*[N-2] | |
R | |
w |
&
*[N-1] | |
R | |
w |
\\ \vdots&\vdots&\ddots&\vdots&\vdots\\ Rw[N-1]&Rw[N-2]& … &Rw[0]&
*[1] | |
R | |
w |
\\ Rw[N]&Rw[N-1]& … &Rw[1]&Rw[0] \end{bmatrix}}T\underbrace{\begin{bmatrix}
* | |
a | |
0 |
* | |
\ a | |
1 |
\ \vdots
* | |
\\a | |
N-1 |
* | |
\ a | |
N |
\end{bmatrix}} | ||
|
=\underbrace{\begin{bmatrix}Rws[0]\\Rws[1]\ \vdots\ Rws[N-1]\ Rws[N]\end{bmatrix}}v
The Wiener coefficient vector is then computed as:
The Wiener filter has a variety of applications in signal processing, image processing,[4] control systems, and digital communications. These applications generally fall into one of four main categories:
For example, the Wiener filter can be used in image processing to remove noise from a picture. For example, using the Mathematica function:WienerFilter[image,2]
on the first image on the right, produces the filtered image below it.
It is commonly used to denoise audio signals, especially speech, as a preprocessor before speech recognition.
The filter was proposed by Norbert Wiener during the 1940s and published in 1949.[5] [6] The discrete-time equivalent of Wiener's work was derived independently by Andrey Kolmogorov and published in 1941.[7] Hence the theory is often called the Wiener–Kolmogorov filtering theory (cf. Kriging). The Wiener filter was the first statistically designed filter to be proposed and subsequently gave rise to many others including the Kalman filter.