您的位置:首页 > 运维架构

用OpenCV的函数bilateralFilter做双边滤波~

2017-10-30 15:02 441 查看
本文转载自 http://opencv66.net/thread-30-1-1.html

前几帖子提到的均值滤波、中值滤波和高斯滤波,都属于各向同性滤波,它们对待噪声和图像的边缘信息都采取一样的态度,结果,噪声被磨平的同时,图像中具有重要地位的边缘、纹理和细节也同时被抹平了,这是我们所不希望看到的。为了解决这个问题,人们陆续提出了一些算法来把图像边缘和噪声区别对待,比如双边滤波和导向滤波,本文介绍如何使用opencv做图像的双边滤波。
关于双边滤波的原理,大家可以参考网页:http://blog.163.com/yuyang_tech/blog/static/21605008320130242441886/

OpenCV提供了函数bilateralFilter来进行双边滤波,函数原型如下:

C++: void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, int borderType=BORDER_DEFAULT )
参数意义如下:
src:输入图像
dst:输出图像
d:滤波邻域直径。如果这个值设为负数,那么这个值由参数sigmaColor计算出。
sigmaColor:滤波的色彩空间参数。这个值越大,代表滤波计算邻域内有更多的色彩权重。
sigmaSpace :滤波的距离空间参数。这个值越大,代表当颜色距离相同时,会有更多的点被影响到。如果参数d>0,则邻域大小由d指定,否则,d是sigmaSpace的一个比例结果。
示例代码如下:
代码请访问原帖 http://opencv66.net/thread-30-1-1.html 查看

代码请访问原帖 http://opencv66.net/thread-30-1-1.html 查看

代码请访问原帖 http://opencv66.net/thread-30-1-1.html 查看

运行结果截图如下:



从运行结果截图来看,高斯滤波的效果是不如双边滤波,高斯滤波的效果大家可以参看帖子http://opencv66.net/thread-29-1-1.html

本文转载自 http://opencv66.net/thread-30-1-1.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息