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.
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)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.
where
Hinv(u,v)= 1/H(u,v) if |H(u,v)| > threshold value = 0 otherwise
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 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.
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).
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


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.