傅里叶空间的翻译

时间:2017-03-24 20:45:01

标签: python numpy fft

我正在尝试为简单的正弦波图像制作动画。逻辑上,这可以通过傅立叶空间图像来实现,该傅里叶空间图像具有恰好1个实部(像素)的功率,并且逐渐改变像素的对应虚部(相位值)。下面的代码产生一个水平光栅,它逐渐向下移动。然而,转变很慢,一旦相位超过某个值,图像就不再具有动画效果。相组件的单位和范围是多少?我在这里缺少什么?

import numpy as np, matplotlib as mpimg

f = (np.zeros([33, 33]) + 0j) # blank Fourier image
f[14, 16] = (1 + 0j) # a single component with power

steps = range(16) # number of images to produce
for i in range(len(steps)):
    c = np.fft.ifft2(np.fft.ifftshift(f, axes=[0, 1])) # grating image (cartesian)
    mpimg.imsave('grating %02i.png' % i, c, cmap='gray') # save image
    f[14, 16] += complex(0, 1/16.0) # increment phase

1 个答案:

答案 0 :(得分:2)

相位分量不仅仅是虚部。相组分为atan2(Im,Re)。要线性移动图像,您的增量应该可以将此阶段修改为2 * pi / nsteps。这意味着它必须修改实部和虚部。