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