傅立叶移位定理matlab

时间:2012-12-10 23:28:19

标签: image matlab 2d fft shift

我目前正在尝试理解2d傅里叶位移定理。

根据我到目前为止所学到的,图像空间中的平移导致相位差异,但不会导致频率空间的幅度。

我尝试用一​​个小例子来证明这一点,但它只适用于行中的移位而不适用于列。这是小演示(我只是在这里显示幅度图)

clear all
close all
Iin = zeros(128);
Iin(10:20,10:20)=1;
figure,imagesc(Iin)
Y = fft(Iin);
figure, imagesc(fftshift(log10(abs(Y))));

Iin = zeros(128);
Iin(10:20,20:30)=1;
figure,imagesc(Iin)
Y = fft(Iin);
figure, imagesc(fftshift(log10(abs(Y))));

Iin = zeros(128);
Iin(20:30,10:20)=1;
figure,imagesc(Iin)
Y = fft(Iin);
figure, imagesc(fftshift(log10(abs(Y))));

在我看来,所有3个等级的图都应该产生相同的结果。 谁能解释一下我在这里做错了什么?

非常感谢你的帮助,

最好的问候,

迷你

1 个答案:

答案 0 :(得分:3)

我认为你想使用fft2而不是fft。

fft2计算2d傅立叶变换,这就是你所说的你正在研究的东西。 fft只计算每行的傅立叶变换。

如果您只是在代码中用fft2代替fft,那么一切都应该有用。