Using the Fourier transform facilities in MatLab, (or GSL, or other favorite source 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.
Use this point-spread function to design a matched filter in the Fourier domain that will sharpen your blurred images. The Weiner filter approach is one method that can give good results, but it is not the only one, and it requires estimating additional parameters of the noise function. When you consider deblurring techniques, 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. As mentioned above, the Weiner filter is one method. The quality of your result depends largely on how you do this and what you decide is "close to zero". Whatever approach you take, I want you to manipulate the raw images and Fourier transforms and implement the filtering yourself. This means that using a prepackaged Weiner filter is not an acceptable approach (except possibly for purposes of evaluating your implementation).
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 ones in photoshop, gimp, or
other image processing softwares suites). You should be able to
do at least as well as that.
Back to vision course main page