【发布时间】:2014-11-07 18:59:39
【问题描述】:
我想使用其fft 乘以 exp(-j*2*pi*x*F) 来移动图像(由 2D 矩阵表示),其中 x 是位移。我有:
input=peaks(200);
H=fftshift(fft2(fftshift(input)));
x=19;
H=H*exp(-1i*x*2*pi*F);
IF_image=fftshift(ifft2(fftshift(H)));
imshow(IF_image)
但是由于我的输入是二维数组,因此我在识别/表示 H[F] 中的 F 时遇到了麻烦。我怎么能这样做? 所需的输出将是我在同一帧中沿水平轴(x 个单位)移动的原始图像,因此它将从 x+1 开始。举个例子:
如果input=
1 2 3 4 5
6 7 8 9 0
x=2,我想要:
4 5 1 2 3
9 0 6 7 8
【问题讨论】:
-
只是说,使用
circshift不是更简单吗? -
是的。但原则上,这可以使用我感兴趣的所描述的方法来完成。 (:
-
@CeciliaGuerra - 我同意
circshift,但我假设您这样做是为了演示傅立叶变换的平移/移位属性。不管怎样,我已经写了一个答案。 -
circshift仅在您移动整数像素时有帮助
标签: image matlab image-processing fft ifft