双边滤波(Bilateral filter)

双边滤波器(Bilateral filter)是一种可以保边去噪的滤波器。可以滤除图像数据中的噪声,且还会保留住图像的边缘、纹理等(因噪声是高频信号,边缘、纹理也是高频信息,高斯滤波会在滤除噪声的同时使得边缘模糊)。那这么优秀的一个滤波器,他到底是个什么呢,其实,它和我们普通的高斯滤波器一样,也是使用一个卷积核(模板矩阵),叠加到待处理像素点上,使用对应邻域像素点的加权求和来作为新的输出像素点的值一种方法,简单来说,双边滤波和高斯滤波一样,不同只在于模板矩阵的不同。

双边滤波器的模板系数矩阵由高斯模板矩阵点乘(元素级相乘)值域系数获得。可以与其相比较的两个滤波器是:高斯低通滤波器和α-截尾均值滤波器(去掉百分率为α的最小值和最大之后剩下像素的均值作为滤波器)。


双边滤波器中,输出像素的值依赖于邻域像素的值的加权组合,


权重系数w(i,j,k,l)取决于定义域核


和值域核

的乘积


同时考虑了空间域与值域的差别,而Gaussian Filter和α均值滤波分别只考虑了空间域和值域差别。


原理:在平坦区域,像素差值较小,对应值域权重r接近于1,此时空域权重d起主要作用,相当于直接对此区域进行高斯模糊,在边缘区域,像素差值较大,值域系数下降,导致此处核函数下降(因w=r*d),当前像素受到的影响就越小,从而保持了边缘的细节信息。

思想:抑制与中心像素值差异较大的像素(即使你们空域相距较近)。 

计算方法:对每一个邻域像素点,计算出其对应的空域系数和值域系数,相乘得到总的系数,然后进行加权求和。      


Opencv双边滤波函数:CV_EXPORTS_Wvoid bilateralFilter(InputArraysrc,OutputArraydst,intd,doublesigmaColor,doublesigmaSpace,

intborderType =BORDER_DEFAULT );


值域和空域的两个方差sigma可以简单的设置为相等,小于10,无太大效果,大于150效果太强,像卡通片似的。


滤波器尺寸d:大于5将较慢(5 forreal-time),d=9for off-lineapplicationsd 是像素邻域“直径”。


Sigma_color较大,则在邻域中的像素值相差较大的像素点也会用来平均。

Sigma_space较大,则虽然离得较远,但是,只要值相近,就会互相影响。

将sigma_sapce设置较大,sigma_color设置较小,可获得较好的效果(椒盐噪声)。


双边滤波的内在想法是:在图像的值域(range)上做传统滤波器在空域(domain)上做的工作。空域滤波对空间上邻近的点进行加权平均,加权系数随着距离的增加而减少;值域滤波则是对像素值相近的点进行加权平均,加权系数随着值差的增大而减少。





相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页