0

我想在 matlab 中绘制图像的傅里叶变换的幅度和相位。我逐行实现了我在此链接中阅读的教程,但对于数量级,只绘制了一个白屏。

我的代码:

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')

我的原始图像是: 在此处输入图像描述

问题出在哪里?

4

1 回答 1

2

这里有两件事。

  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;
于 2013-05-14T18:06:46.070 回答