📜  python 高斯滤波器 - Python (1)

📅  最后修改于: 2023-12-03 15:19:12.583000             🧑  作者: Mango

Python 高斯滤波器

简介

高斯滤波器是一种常用的图像处理滤波器,它能够去除图像中的噪声并平滑图像。它是基于高斯函数的离散卷积运算,使用一个高斯核对图像进行卷积,从而实现图像平滑的目的。

在 Python 中,使用 NumPy 库可以方便地实现高斯滤波器。

示例代码

以下代码展示了如何使用 NumPy 实现高斯滤波器。

import cv2
import numpy as np

def gaussian_kernel(size, sigma=1.0):
    """
    创建高斯核函数
    :param size: 核的大小
    :param sigma: 高斯分布的标准差
    :return: 卷积核
    """
    # 计算高斯分布的值
    gaussian = np.zeros((size, size))
    center = size // 2
    for i in range(size):
        for j in range(size):
            gaussian[i][j] = np.exp(-0.5 * ((i - center) ** 2 + (j - center) ** 2) / sigma ** 2)
    # 归一化
    gaussian /= np.sum(gaussian)
    return gaussian

def gaussian_filter(image, kernel_size=3, sigma=1.0):
    """
    对图像进行高斯滤波
    :param image: 输入图像
    :param kernel_size: 核的大小
    :param sigma: 高斯分布的标准差
    :return: 滤波后的图像
    """
    # 创建高斯核函数
    kernel = gaussian_kernel(kernel_size, sigma)
    # 对图像进行卷积
    filtered_image = cv2.filter2D(image, -1, kernel)
    return filtered_image
使用方法

以下代码展示了如何使用上述的高斯滤波器函数。

import cv2
import matplotlib.pyplot as plt
from gaussian_filter import gaussian_filter

# 读取图像
image = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE)

# 高斯滤波
filtered_image = gaussian_filter(image)

# 显示原图和滤波后的图像
plt.subplot(121), plt.imshow(image, cmap='gray'), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(filtered_image, cmap='gray'), plt.title('Filtered Image')
plt.xticks([]), plt.yticks([])
plt.show()
参考资料