傅里叶变换
import cv2
import numpy as np
import matplotlib.pyplot as plt
o=cv2.imread('image\\boat.bmp',0) #读入图片
dft=cv2.dft(np.float32(o),flags=cv2.DFT_COMPLEX_OUTPUT) #傅里叶变换,结果为复数
dshift=np.fft.fftshift(dft) #低频移到中心
result=20*np.log(cv2.magnitude(dshift[:,:,0],dshift[:,:,1])) #将复数转换到【0,255】
plt.subplot(121),plt.imshow(o,cmap='gray'),plt.title('original'),plt.axis('off')
plt.subplot(122),plt.imshow(result,cmap='gray'),plt.title('result'),plt.axis('off')
plt.show()
逆傅里叶变换
import cv2
import numpy as np
import matplotlib.pyplot as plt
o=cv2.imread('image\\lena256.bmp',0) #读入图片
dft=cv2.dft(np.float32(o),flags=cv2.DFT_COMPLEX_OUTPUT) #结果为复数
dshift=np.fft.fftshift(dft) #傅里叶变换
ishift=np.fft.ifftshift(dshift)
io=cv2.idft(ishift)
io=cv2.magnitude(io[:,:,0],io[:,:,1]) #逆傅里叶变换
plt.subplot(121),plt.imshow(o,cmap='gray'),plt.title('original'),plt.axis('off')
plt.subplot(122),plt.imshow(io,cmap='gray'),plt.title('result'),plt.axis('off')
plt.show()