Python中二维快速傅里叶变换----基于numpy库

时间:2024-05-21 16:31:25

二维傅里叶变换在图像处理中经常用到,为了更好理解python中的fft2。这里我们生成了二维正弦条纹,然后进行快速傅里叶变换。


#Python版本:Python3.5

#用到的库:numpy,matploylib

#作者:James_Ray_Murphy

# -*- coding: -utf-8 -*-


import numpy as np
import matplotlib.pyplot as plt


N = 256
x = np.linspace(-10, 10, N)
y = np.linspace(-10, 10, N)


X,Y = np.meshgrid(x,y)


Z = 2 * np.cos(0.2 * np.pi * X)     #光栅


Z_fft2 = np.fft.fft2(Z)


Z_fft2_sh = abs(np.fft.fftshift(Z_fft2))




plt.subplot(221)
plt.imshow(Z)
plt.title('Original')


plt.subplot(222)
plt.imshow(abs(Z_fft2))
plt.title('fft2')


plt.subplot(223)
plt.imshow(Z_fft2_sh)
plt.title('fft2-shift')


plt.subplot(224)
plt.plot(Z_fft2_sh[128,:])
plt.title('x = 128')


plt.show()

效果图如下:

Python中二维快速傅里叶变换----基于numpy库