Saturday, October 10, 2009

WIENER FILTER

In signal processing, the Wiener filter is a filter proposed by Norbert Wiener during the 1940s and published in 1949. Its purpose is to reduce the amount of noise present in a signal by comparison with an estimation of the desired noiseless signal. The discrete-time equivalent of Wiener's work was derived independently by Kolmogorov and published in 1941. Hence the theory is often called the Wiener-Kolmogorov filtering theory


Description

The goal of the Wiener filter is to filter out noise that has corrupted a signal. It is based on a statistical approach.
Typical 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 LTI filter whose output would come as close to the original signal as possible. Wiener filters are characterized by the following:
  1. Assumption: signal and (additive) noise are stationary linear stochastic processes with known spectral characteristics or known autocorrelation and cross-correlation
  2. Requirement: the filter must be physically realizable, i.e. causal (this requirement can be dropped, resulting in a non-causal solution)
  3. Performance criterion: minimum mean-square error (MMSE)
This filter is frequently used in the process of deconvolution; for this application, see Wiener deconvolution.

Model/problem setup

The input to the Wiener filter is assumed to be a signal, s(t), corrupted by additive noise, n(t). The output, \hat{s}(t), is calculated by means of a filter, g(t), using the following convolution:
\hat{s}(t) = g(t) * (s(t) + n(t))
where
  • s(t) is the original signal (to be estimated)
  • n(t) is the noise
  • \hat{s}(t) is the estimated signal (which we hope will equal s(t))
  • g(t) is the Wiener filter's impulse response
The error is defined as
e(t) = s(t + \alpha) - \hat{s}(t)
where
  • α is the delay of the wiener filter (since it is causal)
In other words, the error is the difference between the estimated signal and a the true signal shifted by α. Clearly the squared error is
e^2(t) = s^2(t + \alpha) - 2s(t + \alpha)\hat{s}(t) + \hat{s}^2(t)
where
  • s(t + α) is the desired output of the filter
  • e(t) is the error
Depending on the value of α the problem name can be changed:
  • If α > 0 then the problem is that of prediction (error is reduced when \hat{s}(t) is similar to a later value of s)
  • If α = 0 then the problem is that of filtering (error is reduced when \hat{s}(t) is similar to s(t))
  • If α < 0 then the problem is that of smoothing (error is reduced when \hat{s}(t) is similar to an earlier value of s)
Writing \hat{s}(t) as a convolution integral: \hat{s}(t) = \int_{-\infty}^{\infty}{g(\tau)\left[s(t - \tau) + n(t - \tau)\right]\,d\tau}.
Taking the expected value of the squared error results in
E(e^2) = R_s(0) - 2\int_{-\infty}^{\infty}{g(\tau)R_{x\,s}(\tau + \alpha)\,d\tau} + \int_{-\infty}^{\infty}{\int_{-\infty}^{\infty}{g(\tau)g(\theta)R_x(\tau - \theta)\,d\tau}\,d\theta}
where
If the signal s(t) and the noise n(t) are uncorrelated (i.e., the cross-correlation  \,R_{sn}\, is zero) then note the following
  • R_{x\,s} = R_s
  • \,\!R_x = R_s + R_n
For most applications, the assumption of uncorrelated signal and noise is reasonable because the source of the noise (e.g. sensor noise or quantization noise) do not depend upon the signal itself.
The goal is to then minimize E(e2) by finding the optimal g(t).

 Wiener filter solutions

The Wiener filter problem has solutions for three possible cases: one where a non-causal 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 FIR case where a finite amount of past data is used. 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, and in an appendix of Wiener's book Levinson gave the FIR solution.

 Noncausal solution

G(s) = \frac{S_{x,s}(s)e^{\alpha s}}{S_x(s)}
Provided that g(t) is optimal then the MMSE equation reduces to
E(e^2) = R_s(0) - \int_{-\infty}^{\infty}{g(\tau)R_{x,s}(\tau + \alpha)\,d\tau}
And the solution, g(t) is the inverse two-sided Laplace transform of G(s).

  Causal solution

G(s) = \frac{H(s)}{S_x^{+}(s)}
Where
  • H(s) consists of the causal part of \frac{S_{x,s}(s)e^{\alpha s}}{S_x^{-}(s)} (that is, that part of this fraction having a positive time solution under the inverse Laplace transform)
  • S_x^{+}(s) is the causal component of Sx(s) (i.e. the inverse Laplace transform of S_x^{+}(s) is non-zero only for t\ge 0)
  • S_x^{-}(s) is the anti-causal component of Sx(s) (i.e. the inverse Laplace transform of S_x^{-}(s) is non-zero only for negative t)
