Python OpenCV图像模糊处理:均值、高斯与双边滤波详解

方予
方予
发布时间:2026-10-14 | 5人浏览过
原创

本文详细介绍Python OpenCV中三种核心图像模糊处理技术:均值滤波、高斯滤波及高斯双边滤波。通过解析cv2.blur、cv2.GaussianBlur和cv2.bilateralFilter函数的参数机制与适用场景,帮助开发者理解不同滤波器在去噪与边缘保留方面的差异,并提供完整的代码实现示例。

在深度学习领域常见的卷积操作,实际上在OpenCV库中可以通过特定的图像处理函数来实现,这类操作通常被称为图像的模糊或滤波处理。

均值滤波

在OpenCV中实现均值滤波主要依赖cv2.blur(src, ksize)函数。该函数的具体参数定义如下:

  • src:代表输入的原始图像。
  • ksize:定义模糊核的尺寸大小。

其工作原理是计算内核覆盖区域内所有像素的平均值,并用该平均值替换中心位置的像素点。以3x3的标准化盒式过滤器为例,其结构如下:

  • 主要特征在于核内所有区域对结果的贡献率是相同的。
  • 应用场景:该方法在去除椒盐噪声方面表现较为有效。

# -*-coding:utf-8-*-
"""
File Name: image_deeplearning.py
Program IDE: PyCharm
Date: 2021/10/17
Create File By Author: Hong
"""
import cv2 as cv


def image_blur(image_path: str):
    """
    图像卷积操作:设置卷积核大小,步距
    :param image_path:
    :return:
    """
    img = cv.imread(image_path, cv.IMREAD_COLOR)
    cv.imshow('input', img)
    # 模糊操作(类似卷积),第二个参数ksize是设置模糊内核大小
    result = cv.blur(img, (5, 5))
    cv.imshow('result', result)

    cv.waitKey(0)
    cv.destroyAllWindows()


if __name__ == '__main__':
    path = 'images/2.png'
    image_blur(path)

处理效果展示如下:

高斯滤波

高斯滤波功能由cv2.GuassianBlur(img, ksize,sigmaX,sigmaY)函数提供。

参数说明:sigmaX和sigmaY分别对应X轴和Y轴方向的标准偏差。若仅指定了sigmaX,则sigmaY将自动与sigmaX保持一致;若两者均设为零,系统将根据内核大小自动计算标准偏差值。

  • 核心特征:核内各区域的贡献率与其距离中心的远近成正比,权重分布遵循高斯分布规律。
  • 主要作用:高斯模糊在消除图像中的高斯噪声方面具有显著效果。

def image_conv(image_path: str):
    """
    高斯模糊
    :param image_path:
    :return:
    """
    img = cv.imread(image_path, cv.IMREAD_COLOR)
    cv.imshow('img', img)
    # 高斯卷积(高斯滤波), 可以设置ksize,必须为奇数,不为0时,后面的步骤不起作用;也可以设置成(0,0),然后通过sigmaX和sigmaY计算标准偏差
    result = cv.GaussianBlur(img, (0, 0), 15)
    cv.imshow('result', result)

    cv.waitKey(0)
    cv.destroyAllWindows()


if __name__ == '__main__':
    path = 'images/2.png'
    image_conv(path)

处理效果展示如下:

高斯双边滤波

实现双边滤波(模糊)需调用cv2.bilateralFilter(img,d, sigmaColor, sigmaSpace)函数。

参数说明:d指定邻域直径;sigmaColor为空间高斯函数的标准差,该参数值越大,距离中心较远的像素影响越小。

sigmaSpace表示灰度值相似性高斯函数的标准差,该参数值越大,颜色相近像素的影响范围越广。

双边滤波属于一种非线性滤波方法,它综合考量了图像的空间邻近度与像素值的相似度。通过结合空间信息与灰度相似性,该方法在去噪的同时能够保留边缘信息,具备简单、非迭代及局部处理的优点。其保边去噪的能力源于滤波器由两部分构成:一部分由几何空间距离决定系数,另一部分由像素差值决定系数。

  • 主要特征:计算耗时相对较长。
  • 主要作用:在实施滤波去噪的同时,能够有效保留图像的边缘细节信息。

# 边缘保留滤波器——高斯双边模糊
def image_bifilter(image_path: str):
    """
    高斯双边模糊
    :param image_path: 图片文件
    :return: 无返回值
    """
    img = cv.imread(image_path, cv.IMREAD_COLOR)
    cv.imshow('input', img)
    # 第三个参数是设置色彩、第四个参数是设置图像坐标
    result = cv.bilateralFilter(img, 0, 50, 10)
    cv.imshow('result', result)

    cv.waitKey(0)
    cv.destroyAllWindows()


if __name__ == '__main__':
    path = 'images/2.png'
    image_bifilter(path)

处理效果展示如下:

以上就是关于Python OpenCV图像模糊处理的详细流程介绍,涉及更多Python图像模糊处理相关内容,欢迎查阅本站往期文章或继续关注后续更新,感谢支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表