2.1 图像模糊
2.1.1 均值滤波
均值滤波是指通过将图像与低通滤波器内核进行卷积来实现图像模糊,这对于消除噪声很有用。它实际上从图像中消除了高频部分(如噪声、边缘)。因此,在此操作中会使边缘有些模糊(利用一些模糊技术也可以不模糊边缘)。
一个5像素×5像素的核模板其实就是一个均值滤波器。OpenCV有一个专门的均值滤波模板供用户使用,即归一化卷积模板。所有的滤波模板都是使用卷积框覆盖区域的所有像素点与模板相乘后得到的值作为中心像素的值的。
OpenCV可以使用cv2.blur(img,(3,3))函数实现图像的均值滤波。
第一个参数img是图像对象,第二个参数(3,3)是滤波核(滤波核为奇数)。
2.1.2 中值滤波
中值滤波模板使用卷积框中像素的中值代替中心值,从而达到去噪声的目的。这个模板一般用于去除椒盐噪声。均值滤波用计算得到的一个新值来取代中心像素的值,而中值滤波用中心像素周围(也可以是它本身)的值来取代中心像素的值,卷积核的大小也是奇数。
OpenCV可以使用cv2.medianBlur(img,3)函数实现图像的中值滤波。
第一个参数 img 是图像对象,第二个参数是滤波核(3 为简写方式,与均值滤波中(3,3)表达的含义相同)。
2.1.3 高斯滤波
现在把卷积模板中的值换一下,不全是1,换成一组符合高斯分布的数值放在模板中。例如,中间的数值最大,越靠近两边数值越小,构造一个小的高斯包,可以使用函数cv2.GaussianBlur()。
对于高斯模板,需要制定的是高斯核的高和宽(奇数),以及沿 x 方向与 y 方向的标准差(如果只给出x,则y=x;如果将x和y都设置为0,那么函数会自己计算)。高斯核可以有效地去除图像的高斯噪声。
OpenCV可以使用cv2.GaussianBlur(source,(3,3),0)函数实现图像的高斯滤波。
第一个参数source为图像对象,第二个参数(3,3)为滤波核,第三个参数0为高斯核标准差。
2.1.4 案例实现
1.实验目标
(1)掌握使用OpenCV实现图像模糊的基本原理。
(2)掌握使用OpenCV实现图像模糊的三种方法。
2.实验环境
实验环境如表2.1所示。
表2.1 实验环境
3.实验步骤
创建源码文件test01_blur.py,实验目录结构如图2.1所示。
图2.1 实验目录结构
按照如下步骤编写代码。
步骤一:导入模块
步骤二:均值滤波
步骤三:中值滤波
步骤四:高斯滤波
步骤五:运行实验代码
使用如下命令运行实验代码。
运行效果如图2.2~图2.4所示。
图2.2 均值滤波
图2.3 中值滤波
图2.4 高斯滤波