用python实现图像的高通高斯滤波器
时间: 2023-07-12 15:24:23 浏览: 191
以下是使用Python实现高通高斯滤波器的示例代码。在此示例中,我们使用OpenCV库来读取和显示图像,并使用scipy库中的高斯函数和卷积函数来实现滤波器。
```python
import cv2
import numpy as np
from scipy import ndimage
# 读取图像
img = cv2.imread('image.jpg')
# 定义高斯核大小和标准差
kernel_size = 5
sigma = 1.5
# 创建高斯核
kernel = np.zeros((kernel_size, kernel_size))
for i in range(kernel_size):
for j in range(kernel_size):
kernel[i, j] = np.exp(-((i - kernel_size//2)**2 + (j - kernel_size//2)**2)/(2*sigma**2))
kernel /= kernel.sum()
# 对图像进行高斯滤波
img_smooth = ndimage.convolve(img.astype(np.float32), kernel)
# 高通滤波
img_highpass = img.astype(np.float32) - img_smooth
# 显示原图和处理后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Highpass Gaussian Filtered Image', img_highpass.astype(np.uint8))
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在此示例中,我们首先读取了一张图像,然后定义了高斯核的大小和标准差。接下来,我们使用两个for循环来创建高斯核,并使用scipy库中的convolve函数将其应用于图像。最后,我们计算高通滤波后的图像,并使用OpenCV库显示原始图像和处理后的图像。