ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

理解导向滤波原理

2021-02-23 21:01:07  阅读:402  来源: 互联网

标签:原图 导向 ak 滤波 bk 输出 图像 原理


一、性质

引导滤波的特性是:

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

二、原理

引导滤波的思想是:

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

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有