高通滤波python
时间: 2023-08-04 12:08:04 浏览: 113
高通滤波是一种图像处理方法,可以通过去除图像中的低频成分来突出图像中的高频细节。在Python中,可以使用OpenCV和NumPy库来实现高通滤波。
以下是一个使用Python实现高通滤波的示例代码:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取图像
img = cv2.imread('image.jpg', 0)
# 傅里叶变换
dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT)
fshift = np.fft.fftshift(dft)
# 设置高通滤波器
rows, cols = img.shape
crow, ccol = int(rows/2), int(cols/2)
mask = np.ones((rows, cols, 2), np.uint8)
mask[crow-30:crow+30, ccol-30:ccol+30] = 0
# 掩膜图像和频谱图像乘积
f = fshift * mask
# 傅里叶逆变换
ishift = np.fft.ifftshift(f)
iimg = cv2.idft(ishift)
res = cv2.magnitude(iimg[:,:,0], iimg[:,:,1])
# 显示原始图像和高通滤波处理图像
plt.subplot(121), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.axis('off')
plt.subplot(122), plt.imshow(res, 'gray'), plt.title('High Pass Filter Image')
plt.axis('off')
plt.show()
```
在这个示例中,我们首先读取了一张灰度图像,然后进行傅里叶变换。接下来,我们创建了一个高通滤波器的掩膜,将中心区域设为0,其余区域设为1。然后,将掩膜应用于频谱图像,得到滤波后的频谱图像。最后,进行傅里叶逆变换,得到滤波后的图像,并显示原始图像和滤波后的图像。
希望这个示例能够帮助你理解如何使用Python实现高通滤波。
阅读全文