June 10, 2004

Lab Contents

Deblurring using FFT



I used the Process -> Enhance contrast menu to make the pattern stand out a little more. This affects only the LUT - the following processing steps will not be affected.





This will be the 'point spread' function with which to blur the image, and then deblur it. This is not a realistic point spread function for microscopes, which might look more like a Gaussian shaped peak, and would be the image from a point source.



The first image will now be blurred by convolving it with the second image. Although this could be done in the spatial domain by making a convolution kernel and using the Process -> Convolve menu with a convolution kernel (14x14 array with 1's to match the black pixels in the dot image), convolution by large kernels is done more quickly in the frequency domain (using the FFT). Deconvolution (deblurring) must be done in the frequency domain.  In ImageJ, frequence domain math such as this is available using Process / FFT / FD Math...



In ImageJ, the steps work up to this point.  However, the resulting product image is not considered a frequency domain image by ImageJ, so we can go no further using these images.  The process can be done more directly using Process / FFT / FD Math. - see the green sections below.




The thin lines in the face have not disappeared.

  •  Show the face by enhancing the contrast
    • Click on the square (a) to restore to normal contrast if necessary. The thin lines will now be visible.
    • Move the top dot (b) to the left as shown to darken the face a bit more.


To make the blurred image in ImageJ, use Process / FFT / FD Math ...


To deblur the image, divide its FFT by the FFT4, the FFT of the point spread function.

The image has been restored exactly, because the point spread function used for deblurring was identical to the point spread function used for blurring, and there was no noise.

To deblur the blurry "result" image above in ImageJ, use FD math again:

I'm not sure why the image is inverted.  Fix with either Edit / Invert or Image / Look up Tables / Invert LUT.



Let's alter the point spread function by reducing the size of the dot slightly, and see the effect on the 'deblurred' image.

Choice 'a'

In ImageJ, just use Process / Binary / Erode, or Process / Binary / Dilate, then use Process / FFT / FD Math

where 'dot' is the now altered point spread function image.  The result is unrecognizable.  The point spread function was changed too much.

Choice 'b' 



This image is barely recognizable. The point spread function has to be known well for good deblurring. You might wish to experiment with other point spread functions that are less corrupted.



Evidently, the point spread function must be known very accurately.