fftshift and ifftshif of an image

1 view (last 30 days)
Marco
Marco on 16 Jan 2013
HI, i have loaded and calculate the FFT of a RGB image and do the FFTshift to center the spectrum. My problem is that if I pass the return of fft to fftshift, fftshift mix up the chromatic planes (the 3rd dimension), so I have to run the fftshift function on every color plane, one for red, another for blue, and another for green. Specifically what I do is:
F=fft2(IMG_gray);
S(:,:,1)=fftshift(F(:,:,1));
S(:,:,2)=fftshift(F(:,:,2));
S(:,:,3)=fftshift(F(:,:,3));
Is there a function that do not mix up the color planes?

Accepted Answer

Matt J
Matt J on 16 Jan 2013
Edited: Matt J on 16 Jan 2013
What you're already doing seems fine. If the idea is to do things in a single statement, you could do
S=fftshift(fftshift(F,1),2);

More Answers (1)

Image Analyst
Image Analyst on 16 Jan 2013
If you're taking the FFT of a gray image (like the red channel = f(:,:,1)), as you're doing in:
F=fft2(IMG_gray);
then I don't see why F would have three color channels. Can you explain?
  2 Comments
Marco
Marco on 17 Jan 2013
don't care for the name, it was an old code that worked with gray images, i modified it to load an RGB image. so IMG_gray is an RGB image, despite of the name
Image Analyst
Image Analyst on 17 Jan 2013
When you were doing the modifying, you should have changed the name too, so it was less confusing. Keeping code maintainable and understandable is an important aspect of code development that should not be underestimated, at least in a business or professional environment.

Sign in to comment.

Categories

Find more on Image Processing Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!