Inverse and Pseudoinverse Filtering



The Problem

Given a known image function, f(x,y), and a blurring function, h(x,y), we need to recover f(x,y) from the convolution g(x,y)=f(x,y)*h(x,y).

(Note: * is used to represent convolution and x is used to represent multiplication).


A Possible Solution: Inverse Filtering

In the frequency domain we have: G(u,v)=F(u,v) x H(u,v)

The novice solution to this problem is to filter by dividing the 2-dimensional fft of the blurred function by the reciprocal of H(u,v):
G(u,v)/H(u,v)=F(u,v) x H(u,v)/H(u,v) = F(u,v).

This is commonly reffered to as the inverse filtering method where 1/H(u,v) is the inverse filter.

Difficulties with Inverse Filtering

The first problem in this formulation is that 1/H(u,v) does not necessairily exist. If H(u,v)=0 or is close to zero, it may not be computationally possible to compute 1/H(u,v).

If there are few values of H(u,v) which are close to zero then the ideal inverse filter can be approximated with a stabilized version of 1/H(u,v) given by :

Fapprox(u,v)=G(u,v) x Hinv(u,v)
where
Hinv(u,v)= 1/H(u,v) if |H(u,v)| > threshold value = 0 otherwise

This works well if few elements of H have a magnitude below the threshold but if two many elements are lost, the frequency content of Fapprox will be much lower than F(u,v) and the image will appear distorted.

Here are some examples of how varying the threshold value effects the inverse filtering of an image:

This is the original image:

Image with a 31-Point horizontal blur.

Pseudoinverse filtered image
with 512 out of 65536 values of Hinv=0. Note the "ripples".

Pseudoinverse filtered image with 28682 out of 65536 values of Hinv=0. The image now appears to have horizontal "ghosts" but still provides more information than the blurred image.

Pseudoinverse filtered image
with 59648 out of 65536 values of Hinv=0.The image is no longer intelligible.



More Difficulties with Inverse Filtering

Another problem with inverse filtering is that it dosn't perform well when used on noisy images.
We revise the "observed image" model by including an error term:

gn(x,y)=g(x,y)+n(x,y)

the corresponding 2 dimensional FFT representation would be:

Gn(u,v)=G(u,v) + N(u,v).

Inverse filtering Gn:

Fn(u,v)=Gn(u,v)/H(u,v)=F(u,v)+N(u,v)/H(u,v).

Since N(u,v) can remain large when H(u,v) gets small, it is possible that the noise will dominate Fn and consequently also fn. In such instances, it may be necessary to use a different type of filter implementation.

The following images compare the results of the restoration of a blurred image with the addition of normally distributed random noise with a mean of 0.0 and a variance of 1.

Blurred image with added noise

Image of noise was added to the image.

Results of pseudoinverse filtering with threshold value set to minimize frequency content losses.


Results using a Wiener filter implementation.


More detail of the original image can be determined from the processed image using the Wiener filter implementation. The Wiener filter attempts to minimize the error due to noise.



Topics

Refrences

Lords of Infinity Mailbox