《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()
网友评论