Guided Filter

引导滤波

Guided Image Filtering - 何恺明 2009

  引导滤波(Guided Filtering)和双边滤波(BF)、最小二乘滤波(WLS)是三大边缘保持(Edge-perserving)滤波器。当然,引导滤波的功能不仅仅是边缘保持,只有当引导图是原图的时候,它就成了一个边缘保持滤波器。
  它在图像去雾,图像抠图上均有相应的应用。


原理

  对于一个输入的图像ppp,通过引导图像III,经过滤波后得到输出图像qqq,其中ppp和III都是算法的输入。引导滤波定义了如下所示的一个线性滤波过程,对于iii位置的像素点,得到的滤波输出是一个加权平均值:
qi=∑jWij(I)pj,(1)q_i=\sum_j W_{ij}(I)pj, \tag1qi​=j∑​Wij​(I)pj,(1)
其中,iii和jjj分别表示像素下标。WijW_{ij}Wij​是只和引导图像III相关的滤波核。该滤波器相对于ppp是线性的。
  导向滤波的一个重要假设是输出图像qqq和引导图像III在滤波窗口wkw_kwk​上存在局部线性关系:
qi=akIi+bk,∀i∈wk,(2)q_i=a_kI_i+b_k,\forall i\in w_k,\tag2qi​=ak​Ii​+bk​,∀i∈wk​,(2)
对于一个以rrr为半径的确定的窗口wkw_kwk​,(aka_kak​,bkb_kbk​)也将是唯一确定的常量系数。这就保证了在一个局部区域里,如果引导图像III有一个边缘的时候,输出图像qqq也保持边缘不变,因为对于相邻的像素点而言,存在∇q=a∇I\nabla q=a\nabla I∇q=a∇I。因此只要求解得到了系数aaa,bbb也就得到了输出qqq。同时认为输入图像中非边缘区域又不平滑的地方视为噪声nnn,就有qi=pi−niq_i=p_i-n_iqi​=pi​−ni​。最终的目标就是最小化这个噪声。对于每一个滤波窗口,该算法在最小二乘意义上的最优化可表示为argmin∑i∈wk(qi−pi)2argmin∑i∈wk(akIi+bk−pi)2(3)argmin \sum_{i\in w_k}(q_i-p_i)^2 \\ argmin \sum_{i\in w_k}(a_kI_i+b_k-p_i)^2 \tag3argmini∈wk​∑​(qi​−pi​)2argmini∈wk​∑​(ak​Ii​+bk​−pi​)2(3)
最后,引入一个正则化参数ϵ\epsilonϵ避免aka_kak​过大,得到滤波窗口内的损失函数:
E(ak,bk)=∑i∈wk((akIi+bk−pi)2+ϵak2).(4)E(a_k,b_k)=\sum_{i\in w_k}((a_kI_i+b_k-p_i)^2+\epsilon a_k^2).\tag4E(ak​,bk​)=i∈wk​∑​((ak​Ii​+bk​−pi​)2+ϵak2​).(4)
求解最优化过程(对参数求偏导):
δEak=∑i∈wk(2(akIi+bk−pi)(Ii)+2ϵak)=0(5)\frac {\delta E}{a_k}=\sum_{i\in w_k}(2(a_kI_i+b_k-p_i)(I_i)+2\epsilon a_k)=0 \tag5ak​δE​=i∈wk​∑​(2(ak​Ii​+bk​−pi​)(Ii​)+2ϵak​)=0(5)
δEbk=∑i∈wk(2(akIi+bk−pi))=0(6)\frac {\delta E}{b_k}=\sum_{i\in w_k}(2(a_kI_i+b_k-p_i))=0\tag6bk​δE​=i∈wk​∑​(2(ak​Ii​+bk​−pi​))=0(6)
-----------------2020-10-27更新-----------------
因为求导这部分我之前也写的有问题,评论里也有问到,这里再把过程写详细点,方便大家对照自己的推导过程。
先求解bkb_kbk​:
bk=1∣w∣(∑i∈wkpi−ak∑i∈wkIi)(7)b_k=\frac{1}{|w|}(\sum_{i\in w_k}p_i-a_k\sum_{i\in w_k}I_i)\tag7bk​=∣w∣1​(i∈wk​∑​pi​−ak​i∈wk​∑​Ii​)(7)
为了方便运算和简化公示,这里记pk‾=1∣w∣∑i∈wkpi\overline{p_k}=\frac{1}{|w|}\sum_{i\in w_k}p_ipk​​=∣w∣1​∑i∈wk​​pi​,Ik‾=1∣w∣∑i∈wkIi\overline{I_k}=\frac{1}{|w|}\sum_{i\in w_k}I_iIk​​=∣w∣1​∑i∈wk​​Ii​,得
bk=pk‾−akIk‾(8)b_k = \overline{p_k}-a_k\overline{I_k}\tag8bk​=pk​​−ak​Ik​​(8)
然后求解aka_kak​:
整理前面的求导公式可得:

δEak=∑i∈wk(akIi2+bkIi−piIi+ϵak)=0(9)\frac {\delta E}{a_k}=\sum_{i\in w_k}(a_kI_i^2+b_kI_i-p_iI_i+\epsilon a_k)=0 \tag9ak​δE​=i∈wk​∑​(ak​Ii2​+bk​Ii​−pi​Ii​+ϵak​)=0(9)
代入简化后的bkb_kbk​
∑i∈wk(akIi2+(pk‾−akIk‾)Ii−piIi+ϵak)=0(10)\sum_{i\in w_k}(a_kI_i^2+(\overline{p_k}-a_k\overline{I_k})I_i-p_iI_i+\epsilon a_k)=0\tag{10}i∈wk​∑​(ak​Ii2​+(pk​​−ak​Ik​​)Ii​−pi​Ii​+ϵak​)=0(10)
∑i∈wk(akIi2+pk‾Ii−akIk‾Ii−piIi+ϵak)=0(11)\sum_{i\in w_k}(a_kI_i^2+\overline{p_k}I_i-a_k\overline{I_k}I_i-p_iI_i+\epsilon a_k)=0\tag{11}i∈wk​∑​(ak​Ii2​+pk​​Ii​−ak​Ik​​Ii​−pi​Ii​+ϵak​)=0(11)
移项,注意求和符号的层级关系,提出aka_kak​,注意带下标k的都可以从求和函数提出:
ak∑i∈wk(Ii2−Ik‾Ii+ϵ)=∑i∈wk(piIi−pk‾Ii)(12)a_k\sum_{i\in w_k}(I_i^2-\overline{I_k}I_i+\epsilon)=\sum_{i\in w_k}(p_iI_i-\overline{p_k}I_i)\tag{12}ak​i∈wk​∑​(Ii2​−Ik​​Ii​+ϵ)=i∈wk​∑​(pi​Ii​−pk​​Ii​)(12)
ak(∑i∈wkIi2−Ik‾∑i∈wkIi+∑i∈wkϵ)=∑i∈wkpiIi−pk‾∑i∈wkIi(13)a_k(\sum_{i\in w_k}I_i^2-\overline{I_k}\sum_{i\in w_k}I_i+\sum_{i\in w_k}\epsilon)=\sum_{i\in w_k}p_iI_i-\overline{p_k}\sum_{i\in w_k}I_i\tag{13}ak​(i∈wk​∑​Ii2​−Ik​​i∈wk​∑​Ii​+i∈wk​∑​ϵ)=i∈wk​∑​pi​Ii​−pk​​i∈wk​∑​Ii​(13)
为了进一步简化,在两边同除以∣w∣|w|∣w∣后,将之前记的pk‾,Ik‾\overline{p_k},\overline{I_k}pk​​,Ik​​代入上式,并记I2‾k=1∣w∣∑i∈wkIi2\overline{I^2} _k=\frac{1}{|w|}\sum_{i\in w_k}I_i^2I2k​=∣w∣1​∑i∈wk​​Ii2​,pkIk‾=1∣w∣∑i∈wkpiIi\overline{p_kI_k}=\frac{1}{|w|}\sum_{i\in w_k}p_iI_ipk​Ik​​=∣w∣1​∑i∈wk​​pi​Ii​整理上式得:
ak(I2‾k−Ik‾2+ϵ)=pkIk‾−pk‾Ik‾(14)a_k(\overline{I^2} _k-\overline{I_k}^2+\epsilon)=\overline{p_kI_k}-\overline{p_k}\overline{I_k}\tag{14}ak​(I2k​−Ik​​2+ϵ)=pk​Ik​​−pk​​Ik​​(14)
其中,公式左侧都是图像I相关的,在邻域w中的均值,根据方差与期望的推导公式V=E(X2)−(E(X))2V=E(X^2)-(E(X))^2V=E(X2)−(E(X))2,可得:
ak=pkIk‾−pk‾Ik‾σk2+ϵ(15)a_k =\frac{\overline{p_kI_k}-\overline{p_k}\overline{I_k}}{\sigma_k^2+\epsilon}\tag{15}ak​=σk2​+ϵpk​Ik​​−pk​​Ik​​​(15)
即为aka_kak​的结果,相比与论文中的结果,这里进一步替换简化了公式。
-----------------分割线-----------------
  接下来,只要把上述线性模型应用到整个图像的滤波窗口。但是可以看到,每一个像素点会被包含在多个窗口里。比如,如果用3*3的窗口滤波,那么除了边缘区域的每个点都会被包含在9个窗口里。因此,对于不同的窗口,我们将会得到∣w∣|w|∣w∣个qiq_iqi​值,就对所有的qiq_iqi​值取平均,得到最终结果:
qi=1∣w∣∑k:i∈wk(akIi+bk)(16)q_i=\frac{1}{|w|}\sum_{k:i\in w_k}(a_kI_i+b_k)\tag{16}qi​=∣w∣1​k:i∈wk​∑​(ak​Ii​+bk​)(16)
=aˉiIi+bˉi(17)\ \ =\bar a_iI_i+\bar b_i\tag{17}  =aˉi​Ii​+bˉi​(17)
其中aˉi=1∣w∣∑k:i∈wkak\bar a_i=\frac{1}{|w|}\sum_{k:i\in w_k}a_kaˉi​=∣w∣1​∑k:i∈wk​​ak​,bˉi=1∣w∣∑k:i∈wkbk\bar b_i=\frac{1}{|w|}\sum_{k:i\in w_k}b_kbˉi​=∣w∣1​∑k:i∈wk​​bk​。由此建立了每个像素点从III到qqq的映射。


边缘保持

  对于该算法,当I=pI=pI=p时,即输入图像和引导图像是同一副图像时,该算法即成为一个边缘保持滤波器。同时,方程的解也可作如下表示:
ak=σk2σk2+ϵ(18)a_k =\cfrac{\sigma _k^2}{\sigma _k^2+\epsilon}\tag{18}ak​=σk2​+ϵσk2​​(18)
bk=(1−ak)pˉk(19)b_k = (1-a_k)\bar p_k\tag{19}bk​=(1−ak​)pˉ​k​(19)
从中可以看出,ϵ\epsilonϵ在这里相当于界定平滑区域和边缘区域的阈值。

考虑以下两种情况:

  • Case 1:平坦区域。如果在某个滤波窗口内,该区域是相对平滑的,方差σk2\sigma _k^2σk2​将远远小于ϵ\epsilonϵ。从而ak≈0,bk≈pˉka_k\approx0,b_k\approx\bar p_kak​≈0,bk​≈pˉ​k​。相当于对该区域作均值滤波。
  • Case 2:高方差区域。相反,如果该区域是边缘区域,方差很大,σk2\sigma _k^2σk2​将远远大于ϵ\epsilonϵ。从而ak≈1,bk≈0a_k\approx1,b_k\approx0ak​≈1,bk​≈0。相当于在区域保持原有梯度。

  


应用

1、以自身作为引导图的保边平滑滤波:

2、以原图引导的对透射率滤波的暗通道去雾

3、以原图引导的对权重图滤波的引导图像融合