This general formula is complicated and deserves a more detailed explanation. To write down the solution G(s) in a specific case, one should follow these steps (see ):
1. Start with the spectrum Sx(s) in rational form and factor it into causal and anti-causal components:
S_x(s) = S_x^{+}(s) S_x^{-}(s)
where S + contains all the zeros and poles in the left hand plane (LHP) and S contains the zeroes and poles in the RHP. This is called the Wiener–Hopf factorization.
2. Divide Sx,s(s)eαs by {S_x^{-}(s)} and write out the result as a partial fraction expansion.
3. Select only those terms in this expansion having poles in the LHP. Call these terms H(s).
4. Divide H(s) by S_x^{+}(s). The result is the desired filter transfer function G(s)

FIR Wiener filter for discrete series

Block diagram view of the FIR Wiener filter for discrete series. An input signal w[n] is convolved with the Wiener filter g[n] and the result is compared to a reference signal s[n] to obtain the filtering error e[n].
In order to derive the coefficients of the Wiener filter, we consider a signal w[n] being fed to a Wiener filter of order N and with coefficients {ai}, i=0,\ldots, N. The output of the filter is denoted x[n] which is given by the expression
x[n] = \sum_{i=0}^N a_i w[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:
a_i = \arg \min ~E\{e^2[n]\}
where E\{\cdot\} denote the expectation operator. In the general case, the coefficients ai may be complex and may be derived for the case where w[n] and s[n] are complex as well. For simplicity, we will only consider the case where all these quantities are real. The mean square error may be rewritten as:
\begin{array}{rcl}
E\{e^2[n]\} &=& E\{(x[n]-s[n])^2\} \\
&=& E\{x^2[n]\} + E\{s^2[n]\} - 2E\{x[n]s[n]\}\\
&=& E\{\big( \sum_{i=0}^N a_i w[n-i] \big)^2\} + E\{s^2[n]\} -2 E\{  \sum_{i=0}^N a_i w[n-i]s[n]\}
\end{array}
To find the vector [a_0,\ldots,a_N] which minimizes the expression above, let us now calculate its derivative w.r.t ai
\begin{array}{rcl}
\frac{\partial}{\partial a_i} E\{e^2[n]\} &=& 2E\{ \big( \sum_{j=0}^N a_j w[n-j] \big) w[n-i] \} - 2E\{s[n]w[n-i]\} \quad i=0, \ldots ,N \\
&=& 2 \sum_{j=0}^N E\{w[n-j]w[n-i]\} a_j  - 2 E\{ w[n-i]s[n] \}
\end{array}
If we suppose that w[n] and s[n] are each stationary and jointly stationary, we can introduce the following sequences R_w[m] ~\textit{ and }~ R_{ws}[m] known respectively as the autocorrelation of w[n] and the cross-correlation between w[n] and s[n] defined as follows
\begin{align}
R_w[m] =& E\{w[n]w[n+m]\} \\
R_{ws}[m] =& E\{w[n]s[n+m]\}
\end{align}
The derivative of the MSE may therefore be rewritten as (notice that Rws[ − i] = Rsw[i])
\frac{\partial}{\partial a_i} E\{e^2[n]\} = 2 \sum_{j=0}^{N} R_w[j-i] a_j - 2 R_{sw}[i] \quad i=0, \ldots ,N
Letting the derivative be equal to zero, we obtain
\sum_{j=0}^N R_w[j-i] a_j = R_{sw}[i] \quad i=0, \ldots ,N
which can be rewritten in matrix form
\underbrace{
\begin{bmatrix}
R_w[0] & R_w[1] & \cdots & R_w[N] \\
R_w[1] & R_w[0] & \cdots & R_w[N-1] \\
\vdots & \vdots & \ddots & \vdots \\
R_w[N] & R_w[N-1] & \cdots & R_w[0]
\end{bmatrix}
}_{T}
\underbrace{
\begin{bmatrix}
a_0 \\ a_1 \\ \vdots \\ a_N
\end{bmatrix}
}_{A}
=
\underbrace{
\begin{bmatrix}
R_{sw}[0] \\R_{sw}[1]  \\ \vdots \\ R_{sw}[N]
\end{bmatrix}
}_{V}
or
T * A = V
These equations are known as the Wiener-Hopf equations. The matrix T appearing in the equation is a symmetric Toeplitz matrix. These matrices are known to be positive definite and therefore non-singular yielding a unique solution to the determination of the Wiener filter coefficient vector A: A = T − 1V. Furthermore, there exists an efficient algorithm to solve such Wiener-Hopf equations known as the Levinson-Durbin algorithm so an explicit inversion of T is not required.
The FIR Wiener filter is related to the Least mean squares filter, but minimizing its error criterion does not rely on cross-correlations or auto-correlations. Its solution converges to the Wiener filter solution.

No comments:

Post a Comment