Wiener Filter for Image Noise Reduction (Image Denoising) I'm trying to get my head round the operation of the Wiener filter for the purpose of image noise reduction. In my case I'll have used another noise reduction filter first and will then use the result of this as an approximation of the noise characteristics for the Wiener filter.

Regarding information on the Wiener filter, I found the following Matlab code &amp; description useful:

http://www.mathworks.co.uk/help/toolbox/images/f11-12251.html#f11-14272 

and a few other good links such as 

http://blogs.mathworks.com/steve/2007/11/02/image-deblurring-wiener-filter/

So from a Matlab perspective I can see how to use the inbuilt Matlab function, but I'd like to gain a more fundamental understanding rather than just use the function call, yet at the same time I'd prefer to find something more digestible than the Wikipedia entry on Wiener filtering.

Anyone care to offer a brief explanation on Wiener filtering?
There is another Wikipedia entry on Wiener filtering more applicable to image processing.

To summarize (and convert to 2D), given a system:
$$
y(n,m) = h(n,m) * x(n,m)  + v(n,m)
$$
where 


$*$ denotes convolution, 
$x$ is the (unknown) true image,
$h$ is the impulse response of a linear, time-invariant filter,
$v$ is additive unknown noise independent of $x$, and
$y$ is the observed image.


We want to find a deconvolution filter $g$ so that we can estimate $x$ as follows:
$$
\hat{x}(n,m) = g(n,m) * y(n,m)
$$
where $\hat{x}$ is an estimate of $x$ that minimizes the mean square error.

In the frequency domain, the transfer function of $g$, $G$ is:
$$
G(\omega_1, \omega_2) = \frac{H^*(\omega_1, \omega_2)S(\omega_1, \omega_2)}{|H(\omega_1, \omega_2)|^2S(\omega_1, \omega_2) + N(\omega_1, \omega_2)}
$$
where


$G$ is the Fourier transform of $g$,  
$H$ is the Fourier transform of $h$,  
$S$ is the mean power spectral density of the input $x$, and  
$N$ is the mean power spectral density of the noise $v$.


The equation for $G$ can be re-written as:
$$
G(\omega_1, \omega_2) = \frac{1}{H(\omega_1, \omega_2)} 
\left[ \frac{|H(\omega_1, \omega_2)|^2}{H(\omega_1, \omega_2)|^2 + \frac{N(\omega_1, \omega_2)}{S(\omega_1, \omega_2)}}
\right]
$$
So the Wiener filter has the inverse filter for $H$, but also a frequency-dependent term that attenuates the gain based on the signal to noise ratio.