FFT of an image

139 views (last 30 days)
Jim
Jim on 9 May 2012
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

Accepted Answer

Image Analyst
Image Analyst on 9 May 2012
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.
  2 Comments
Image Analyst
Image Analyst on 9 May 2012
You can do it with conv2() or imfilter().

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 9 May 2012
Using a low-pass filter on the frequency components will not do you any good at all. Either low-pass filter the image itself, or just zero the frequency components corresponding to high frequencies.
  2 Comments
Walter Roberson
Walter Roberson on 9 May 2012
What I said is that you do not apply the low-pass filter to the *frequency* components (that is, to the output of the fft)
But see IA's response about blur, which is better than mine (I'd been up far far too late in the night.)

Sign in to comment.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!