理解导向滤波原理
作者:互联网
一、性质
引导滤波的特性是:
当引导图比较陡峭时,输出图像应随着引导图变化而变化,当引导图较为缓和时,输出图像应接近输入图像。
二、原理
引导滤波的思想是:
认为输出图像与引导图像在 小范围 内是 线性关系 ,将起伏不定的连续像素看成一段段的小线性函数,每一小段的公式如下:
其中i是像素坐标,I为引导图像素值,q为线性函数拟合的输出图像,ak、bk是线性函数的两个参数,我们将这个线性函数的适用范围记为k。
也就是说,输出图像要跟着导向图的趋势走,在一个小范围内,如果导向图是平坦的,那么a趋近于0,输出图像q应等于b,如果导向图较为陡峭,a很大,则输出图像q应接近a*I
(当导向图为原图时,a*I相当于原图乘以一个系数,当a=1、b=0,那直接就是原图)
三、损失函数
由上一节的线性公式得知,如果变化是陡峭的,斜率是大的,那系数a可以很容易通过初一的知识得到:
但如果变化是平坦的,b又该如何得到呢?这时候就该原图登场了,由第一节的概念可知,平坦时输出图像应接近原图,因此可写作下面的式子:
这里n代表原图与输出的误差。
为了成功还原原图,我们需要最小化误差n,因此常用的损失函数如下(令E最小):
这里的wk代表滤波窗口的范围,将q展开:
分别令E对a和b求导,得到a与b的解之后,我们的线性函数能够较为完美的拟合原图,以至于当引导图为原图时,输出完全就是原图。如果最终的结果是这样,那就很难做到保边缘滤波了。因为已经完全没有了滤波。
通常,我们还是希望能够控制这种拟合的程度,在机器学习中,为了防止过拟合,需要在损失函数中引入正则化,在这里也可以同样操作:
其中
ϵ
\epsilon
ϵ叫做正则化系数,可以调节拟合程度,当取值为0时,平坦区域就更接近原图。
用自变量前面的参数来防止过拟合的原因,大体可以解释如下:
拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,专业一点的说法是『抗扰动能力强』。
https://blog.csdn.net/jinping_shi/article/details/52433975
不懂就记住好了。。
对加入了正则化项的公式求ak、bk的偏导,令导数为0,可求得:
公式中出现了均值和方差,这都是在求导过程中凑出来的。
至此,输出图像可直接由 q i = a k I i + b k q_{i}=a_{k}I_{i}+b_{k} qi=akIi+bk算出。
四、保边缘滤波
当引导图为原图时,导向滤波是一个很好的保边缘滤波器,怎么理解呢?要从ak和bk的公式说起。
根据第三节最后的公式,我们令Ik等于pk,可得:
请出关键公式(I已经替换为p):
在图像的边缘处,方差较大,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