1.原理
公式如上,对高斯滤波进行了优化,前面部分是原来的高斯滤波,空间权重,离中心点越近,权重越大,越接近1,边缘权重越小,越接近0。
新增加的项,是从灰度值来做权重参考的,灰度值离中心权重值越大,权重越小,乘以一个趋于0的数字;当灰度值离中心权重值越大,乘以一个越接近于1的数字。
如下图所示:
上面的图,是从右往左看的,右边是输入图像,左边是输出图像。
第一行:
当图像在变化程度平缓的区域时,邻域中的像素值(RGB值)差距相差不大。此时wr无限接近于1,因此此时的双边就是普通的高斯滤波,达到对图像平滑的效果。
第二行:
当图像在变化程度剧烈的区域,比如在边缘区域时,邻域中的像素值(RGB值)差距相差很大。此时wr朝0值趋近,颜色差值越大,wr越逼近0,最终整个式子的值逼近于0。最终的结果是权值为0。因此在最终计算时,该处将不影响输出值。
实现的效果:
既可以滤波,又可以保边。
代码实现:
参考文章:
双边滤波原理与c++代码