opencv——滤波函数如何选取

在进行图像预处理的时候,作为开始学习图像处理的小编,总是很懵逼到底要用哪个滤波函数呢。小编这里结合自身学习和网上的一些资料,给出下面的小总结。

一:模糊函数blur

参数说明

-参数InputArray表示输入图像Mat对象

-参数OutputArray表示模糊之后输出Mat对象

-参数Size表示卷积核大小,此参数决定模糊程度,Size(x, y)其中x, y取值越大表现模糊程度越深,而且X与Y的值为奇数。

-参数Point表示锚定的位置,也就是卷积核替换重叠像素中的哪个位置。此参数一般使用Point(-1,-1)表示使用卷积核的中心位置。

-最后一个参数表示对边缘的处理方法,一般默认4表示默认处理方法

应用场景:

通过blur函数一般来去除噪声,可以在图像边缘提取、特征提取之前对图像进行大小为3x3的模糊以此来达到去掉干扰和噪声目的。

二:高斯模糊函数GaussianBlur

参数说明

-参数InputArray表示输入图像Mat对象

-参数OutputArray表示模糊之后输出Mat对象

-参数Size表示卷积核大小,此参数决定模糊程度,Size(x, y)其中x, y取值越大表现模糊程度越深,而且X与Y的值为奇数。

-参数SigmaX表示高斯方程中X方向的标准方差

-参数SigmaY表示高斯方程中X方向的标准方差

-最后一个参数表示对边缘的处理方法,一般默认4表示默认处理方法

其中Size大小表示高斯卷积核、必须是奇数而且必须是正数、SigmaX在当Size大小不为零的时候直接从Size大小计算、SigmaY在SigmaX不为零的时候从X计算、SigmaX为零的时候从Size大小中计算。

应用场景:

高斯模糊的应用场景一般作为退化函数使用,可以去除图像噪声,Canny边缘提取的第一步就是高斯模糊,以此来消除噪声干扰,用高斯模糊去噪对于随机噪声效果明显。

三:中值滤波函数-medianBlur

参数说明:

-参数InputArray表示输入图像Mat对象

-参数OutputArray表示模糊之后输出Mat对象

-参数ksize表示卷积核大小,必须是正数而且必须是大于1,如:3、5、7等。

共有三个参数、其中第一个表示输入图像Mat对象,第二个表示滤波结果输出Mat对象、第三个参数则表示卷积核的大小。

应用场景:

中值滤波对椒盐噪声的图像有比较好的效果,可以去除图像中像素极大或者极小值。

四:双边模糊函数-bilateralFilter

参数说明:

-参数InputArray表示输入图像Mat对象

-参数OutputArray表示模糊之后输出Mat对象

-参数d表示双边滤波时候中心到周围像素距离

-参数sigmaColor表示高斯核中颜色值标准方差

-参数sigmaSpace表示高斯核中空间的标准方差

-参数borderType表示边缘的处理方法

一共六个参数,其中如果参数d没有申明的话或者是负数的话就从sigmaSpace中计算得到即可。常见的d取值为15或者20如果过大会导致运算时间较长。

应用场景:

高斯双边滤波经常被用来实现图像美化类APP用来做高斯磨皮核心算法,然后基于SOBEL算子进行叠加处理,通过高斯模糊得到最终结果。效果异常明显,是一个不错的选择。

五:滤波函数filter2D

参数说明

-参数InputArray表示输入图像Mat对象

-参数OutputArray表示模糊之后输出Mat对象

-参数d表输出图像的深度,-1表示跟输入图像深度相同。

-参数kernel表示自定义的Mat对象,卷积核或者算子。

-参数Point表示锚定的位置,Point(-1, -1)表示默认为卷积核中心位置。

-参数delta表示卷积处理之后的每个像素值是否加上常量delta,默认0.0表示不加上额外值到处理后的像素值上。

-参数borderType表示边缘像素的处理方式,默认为BORDER_DEFAULT。

通过定义不同的卷积核、filter2D函数可以实现卷积的各种功能、包括模糊、锐化、边缘提取等。

应用场景:

filter2D是OpenCV中相当灵活的滤波函数、灵活使用可以适合多个不同应用场景,实现多种功能包括模糊、锐化、边缘提取、图像增强等等。

长按下图关注share space公众号,有超多资料和实用教程等你来,你的每次点赞和转发都是对我们最大的支持。

展开阅读全文
©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值