导向滤波(Guided Filter)公式详解相关推荐

  1. 详解——导向滤波(Guided Filter)和快速导向滤波

    文章目录 导读 原理推导 导向滤波的应用 导向滤波的实现 快速导向滤波的实现 算法效果 代码 参考 导读 在图像滤波算法中,导向滤波.双边滤波.最小二乘滤波并称三大保边滤波器,他们是各向异性滤波器.相 ...

  2. 导向滤波python_导向滤波(Guided Filter)简要介绍

    1.介绍 提到导向滤波,首先想到的是"何恺明",他的确是真大神,在图像领域,是中国人的骄傲,深度学习流行的时候,也是提出各种新算法,比如ResNets,而最近两年,深度学习的发展已 ...

  3. 三种经典图像滤波方法介绍——双边滤波(Bilateral filter)、导向滤波(Guided Fliter)、滚动导向滤波(RollingGuidedFilter)

    文章目录 一.前言 二.双边滤波(Bilateral filter) 2.1 双边滤波的理论介绍及公式推导 2.2 双边滤波的matlab程序实现 三.导向滤波(Guided Fliter) 3.1 ...

  4. 双边滤波(Bilateral Filter)详解

    双边滤波(Bilateral Filter)详解 转自:睁开眼就变帅 原理分析: 双边滤波与高斯滤波器相比,对于图像的边缘信息能过更好的保存.其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高 ...

  5. python数组对应元素相乘_python的几种矩阵相乘的公式详解

    1. 同线性代数中矩阵乘法的定义: np.dot() np.dot(A, B):对于二维矩阵,计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义.对于一维矩阵,计算两者的内积.见如下Python代码 ...

  6. JavaWeb中filter的详解及应用案例

    JavaWeb中filter的详解及应用案例 转载自:http://www.cnblogs.com/vanl/p/5742501.html 一:Filter介绍 Filter可认为是Servlet的一 ...

  7. Photoshop CS 中的“照片滤镜/Photo Filter”命令详解(转)

    Photoshop CS 中的"照片滤镜/Photo Filter"命令详解(转)[@more@] 这是一个跟摄影有关的重要图像调整命令. 有关这一命令的教程,现在网上没一个能说得 ...

  8. 2位专家耗时2年打造,西瓜书机器学习公式详解,都在这里了!(文末留言赠书)...

    作为机器学习的入门经典教材,周志华老师的<机器学习>,自2016年1月底出版以来,首印5000册一周售罄,并在8个月内重印9次.先后登上了亚马逊,京东,当当网等的计算机类畅销书榜首,身边学 ...

  9. 【吃瓜教程】《机器学习公式详解》西瓜书与南瓜书公式推导

    [吃瓜教程]<机器学习公式详解>西瓜书与南瓜书公式推导 2021年7月11日 第0章-导学 深度学习:狭义地来说,就是具有较多层的神经网络. 整个学习过程; 先看西瓜书,在看 Datawh ...

  10. 等额本息和等额本金公式详解

    一.等额本息公式详解 (1) 等额本息,网上已经给出详细解释了,我就一句话,就是你n期,每一期的还的金额都是一样的. (2) 之前一段时间苦恼,网上搜了一圈等额本息的公式,都是直接给结果,没有解算过程 ...

最新文章

  1. websphere mq 查看队列中是否有数据_全网最全的 “消息队列”
  2. 解决margin-top没有效果
  3. [专栏目录]-Android专栏目录
  4. SAP License:SAP评论
  5. 广数系统980tdb系统说明书_不同数控系统中各个倒角指令的用法
  6. Acticles about Interface!
  7. 3DEC离散元数值模拟技术与应用
  8. 实施工程师面试基本问题
  9. 有线网络、无线网络、蜂窝网络、移动网络到底是啥?
  10. Linux的基本操作
  11. cad2016批量修改相关字体,统一文字样式
  12. Exp8 Web基础 20154328 常城
  13. GBS国标经纬度转高德经纬度
  14. 关于while循环终止循环的三种方式
  15. 基于单片机的自动追日系统设计_基于单片机控制的简易逐日式太阳能发电系统...
  16. Using platform encoding (UTF-8 actually) to copy filtered resources错误
  17. 1971旗舰cpu intel_这就是近年来Intel最良心CPU!我彻底服了
  18. 0的0次幂(0^0)应该等于0还是1?
  19. DM backup database 报错[-7169](bakres与dmap消息通信失败)
  20. 绘制3D海水温盐密度曲面(matplotlib)

热门文章

  1. Win10喇叭图标出现红叉提示“未安装任何音频输出设备“
  2. 舆情传染病时空分析文献阅读笔记
  3. 利用 Python 优雅地将 PDF 转换成图片
  4. 数据库身份证号用什么类型_数据库设计规范
  5. 海康威视摄像头 rtsp 地址格式
  6. SD卡启动第二篇 (手动导入系统到SD卡分区)
  7. javaee 学习书籍推荐
  8. Python3 大型网络爬虫实战 003 — scrapy 大型静态图片网站爬虫项目实战 — 实战:爬取 169美女图片网 高清图片
  9. Spire.Office for Java 7.10.FIX[7.9.9]-全新版
  10. 【倒计时5天】PyCon China 2020 主题大揭秘!