MATLAB: FFT of an image

image processingMATLAB

Hi,
I need to apply the following conditions to remove blur in an image?
1.Load the image
2.compute fft of an image
3.shift frequency components to the center
4.define low pass filter
5.shift the filter to the center
6.Apply filter to the shifted fourier transformed image
7.inverse shift
8.inverse fourier transform
My code look like this:
i = imread('L3S3T1.jpg');
i = double(rgb2gray(i));
I = fftshift(fft(double(i)));
What does fftshift will do exactly?
Does it shift the frequency components to center
I strucked with defining a low pass
How to define it?
How to move it to the center
Thanks in advance

Best Answer

Perhaps discuss with your professor some about how Fourier filtering works. He can tell you that to "remove blur in an image" you do not want to apply low pass filtering. Once you blurred it, the high frequencies are gone, or at least altered/attenuated. You can try to extract the high frequencies that remain, say for example by convolving with a kernel that has negative weights. This is the same as subtracting a blurred image from the original and called (confusingly) "unsharp masking" But your code or algorithm just blurs your already blurred image - that won't remove blur. Doing unsharp masking by blurring an already blurred image, and then subtracting it from the first blurred image will show you what high frequencies remain in the blurred image, but it will not restore them and will not get you any closer to your original image before it was blurred. Like I said before, I think you're trying to do your own version of a Wiener filter but not going about it right.
Related Question