引导滤波

   引导滤波即需要引导图的滤波,其和双边滤波一样,是一种保边滤波算法。在引导滤波中使用的是局部线性模型,即函数上某一点与其附近点成线性关系。需要计算一个函数上某一点时,只要得到关于该点的线性解析式即可。


引导滤波_第1张图片

   所以若输入的图像是I,输出图像是q,那么输出图像在窗口内的像素值与输入图像窗口内的像素成线性关系:

qi=akIi+bk,iwk q i = a k I i + b k , ∀ i ∈ w k

   a 和 b 是当窗口中心位于 k 时该线性函数的不变系数,输入的图像I被称为引导图(不一定是待滤波图像本身,所以叫引导图),对上述公式求导可以看出,当输入图存在梯度的时候,输出图也存在梯度,如下所示:
q=aI ∇ q = a ∇ I

   p是输入图(即待滤波图像),q是p去除噪声或者纹理后的图像,如下所示:
qi=pini q i = p i − n i

   这里要让获得的q和p差距最小,以求出线性系数,即让下式:
E(ak,bk)=iwk((akIi+bkpi)2+ϵa2k) E ( a k , b k ) = ∑ i ∈ w k ( ( a k I i + b k − p i ) 2 + ϵ a k 2 )

   ϵ ϵ 防止求得的a太大,也可以调节滤波效果,使用最小二乘法求解上式,可得:
ak=1|w|iwkIipiμkpkσ2k+ϵ a k = 1 | w | ∑ i ∈ w k I i p i − μ k p ¯ k σ k 2 + ϵ

bk=pkakμk b k = p ¯ k − a k μ k

   这里 μk μ k σ2k σ k 2 表示I在局部窗口 wk w k 中的均值和方差。 |ω|是窗口内的像素数, pk p k 表示p在窗口 wk w k 中的均值。
   一个像素被多个窗口包含,也就是每个像素由多个线性函数描述,当具体求某一点输出值,其为多个线性函数求值后的平均值:
qi=1|w|k:iwk(akIi+bk)=aiIi+bi q i = 1 | w | ∑ k : i ∈ w k ( a k I i + b k ) = a ¯ i I i + b ¯ i

   导引图像I与q之间存在线性关系,这样设定可以使导引图像提供的信息主要用于指示哪些是边缘。若I = p时,当 ϵ=0, ϵ = 0 , 则a=1,b=0使得上式E最小,此时输入等于输出,当 ϵ>0 ϵ > 0 ,在像素区域变化小的区域,a近似为0,b近似为 pk p ¯ k ,相当于做了一个加权滤波;在像素变化大的区域,a近似为1,b近似为0,这时输入近似为输出,滤波效果很弱,有助于保持边缘。引导滤波的流程如下:


引导滤波_第2张图片

参考:
1.https://blog.csdn.net/piaoxuezhong/article/details/78372787
2.https://blog.csdn.net/LG1259156776/article/details/51815825
3.https://blog.csdn.net/szfhy/article/details/50830586

你可能感兴趣的:(图像处理)