赞
踩
import cv2 import numpy as np from matplotlib import pyplot as plt img=cv2.imread('lena.jpg',0) img_float32=np.float32(img)#输入图像先转换成32格式 dft=cv2.dft(img_float32,flags=cv2.DFT_COMPLEX_OUTPUT) dft_shift=np.fft.fftshift(dft)#将低频的值拉到中心 rows,cols=img.shape#中心点位置 再做个掩码 我们需要低频部分,因为图像低频都在中心部分,所以我们用掩码,中心白,其他黑色 crow,ccol=int(rows/2),int(cols/2) #低通滤波 mask=np.zeros((rows,ccol,2),np.uint8) print(mask.shape) #创造一个60*60像素点大小的滤波器,也就是说中心点 +-30像素点 mask[crow-30:crow+30,ccol-30:ccol+30]=1 #IDFT fshift=mask*dft_shift #用掩码× f_shift=np.fft.ifftshift(fshift)#然后把图像进行还原到原来的位置 img_back=cv2.idft(f_shift)#进行逆操作 img_back=cv2.magnitude(img_back[:,:,0],img_back[:,:,1]) plt.subplot(1,2,1),plt.imshow(img,cmap='gray') plt.title('Imput Image'),plt.xticks([]),plt.yticks([]) plt.subplot(1,2,2),plt.imshow(img_back,cmap='gray') plt.title(' Result'),plt.xticks([]),plt.yticks([]) plt.show() #高通滤波器 mask=np.ones((rows,ccol,2),np.uint8) print(mask.shape) #创造一个60*60像素点大小的滤波器,也就是说中心点 +-30像素点 mask[crow-30:crow+30,ccol-30:ccol+30]=0 #IDFT fshift=mask*dft_shift #用掩码× f_shift=np.fft.ifftshift(fshift)#然后把图像进行还原到原来的位置 img_back=cv2.idft(f_shift)#进行逆操作 img_back=cv2.magnitude(img_back[:,:,0],img_back[:,:,1]) plt.subplot(1,2,1),plt.imshow(img,cmap='gray') plt.title('Imput Image'),plt.xticks([]),plt.yticks([]) plt.subplot(1,2,2),plt.imshow(img_back,cmap='gray') plt.title(' Result'),plt.xticks([]),plt.yticks([]) plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。