图像的傅里叶变换幅度不大

时间:2013-05-14 17:32:50

标签: matlab image-processing fft

我想在matlab中绘制图像傅立叶变换的幅度和相位。我逐行实现了我在link中读到的教程,但是对于幅度,只绘制了白色屏幕。

我的代码:

I=imread('16.jpg');
fftA = fft2(double(I));
figure, imshow(abs(fftshift(fftA)));
title('Image FFT2 Magnitude');
figure, imshow(angle(fftshift(fftA)),[-pi pi]);
title('Image   FFT2 Phase')

我的原始图片是: enter image description here

问题出在哪里?

1 个答案:

答案 0 :(得分:2)

这里有两件事。

  1. 2D FFT的输入图像应为强度图像(或灰度),其大小为mxnx1,而不是RGB,大小为mxnx3。

  2. 如果图像矩阵属于double类,则其强度预计在[0,1]范围内。大于1的值将显示为1(填充图颜色图的最高颜色)。

  3. 要将RGB图像转换为灰度,请使用rgb2gray

    Irgb  = imread('16.jpg');
    Igray = rgb2gray(Irgb);
    

    要解决后者重新缩放图片的问题,或使用imagesc结合axis equal来保持比例:

    figure;
    imagesc(abs(fftshift(fftA))); axis equal; axis tight;