在《高斯滤波之FPGA实现》一文中,讲述了高斯滤波的原理。高斯滤波,是对整幅图像进行加权平均,认为越靠近的点关系越密切,越远离的点关系越疏远。这个假设在图像的边缘处变得不成立。如果在边缘处也用这种思路来进行滤波的话,即认为相邻相近,则得到的结果必然会模糊掉边缘,这是不合理的。这就涉及到另外一种滤波算法,双边滤波。
双边滤波:Bilateral Filter,属于非线性滤波。它同时考虑了空间邻近度与像素值相似度,可以达到保边去噪的效果。
双边滤波公式:
其中,g(i, j)为输出点,f(k, l)为输入点;(i, j), (k, l)分别指2个像素点的坐标;
S(i, j)指以(i, j)为中心的邻域范围;
w(i, j, k,l)为加权系数,取决于空域核和值域核的乘积。
其中,ws为空域核函数,wr为值域核函数。
(1)当图像在变化程度平缓的区域时,邻域中的像素值相近。此时,wr无限接近于1,ws起主要作用,即普通的高斯滤波,对图像起到平滑的作用。
(2)当图像在变化程度剧烈的区域(如:边缘)时,邻域中的像素值相差很大。此时,wr趋向于0,使得值域核函数的权重为0。因此在灰度值变化剧烈的区域,滤波结果不影响输出值。
所以,双边滤波空域达到保边去噪的效果。
效果图如下:
欢迎关注我的微信公众号:FPGA干货架