
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png',0)#原始图像
dft=cv2.dft(np.float32(img),flags=cv2.DFT_COMPLEX_OUTPUT)#傅里叶变换
dftShift=np.fft.fftshift(dft)
rows,cols=img.shape
crow,ccol=int(rows/2),int(cols/2)#计算中心位置坐标
mask = np.zeros((rows,cols,2),np.uint8)
mask[crow-30:crow+30, ccol-30:ccol+30]=1#低通滤波
fShift=dftShift*mask
ishift=np.fft.ifftshift(fShift)
iImg=cv2.idft(ishift)#逆傅里叶变换
iImg=cv2.magnitude(iImg[:,:,0],iImg[:,:,1])#幅度值调整到[0,255]灰度空间内
plt.subplot(121)
plt.imshow(img,cmap='gray')
plt.title('original')
plt.axis('off')
plt.subplot(122)
plt.imshow(iImg,cmap='gray')
plt.title('iimg')
plt.axis('off')
plt.show()

算法:低通滤波将傅里叶变换结果图像中的高频分量值都替换为0,即屏蔽高频信号,只保留低频信号,实现低通滤波。低频信号对应图像内变化缓慢的灰度分量。低通滤波器使高频信号衰减而让低频信号通过,图像进行低通滤波后会变模糊。
return=cv2.dft(img,flags)
return=cv2.magnitude(x,y)
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!