import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png',0)#原始图像
f=np.fft.fft2(img)
fshift=np.fft.fftshift(f)#傅里叶变换
rows,cols=img.shape
crow,ccol=int(rows/2),int(cols/2)#计算中心位置坐标
fshift[crow-30:crow+30,ccol-30:ccol+30]=0#高通滤波
ishift=np.fft.ifftshift(fshift)#逆傅里叶变换
iimg=np.fft.ifft2(ishift)
iimg=np.abs(iimg)
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,即屏蔽低频信号,只保留高频信号,实现高通滤波。高通滤波器使低频信号衰减而让高频信号通过,将增强图像中尖锐细节,但是会导致图像对比度降低。高频信号对应图像内变化越来越快的灰度分量,是由灰度尖锐过渡造成的。