傅里叶变换和逆傅里叶变换opencv


傅里叶变换


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sundanping_123/article/details/87969201