2013-05-14 48 views
0

我想绘制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

问题出在哪里?

回答

2

这里有两件事。用于2D FFT

  1. 输入图像应该是强度图像(或灰度),这是在mxnx1大小,而不是RGB,其大小为mxnx3。

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

为RGB图像转换为灰度使用rgb2gray

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

为了解决后者重新调整你的图像或使用imagescaxis equal结合以保持规模:

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