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

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

本文详细介绍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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。