之前转了一篇文章:http://blog.csdn.net/chenlufei_i/article/details/78892758
详细的讲解了一下双边滤波的原理以及公式,这里主要总结一下自己的通俗理解,所谓双边滤波,就是在均值或者说普通加权滤波(如高斯滤波)的基础上,通过距离权和颜色权俩种权值对图像进行带权平滑处理,即能够去除噪声,又能进行边缘保护。
而双边滤波的这个特性主要是因为他在平滑滤波时同时考虑了像素间的几何距离和色彩距离。
下面将详细具体讲述原因。
通俗的讲,对图像进行滤波就是一个加权平均的运算过程,滤波后图像中的每个像素点都是由其原图像中该点临域内多个像素点值的加权平均。不同的滤波器,最根本的差异就是权值不同。
双边滤波具有两个权重,分别与几何距离和色彩距离相关,它的一般表达式为:
式中,权重和邻域像素点
与中心像素点
之间的几何距离相关,权重
和邻域像素点
与中心像素点
之间的色彩距离相关。公式中上下xian
也就是说,随着与
之间几何距离和色彩距离的变化,像素点
的权重
和
随之变化。这样的一个滤波器是一个智能的可自动调节权重的滤波器。至于如何自动调节,就取决于权重函数
和
的具体表达式了。
最简单和常见的一种Bilteral Filter是两个权重函数均为高斯函数,即:
其中,||x-y||求的是两个值x,y之间的欧式距离。
采用高斯函数之后,当邻域像素点与中心像素点
的欧式距离比较大,或是两个像素值相差比较大时,该像素点的权重就比较小,导致该像素点对滤波后的像素点的影响较小。更进一步,每个滤波后像素点的值,受与他色彩相近并且距离较近的像素点的影响较大,而受其他临域像素点的影响较小,这样保护了图像中原像素点的色彩,滤掉了少数存在的“噪声点”,起到了平滑的作用,同时又保护了边缘。
举个例子,如下图所示:
(a)为图像中的一个边界,图中用高度代表该像素点的像素值。
(b)为求得(a)中右侧边缘上的一个像素点的权重(图中用高度代表权重的大小),可以看到,颜色越相近
值越大,距离越近
值越大,那么最终两个权重的积就如图中分布。
(c)对(a)图中的每一个像素点都进行双边滤波,结果如图(c)所示,可以看到滤波的结果即保护了边缘,同时平滑了图像。
再比如:
左图为原始的噪声图像;中间为高斯采样的权重;右图为Bilateral采样的权重。从图中可以看出Bilateral加入了相似程度分部以后可以将源图像左侧那些跟当前像素差值过大的点给滤去,这样就很好地保持了边缘。
也就是说,当远离边界时,即颜色十分相近,颜色权基本一样时,类似于高斯滤波,这样变可平滑处理图像。当处在边界时(所谓边界,就是颜色反差极大的地方),边界上的点互相颜色相近,会取极大的权值,而边界外的的点,颜色距离很远,权值取的很小(甚重可以忽略不计),这样就保护了边缘。