OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)

如果需要处理的原图及代码,请移步小编的GitHub地址

  传送门:请点击我

  如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice

  “平滑处理”(smoothing)也称“模糊处理”(bluring),是一项简单且使用频率很高的图像处理方法。平滑处理的用途有很多,最常见的是用来减少图像上的噪点或者失真。在涉及到降低图像分辨率时,平滑处理是非常好用的方法。

  图像滤波,就是在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可或缺的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。

  关于滤波,一种形象的比喻法是:我们可以把滤波器想象成一个包含加权系数的窗口,当使用这个滤波器平滑处理图像时,就把这个窗口放到图像之上,透过这个窗口来看我们得到的图像。而对滤波处理的要求有两个,一是不能损坏图像的轮廓及边缘等重要信息;二是使图像清晰视觉效果好。

  在学习这几种滤波之前,我们首先记住两句话:

1,滤波是掩膜(mask)和图像的卷积。

2,滤波过程分为:(1)计算掩膜   (2)卷积  ——掩膜上每一个位置的值和图像上对应位置的像素值的乘加运算。

   这里对几个滤波函数做一下笔记,下面这两个图呢,是盗的,主要是人家写的好。哈哈哈哈,侵删啊!

OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)

  具体模糊和滤波的关系如下图(https://www.zhihu.com/question/54918332/answer/142137732):

OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)

1,均值滤波(Mean Filtering)

  均值滤波(低通滤波)是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中序的周围八个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。

  简单来说,图片中一个方块区域 N*M 内,中心点的像素为全部点像素值的平均值。均值滤波就是对整张图片进行以上操作。

  我们可以看下图的矩阵进行理解:

OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)

   进而我们可以看下图(盗图,侵删https://blog.csdn.net/Eastmount/article/details/82216380),红色点的像素值为蓝色背景区域像素值之和除25。

OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)

   其中红色区域的像素值均值滤波处理过程为: ((197+25+106+156+159)+ (149+40+107+5+71)+ (163+198+226+223+156)+ (222+37+68+193+157)+ (42+72+250+41+75)) / 25 = 125.52

  其中5*5的矩阵称为核,针对原始图像内的像素点,采用核进行处理,得到结果图像。

OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)

   提取1/25 可以将核转换为如下形式:

OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)

   就是我们上面的公式。

1.1,均值滤波函数Blur

  Python调用OpenCV实现均值滤波的核心函数如下:

blur(src, ksize, dst=None, anchor=None, borderType=None)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygwyp.html