高斯低通滤波器python
时间: 2023-10-19 21:08:25 浏览: 271
可以使用python的scipy库中的signal模块来实现高斯低通滤波器,可以使用函数scipy.signal.gaussian()来生成一个高斯窗函数,利用函数scipy.signal.convolve2d()来进行卷积操作。具体实现可以参考代码如下:
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
# 生成高斯窗函数
def gaussian_kernel(size, sigma):
x, y = np.mgrid[-size:size+1, -size:size+1]
g = np.exp(-(x**2+y**2)/(2*sigma**2))
return g/g.sum()
# 加载图像
image = plt.imread('test.jpg')
# 防止颜色通道不一致
if len(image.shape) == 3 and image.shape[2] == 3:
image = image.mean(axis=2)
# 生成高斯低通滤波器
kernel = gaussian_kernel(5, 2)
# 进行卷积操作
image_blur = signal.convolve2d(image, kernel, mode='same', boundary='symm')
# 显示原图和滤波后的图像
plt.subplot(121)
plt.imshow(image, cmap='gray')
plt.axis('off')
plt.title('Original')
plt.subplot(122)
plt.imshow(image_blur, cmap='gray')
plt.axis('off')
plt.title('Gaussian Low-pass Filtered')
plt.show()
阅读全文