其他分享
首页 > 其他分享> > 理解导向滤波原理

理解导向滤波原理

作者:互联网

一、性质

引导滤波的特性是:

当引导图比较陡峭时,输出图像应随着引导图变化而变化,当引导图较为缓和时,输出图像应接近输入图像。

二、原理

引导滤波的思想是:

认为输出图像与引导图像在 小范围 内是 线性关系 ,将起伏不定的连续像素看成一段段的小线性函数,每一小段的公式如下:

q i = a k I i + b k q_{i}=a_{k}I_{i}+b_{k} qi​=ak​Ii​+bk​

其中i是像素坐标,I为引导图像素值,q为线性函数拟合的输出图像,ak、bk是线性函数的两个参数,我们将这个线性函数的适用范围记为k。

也就是说,输出图像要跟着导向图的趋势走,在一个小范围内,如果导向图是平坦的,那么a趋近于0,输出图像q应等于b,如果导向图较为陡峭,a很大,则输出图像q应接近a*I

(当导向图为原图时,a*I相当于原图乘以一个系数,当a=1、b=0,那直接就是原图)
在这里插入图片描述

三、损失函数

由上一节的线性公式得知,如果变化是陡峭的,斜率是大的,那系数a可以很容易通过初一的知识得到:

a = Δ q Δ I a=\frac{\Delta q }{\Delta I } a=ΔIΔq​

但如果变化是平坦的,b又该如何得到呢?这时候就该原图登场了,由第一节的概念可知,平坦时输出图像应接近原图,因此可写作下面的式子:

q i − p i = n i q_{i}-p_{i}=n_{i} qi​−pi​=ni​

这里n代表原图与输出的误差。

为了成功还原原图,我们需要最小化误差n,因此常用的损失函数如下(令E最小):

E ( a k , b k ) = ∑ i ∈ w k ( q i − p i ) 2 E(a_{k},b_{k})=\sum_{i\in w_{k}}^{}(q_{i}-p_{i})^{2} E(ak​,bk​)=∑i∈wk​​(qi​−pi​)2

这里的wk代表滤波窗口的范围,将q展开:

E ( a k , b k ) = ∑ i ∈ w k ( a k I i + b k − p i ) 2 E(a_{k},b_{k})=\sum_{i\in w_{k}}^{}(a_{k}I_{i}+b_{k}-p_{i})^{2} E(ak​,bk​)=∑i∈wk​​(ak​Ii​+bk​−pi​)2

分别令E对a和b求导,得到a与b的解之后,我们的线性函数能够较为完美的拟合原图,以至于当引导图为原图时,输出完全就是原图。如果最终的结果是这样,那就很难做到保边缘滤波了。因为已经完全没有了滤波。

通常,我们还是希望能够控制这种拟合的程度,在机器学习中,为了防止过拟合,需要在损失函数中引入正则化,在这里也可以同样操作:

E ( a k , b k ) = ∑ i ∈ w k ( ( a k I i + b k − p i ) + ϵ a k 2 ) 2 E(a_{k},b_{k})=\sum_{i\in w_{k}}^{}((a_{k}I_{i}+b_{k}-p_{i})+\epsilon a_{k}^{2})^{2} E(ak​,bk​)=∑i∈wk​​((ak​Ii​+bk​−pi​)+ϵak2​)2

其中 ϵ \epsilon ϵ叫做正则化系数,可以调节拟合程度,当取值为0时,平坦区域就更接近原图。
用自变量前面的参数来防止过拟合的原因,大体可以解释如下:

拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,专业一点的说法是『抗扰动能力强』。
https://blog.csdn.net/jinping_shi/article/details/52433975
不懂就记住好了。。

对加入了正则化项的公式求ak、bk的偏导,令导数为0,可求得:

b k = p k ˉ − a k I k ˉ b_{k}=\bar{p_{k}}-a_{k}\bar{I_{k}} bk​=pk​ˉ​−ak​Ik​ˉ​

a k = p k I k ‾ − p k ‾ I k ‾ σ 2 + ϵ a_{k}=\frac{\overline{p_{k}I_{k}}-\overline{p_{k}}\overline{I_{k}}}{\sigma ^{2}+\epsilon } ak​=σ2+ϵpk​Ik​​−pk​​Ik​​​

公式中出现了均值和方差,这都是在求导过程中凑出来的。

至此,输出图像可直接由 q i = a k I i + b k q_{i}=a_{k}I_{i}+b_{k} qi​=ak​Ii​+bk​算出。

四、保边缘滤波

当引导图为原图时,导向滤波是一个很好的保边缘滤波器,怎么理解呢?要从ak和bk的公式说起。

根据第三节最后的公式,我们令Ik等于pk,可得:

a k = p k 2 ‾ − p k ‾ 2 σ 2 + ϵ = σ 2 σ 2 + ϵ a_{k}=\frac{\overline{p_{k}^{2}} - \overline{p_{k}}^{2}}{\sigma ^{2}+\epsilon } =\frac{\sigma ^{2}}{\sigma ^{2}+\epsilon } ak​=σ2+ϵpk2​​−pk​​2​=σ2+ϵσ2​

b k = ( 1 − a k ) p k ‾ b_{k}=(1-a_{k})\overline{p_{k}} bk​=(1−ak​)pk​​

请出关键公式(I已经替换为p):

q i = a k p i + b k q_{i}=a_{k}p_{i}+b_{k} qi​=ak​pi​+bk​

在图像的边缘处,方差较大,ak趋于1,bk趋于0,输出图像等于输入图像,实现保边缘

在图像的平坦/纹理处,方差较小,ak较小,输出更接近bk,而bk趋于图像均值 p k ‾ \overline{p_{k}} pk​​,实现均值滤波

滤波的程度则由 ϵ \epsilon ϵ控制,其为0时,输出永远等于输入图像,与第三节的结论相同。

标签:原图,导向,ak,滤波,bk,输出,图像,原理
来源: https://blog.csdn.net/sinat_29018995/article/details/113956560