生成高斯低通滤波器代码
时间: 2023-10-09 15:05:39 浏览: 165
以下是生成高斯低通滤波器的 Python 代码:
```python
import numpy as np
import cv2
def gaussian_kernel(size, sigma):
"""
生成高斯卷积核
:param size: 卷积核大小
:param sigma: 高斯分布的标准差
:return: 高斯卷积核
"""
kernel = np.zeros((size, size), dtype=np.float32)
center = size // 2
for i in range(size):
for j in range(size):
x, y = i - center, j - center
kernel[i, j] = np.exp(-(x ** 2 + y ** 2) / (2 * sigma ** 2))
kernel /= kernel.sum()
return kernel
# 生成高斯卷积核
kernel_size = 5
sigma = 1.5
gaussian_kernel = gaussian_kernel(kernel_size, sigma)
# 显示卷积核
print("Gaussian kernel: \n", gaussian_kernel)
# 读取图像并进行滤波
image = cv2.imread('your_image_path')
filtered_image = cv2.filter2D(image, -1, gaussian_kernel)
# 显示原图和滤波后的图像
cv2.imshow("Original Image", image)
cv2.imshow("Filtered Image", filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`gaussian_kernel` 函数用于生成高斯卷积核,`size` 参数表示卷积核的大小,`sigma` 参数表示高斯分布的标准差。在函数内部,通过两重循环遍历卷积核的每个元素,计算其对应的高斯分布值,并进行归一化处理。最后返回生成的卷积核。
在主函数中,我们通过调用 `gaussian_kernel` 函数生成高斯卷积核,并使用 OpenCV 的 `filter2D` 函数进行图像滤波。最后将原图和滤波后的图像显示出来。
阅读全文