【问题标题】:Fourier transform of image in magnitude not working图像的傅里叶变换幅度不起作用
【发布时间】:2013-05-14 17:32:49
【问题描述】:

我想在 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')

我的原始图像是:

问题出在哪里?

【问题讨论】:

    标签: matlab image-processing fft


    【解决方案1】:

    这里有两件事。

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

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

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

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

    要解决后重新缩放您的图像或使用imagesc 结合axis equal 来保持比例:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      • 1970-01-01
      相关资源
      最近更新 更多