美文网首页
高斯滤波

高斯滤波

作者: 大龙10 | 来源:发表于2021-10-18 06:09 被阅读0次

    《OpenCV轻松入门:面向Python》读书笔记
    作者:李立宗
    出版社:电子工业出版社
    出版时间:2019-05

    第7章 图像平滑处理

    7.3 高斯滤波

      在进行均值滤波和方框滤波时,其邻域内每个像素的权重是相等的。在高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重的和。

    7.3.1 基本原理

      在高斯滤波中,卷积核中的值不再都是1。例如,一个3×3的卷积核可能如图7-20所示:


    图7-20 高斯滤波卷积核示例

    在图7-21中,针对最左侧的图像内第4行第3列位置上像素值为226的像素点进行高斯卷积,其运算规则为将该点邻域内的像素点按照不同的权重计算和。


    图7-21 高斯卷积示例

    在实际计算时,使用的卷积核如图7-22中的卷积核所示。


    图7-22 实际计算中的卷积核
    使用图7-22中的卷积核,针对第4行第3列位置上的像素值为226的像素点进行高斯滤波处理,计算方式为:

    在实际使用中,高斯滤波使用的可能是不同大小的卷积核。例如,图7-23中分别是3×3、5×5、7×7大小的卷积核。在高斯滤波中,核的宽度和高度可以不相同,但是它们都必须是奇数。

    • 每一种尺寸的卷积核都可以有多种不同形式的权重比例。
    • 在不同的资料中,卷积核有多种不同的表示方式。它们可能写在一个表格内,也可能写在一个矩阵内。
    • 在实际计算中,卷积核是归一化处理的,这种处理可以表示小数形式的卷积核,也可以表示为分数形式。严格来讲,使用没有进行归一化处理的卷积核进行滤波,得到的结果往往是错误的。

    7.3.2 函数语法

    在OpenCV中,实现高斯滤波的函数是cv2.GaussianBlur(),该函数的语法格式是:

    dst=cv2.GaussianBlur(src,ksize,sigmaX,sigmaY,borderType)

    式中:

    • dst是返回值,表示进行高斯滤波后得到的处理结果。
    • src是需要处理的图像,即原始图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F或者CV_64F中的一种。
    • ksize是滤波核的大小。滤波核大小是指在滤波处理过程中其邻域图像的高度和宽度。需要注意,滤波核的值必须是奇数。
    • sigmaX是卷积核在水平方向上(X轴方向)的标准差,其控制的是权重比例。

    7.3.3 程序示例

    【例7.6】对噪声图像进行高斯滤波,显示滤波的结果。

    import cv2
    o=cv2.imread("image\\lenaNoise.png")
    r=cv2.GaussianBlur(o,(5,5),0,0)
    cv2.imshow("original",o)
    cv2.imshow("result",r)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    7.3.4 结果

    图7-26 高斯滤波示例

    相关文章

      网友评论

          本文标题:高斯滤波

          本文链接:https://www.haomeiwen.com/subject/jtluoltx.html