CSC 249/449 Computer Vision: Fourier Filtering Assignment

Using the Fourier transform facilities in MatLab, (or Vista if you prefer) attempt to deblur an image using frequency-domain techniques. More specifically, by defocusing the lens of a camera, take one or more blurred images. Then, without changing the focus or aperture of the camera, take a picture of a point source of light in order to find the point-spread function (psf) of your camera/lens system. It may take some imagination to do this so that the image is neither over- nor under-exposed, contains no background, and so that the "point" has no structure of its own (i.e. is much smaller than the blur). An alternative to using the blurred point image values directly, is to use them to determine the parameters of an analytic model of the point spread function. For example, you might model the psf of a defocused lens as a uniform disk and use the image to determine its diameter. The advantage of this is you avoid problems with image noise and background. The disadvantage is that there might be important details of the actual psf that are not captured by the parameteric model you are using.

Another thing that is sometimes done is to de-blur an image degraded by camera movement. For this, you need to find the image of some small bright spot, which has left a track of the motion of the camera and which therefore represents the point spread function. This path has to be extracted from the image and used in an image restoration algorithm. An easier version would be just to pan the camera a small amount, which would give you a "streak" PSF. This is approximately the one-dimensional version of the pillbox PSF that is the ideal defocus blur PSF mentioned above.

Use this point-spread function to design a matched filter in the Fourier domain that will sharpen your blurred images. Remember that dividing by zero or anything close to it will give a result consisting of noise. You will have to experiment to find out what "close to zero" is (can you predict it analytically??) A lot of what high frequency energy there is in ordinary images is due to pixel noise, and you need to avoid amplifying it. How to fill in the blank areas (near the zeros of the transformed point spread function) is up to you. The quality of your result depends largely on how you do this and what you decide is "close to zero".

Hand in copies of your original and restored images, a picture of the point spread function and its power spectrum, and a careful writeup of what you did. It might be interesting to compare your results with a generic "sharpening" algorithm (such as the one in xv). You should be able to do at least as well as that.


Section 4.4 in Sonka et al. (the text) has some information on image retoration that may be useful.

Back to vision course main page