导向滤波(Guided Filter)公式详解
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=akIi+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∑(akIi+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∑((akIi+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(akIi+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(akIi+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−aki∈wk∑Ii)(7)
为了方便运算和简化公示,这里记pk‾=1∣w∣∑i∈wkpi\overline{p_k}=\frac{1}{|w|}\sum_{i\in w_k}p_ipk=∣w∣1∑i∈wkpi,Ik‾=1∣w∣∑i∈wkIi\overline{I_k}=\frac{1}{|w|}\sum_{i\in w_k}I_iIk=∣w∣1∑i∈wkIi,得
bk=pk‾−akIk‾(8)b_k = \overline{p_k}-a_k\overline{I_k}\tag8bk=pk−akIk(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∑(akIi2+bkIi−piIi+ϵ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∑(akIi2+(pk−akIk)Ii−piIi+ϵ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∑(akIi2+pkIi−akIkIi−piIi+ϵ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}aki∈wk∑(Ii2−IkIi+ϵ)=i∈wk∑(piIi−pkIi)(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−Iki∈wk∑Ii+i∈wk∑ϵ)=i∈wk∑piIi−pki∈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∈wkIi2,pkIk‾=1∣w∣∑i∈wkpiIi\overline{p_kI_k}=\frac{1}{|w|}\sum_{i\in w_k}p_iI_ipkIk=∣w∣1∑i∈wkpiIi整理上式得:
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−Ik2+ϵ)=pkIk−pkIk(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+ϵpkIk−pkIk(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∣1k:i∈wk∑(akIi+bk)(16)
=aˉiIi+bˉi(17)\ \ =\bar a_iI_i+\bar b_i\tag{17} =aˉiIi+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∈wkak,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∈wkbk。由此建立了每个像素点从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)公式详解相关推荐
- 详解——导向滤波(Guided Filter)和快速导向滤波
文章目录 导读 原理推导 导向滤波的应用 导向滤波的实现 快速导向滤波的实现 算法效果 代码 参考 导读 在图像滤波算法中,导向滤波.双边滤波.最小二乘滤波并称三大保边滤波器,他们是各向异性滤波器.相 ...
- 导向滤波python_导向滤波(Guided Filter)简要介绍
1.介绍 提到导向滤波,首先想到的是"何恺明",他的确是真大神,在图像领域,是中国人的骄傲,深度学习流行的时候,也是提出各种新算法,比如ResNets,而最近两年,深度学习的发展已 ...
- 三种经典图像滤波方法介绍——双边滤波(Bilateral filter)、导向滤波(Guided Fliter)、滚动导向滤波(RollingGuidedFilter)
文章目录 一.前言 二.双边滤波(Bilateral filter) 2.1 双边滤波的理论介绍及公式推导 2.2 双边滤波的matlab程序实现 三.导向滤波(Guided Fliter) 3.1 ...
- 双边滤波(Bilateral Filter)详解
双边滤波(Bilateral Filter)详解 转自:睁开眼就变帅 原理分析: 双边滤波与高斯滤波器相比,对于图像的边缘信息能过更好的保存.其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高 ...
- python数组对应元素相乘_python的几种矩阵相乘的公式详解
1. 同线性代数中矩阵乘法的定义: np.dot() np.dot(A, B):对于二维矩阵,计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义.对于一维矩阵,计算两者的内积.见如下Python代码 ...
- JavaWeb中filter的详解及应用案例
JavaWeb中filter的详解及应用案例 转载自:http://www.cnblogs.com/vanl/p/5742501.html 一:Filter介绍 Filter可认为是Servlet的一 ...
- Photoshop CS 中的“照片滤镜/Photo Filter”命令详解(转)
Photoshop CS 中的"照片滤镜/Photo Filter"命令详解(转)[@more@] 这是一个跟摄影有关的重要图像调整命令. 有关这一命令的教程,现在网上没一个能说得 ...
- 2位专家耗时2年打造,西瓜书机器学习公式详解,都在这里了!(文末留言赠书)...
作为机器学习的入门经典教材,周志华老师的<机器学习>,自2016年1月底出版以来,首印5000册一周售罄,并在8个月内重印9次.先后登上了亚马逊,京东,当当网等的计算机类畅销书榜首,身边学 ...
- 【吃瓜教程】《机器学习公式详解》西瓜书与南瓜书公式推导
[吃瓜教程]<机器学习公式详解>西瓜书与南瓜书公式推导 2021年7月11日 第0章-导学 深度学习:狭义地来说,就是具有较多层的神经网络. 整个学习过程; 先看西瓜书,在看 Datawh ...
- 等额本息和等额本金公式详解
一.等额本息公式详解 (1) 等额本息,网上已经给出详细解释了,我就一句话,就是你n期,每一期的还的金额都是一样的. (2) 之前一段时间苦恼,网上搜了一圈等额本息的公式,都是直接给结果,没有解算过程 ...
最新文章
- websphere mq 查看队列中是否有数据_全网最全的 “消息队列”
- 解决margin-top没有效果
- [专栏目录]-Android专栏目录
- SAP License:SAP评论
- 广数系统980tdb系统说明书_不同数控系统中各个倒角指令的用法
- Acticles about Interface!
- 3DEC离散元数值模拟技术与应用
- 实施工程师面试基本问题
- 有线网络、无线网络、蜂窝网络、移动网络到底是啥?
- Linux的基本操作
- cad2016批量修改相关字体,统一文字样式
- Exp8 Web基础 20154328 常城
- GBS国标经纬度转高德经纬度
- 关于while循环终止循环的三种方式
- 基于单片机的自动追日系统设计_基于单片机控制的简易逐日式太阳能发电系统...
- Using platform encoding (UTF-8 actually) to copy filtered resources错误
- 1971旗舰cpu intel_这就是近年来Intel最良心CPU!我彻底服了
- 0的0次幂(0^0)应该等于0还是1?
- DM backup database 报错[-7169](bakres与dmap消息通信失败)
- 绘制3D海水温盐密度曲面(matplotlib)
热门文章
- Win10喇叭图标出现红叉提示“未安装任何音频输出设备“
- 舆情传染病时空分析文献阅读笔记
- 利用 Python 优雅地将 PDF 转换成图片
- 数据库身份证号用什么类型_数据库设计规范
- 海康威视摄像头 rtsp 地址格式
- SD卡启动第二篇 (手动导入系统到SD卡分区)
- javaee 学习书籍推荐
- Python3 大型网络爬虫实战 003 — scrapy 大型静态图片网站爬虫项目实战 — 实战:爬取 169美女图片网 高清图片
- Spire.Office for Java 7.10.FIX[7.9.9]-全新版
- 【倒计时5天】PyCon China 2020 主题大揭秘!