opencv双边滤波(双边滤波详解)

1、原理

因为高斯滤波器把距离设为权重,设计滤波器模板作为滤波系数,并且只考虑像素之间的空间位置关系,所以滤波结果丢失了边缘信息。

高斯滤波器的缺点如下图所示,平坦区域被正常滤波,图像的细节不变,但在突变的边缘,由于只使用距离来决定滤波的权重,所以边缘模糊。

由于基于高斯进一步优化并重复像素值的考虑,双边滤波器和一种非线性滤波也被引出,滤波效果对保留边缘是有效的。

为了理解双边滤波器的距离和像素差这两个影响因素,首先说明以下两个概念以帮助理解。

空间距离:从过滤器模板中心点到当前点的欧式距离。

灰度距离:当前点灰度与过滤器模板中心点之差的绝对值。

双边滤波器的核函数是空间域核和像素域核的综合结果:

1 )在图像的平坦区域中,像素值的变化小时,像素差分值接近0,对应像素范围的区域权重接近1。 此时,空间域权重主要作用,相当于进行高斯模糊。

2 )在图像的边缘区域中像素值发生较大变化时,像素差分变大,对应的像素范围的区域权重变大,无论距离远还是空间区域权重小,对像素区域权重进行相加后的系数都变大,保护边缘的信息。

双边滤波器的效果如下图所示,在突变的边缘使用了像素差权重,所以边缘经常残留。

双边滤波器的原理如下图所示。

2、测试实验

OpenCV函数原型:

cv _ exports _ wvoidbilateralfilter (

InputArray src,OutputArray dst,int d,

双sigma color,双sigma space,

int borderType=BORDER_DEFAULT;

InputArray src:输入图像必须为Mat类型,并且图像必须为8位或浮点单通道、三通道图像。

OutputArray dst:输出图像的大小和类型与原始图像的大小和类型相同。

int d:表示过滤中每个像素附近的直径范围。 如果该值不为正,函数将根据第五个参数sigmaSpace计算值。

双精度sigma颜色:颜色空间过滤器的sigma值。 该参数的值越大,值域空间的影响越大。

双精度sigma空间:坐标空间中过滤器的sigma值。 该值越大,更大的定义域空间影响结果。

intb ordertype=border_default :边界模式,其中有缺省的border _ default。

测试代码:

静态过滤器(int过滤器SZ,void * )。

{

bilateralfilter(img,img3,filterSz,filterSz * 2,filterSz/2 );

imshow (双边滤波器)、img3;

}

名称窗口(双边过滤器),1 );

createTrackbar (“内核值”、“双边过滤器”、gMedianBlurValue、40、OnBilateralFilter );

有机溶剂过滤器(gmedianblurvalue,0;

3、测试结果

4、参考文献

bilateralfilteringforgrayandcolorimages,C. Tomasi,R. Manduch

智能图像

双边滤波算法的原理与实现(1) )。

关于寻找教程网

本网站文章只是代表的观点,不代表本网站的立场,所有文章都是非盈利的、免费共享的。

本网站提供软件编程、网站开发技术、服务器运维、人工智能等IT技术文章。 很多程序员努力学习,希望我们能用科技改变世界。

[双边滤波法] http://www.zyiz.net/tech/detail-120403.html

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注