如何在Numpy中绘制FFT

Kur*_*ler 5 python matlab numpy image-processing

这似乎是一个非常简单的问题,但我找不到任何相关的文档.

我在Numpy有一个图像,我想要imshowFFT.

在Matlab中我可以做到

F = fft(myimg)
imshow(F)
Run Code Online (Sandbox Code Playgroud)

我不能在Numpy做同样的事情因为F很复杂.试图imshow(real(F))给我一个全黑的图像 - 我猜是因为在[0,1]而不是0..255.乘以255也无法解决问题.

关于如何获得我的情节的任何想法?

更新:

好的,natan指出我错误地简化了这个问题.请允许我回顾一下.我有一个尺寸为(200,30,30,3)的视频矩阵.200帧,30x30像素,3色通道.对于每个像素的每个颜色通道,我想在该系列中计算该像素的fft.这应该给我一个新的矩阵,即(200,30,30,3).对于每个像素,跨每个颜色通道,每个像素的200维暗时间傅里叶变换.然后,我应该能够看到例如由每个像素中的傅立叶变换的第一系数的值创建的图像.

请注意,matlab fft在第一个非单元维度上运行,所以F = fft(video)正在做我正在做的事情.

bla*_*bla 9

这是使用scipy的2D图像的示例:

from scipy import fftpack
import numpy as np
import pylab as py

# Take the fourier transform of the image.
F1 = fftpack.fft2(myimg)

# Now shift so that low spatial frequencies are in the center.
F2 = fftpack.fftshift( F1 )

# the 2D power spectrum is:
psd2D = np.abs( F2 )**2

# plot the power spectrum
py.figure(1)
py.clf()
py.imshow( psf2D )
py.show()
Run Code Online (Sandbox Code Playgroud)

对于1D跟踪,您可以在此处查看和示例...