本文为笔者阅读Kaiming He于2013年发表的guided image filtering时的笔记和实验合集,作者在文中省略的一些步骤给予了补充,在此记录下来,希望对后来者有益。
本文分为如下两部分:
1.论文阅读及算法原理介绍
2.基于matlab的简单实现
- 论文阅读及算法原理介绍
先给出线性移-变滤波器的基本概念:给出输入图像p,指导图像I,得到输出图像,输入图像p和指导图像I可以是同一幅图像。滤波之后的图像可以用如下加权公式表示:
q i = ∑ j W i j ( I ) p j q_i=\sum_j^{}W_{ij}(I)p_j qi=j∑Wij(I)pj
其中 i i i为当前滤波点的索引, j j j为滤波器模版覆盖的所有像素点的索引,滤波器(卷积核) W i j W_{ij} Wij是指导图像 I I I的函数,与输入图像 p p p独立。
可以用如下图简单解释上述过程:
所谓线性移-变滤波器包含两个性质:(1)线性性:滤波器通过线性加权进行滤波;(2)移-变:滤波其系数 W i j W_{ij} Wij随着图像中心的变化而变化,与之相对应的是移-不变滤波器,如传统的高斯滤波器/边缘检测算子等滤波器,一旦滤波器定下来不随着像素点的移动而改变。上述公式中的下标索引 i i i为红色像素点所对应的空间位置(下标),下标索引 j j j为所有蓝色和黄色像素点对应的空间位置。
一个简单的线性移-变滤波器就是联合双边滤波器,示意图如下图:
其核函数为:
W
i
j
b
f
(
I
)
=
1
K
i
exp
(
−
∥
x
i
−
x
j
∥
2
σ
s
2
)
exp
(
−
∥
I
i
−
I
j
∥
2
σ
r
2
)
W_{ij}^{bf}(I)=\frac{1}{K_i}\exp\left(-\frac{\Vert{x_i-x_j}\Vert^2}{\sigma_s^2}\right)\exp\left(-\frac{\Vert{I_i-I_j}\Vert^2}{\sigma_r^2}\right)
Wijbf(I)=Ki1exp(−σs2∥xi−xj∥2)exp(−σr2∥Ii−Ij∥2)
其中
K
i
K_i
Ki为归一化系数,与传统的双边滤波器不同的是,这里在range方向上用指导图像
I
I
I来衡量相似度,如果range方向上相似度用原始图像来作指导,那么联合滤波器就退化为传统的双边滤波器。
下面给出guided filter的建模及推导过程:guided filter是指导图像和输出图像在一个局部区域内的线性模型,即假定输出图像
q
q
q是指导图像
I
I
I在以
k
k
k为中心的窗口
ω
k
\omega_k
ωk线性变换:
q
i
=
a
k
I
i
+
b
k
,
∀
i
∈
ω
k
q_i=a_kI_i+b_k,\quad\forall i \in \omega_k
qi=akIi+bk,∀i∈ωk
这里
(
a
k
,
b
k
)
(a_k,b_k)
(ak,bk)在窗口
ω
k
\omega_k
ωk中为常数。对公式两边求导可知
∇
q
=
a
∇
I
\nabla q=a\nabla I
∇q=a∇I,因此如果指导图像
I
I
I中为边缘的地方,输出图像也有边缘。
通常的加性去噪模型假设输入图像
p
p
p为输出图像
q
q
q(恢复图像)加上某些分量
n
n
n(这里的
n
n
n可以理解成噪声或者某些细小的结构或振荡,比如纹理),因此有如下模型:
p
i
=
q
i
+
n
i
p_i=q_i+n_i
pi=qi+ni
写成输出图像的形式:
q
i
=
p
i
−
n
i
q_i=p_i-n_i
qi=pi−ni
guided filter建模的思想在于寻找这样
(
a
k
,
b
k
)
(a_k,b_k)
(ak,bk),使得
q
i
=
a
k
I
i
+
b
k
q_i=a_kI_i+b_k
qi=akIi+bk指导滤波之后的输出图像
q
i
q_i
qi和输入图像尽可能相似(差异尽可能小),基于这样的想法,很自然就有了将
ω
k
\omega_k
ωk窗口中滤波后的
q
i
q_i
qi和滤波之前的
p
i
p_i
pi的所有误差(差异)都累加起来,使得误差最小的
(
a
k
,
b
k
)
(a_k,b_k)
(ak,bk)就是我们要找的guided filter,于是很自然就建立的下面的模型:
min
E
(
a
k
,
b
k
)
=
min
∑
i
∈
ω
k
(
a
k
I
i
+
b
k
−
p
i
)
2
\min E(a_k,b_k)=\min\sum_{i\in\omega_k}(a_kI_i+b_k-p_i)^2
minE(ak,bk)=mini∈ωk∑(akIi+bk−pi)2
仔细观察这个模型会发现一个问题,我们寻找输出
q
i
q_i
qi是为了在结构上尽可能地和输入图像
p
i
p_i
pi相似,但是如果通过求解这个最小化模型给出的结果使得
q
i
q_i
qi和
p
i
p_i
pi相等,即输出图像和输入图像一模一样,那么做这个滤波就失去了意义,在该式中,令
b
k
=
0
,
a
k
=
p
i
/
I
i
b_k=0,a_k=p_i/I_i
bk=0,ak=pi/Ii即可得到描述的结果,此时
min
E
(
a
k
,
b
k
)
=
0
\min E(a_k,b_k)=0
minE(ak,bk)=0,此乃我们在机器学习/模式识别/人工智能中常说的“过拟合”。于是需要考虑的是改造上面的模型,给它引入一个惩罚项,让输出图像
q
i
q_i
qi尽可能的和输入图像
p
i
p_i
pi尽可能相似,但又不能让它们完全相等,于是给模型加上一个
L
2
L^2
L2范数的正则项,并且给正则项加入一个
ϵ
\epsilon
ϵ来控制惩罚的强度,为什么
L
2
L^2
L2范数的正则项可以达到“泛化”和防止“过拟合”的目的,后面会给出一个详细的解释。于是上面的模型修正为:
min
E
(
a
k
,
b
k
)
=
min
∑
i
∈
ω
k
(
(
a
k
I
i
+
b
k
−
p
i
)
2
+
ϵ
a
k
2
)
\min E(a_k,b_k)=\min \sum_{i\in\omega_k}((a_kI_i+b_k-p_i)^2+\epsilon a_k^2)
minE(ak,bk)=mini∈ωk∑((akIi+bk−pi)2+ϵak2)
这样才得到了作者在文中给出的模型,这个模型的求解很简单,不用去查所谓的回归分析等内容,这是一个无约束的二次最优话问题,显然是一个凸优化问题,极值点乃最优点,简单运用一下高等数学中的极值点的必要条件即可求解出
(
a
k
,
b
k
)
(a_k,b_k)
(ak,bk),这里送佛送到西,给出推导的详细过程:
使得
E
(
a
k
,
b
k
)
E(a_k,b_k)
E(ak,bk)取得极小值的必要条件是:
∂
E
(
a
k
,
b
k
)
∂
a
k
=
0
∂
E
(
a
k
,
b
k
)
∂
b
k
=
0
\frac{\partial E(a_k,b_k)}{\partial a_k}=0\\ \frac{\partial E(a_k,b_k)}{\partial b_k}=0
∂ak∂E(ak,bk)=0∂bk∂E(ak,bk)=0
对
E
(
a
k
,
b
k
)
E(a_k,b_k)
E(ak,bk)的具体模型有:
KaTeX parse error: Expected 'EOF', got '&' at position 43: …{\partial a_k} &̲=\sum_{i\in\ome…
先对
b
k
b_k
bk的偏导数进行化简:
∑
i
∈
ω
k
(
a
k
I
i
+
b
k
−
p
i
)
=
0
∑
i
∈
ω
k
b
k
=
∑
i
∈
ω
k
(
p
i
−
a
k
I
i
)
∑
i
∈
ω
k
b
k
=
∑
i
∈
ω
k
p
i
−
a
k
∑
i
∈
ω
k
(
I
i
)
\begin{aligned} & \sum_{i\in\omega_k}(a_kI_i+b_k-p_i)=0 \\ & \sum_{i\in\omega_k}b_k=\sum_{i\in\omega_k}(p_i-a_kI_i) \\ & \sum_{i\in\omega_k}b_k=\sum_{i\in\omega_k}p_i-a_k\sum_{i\in\omega_k}(I_i) \\ \end{aligned}
i∈ωk∑(akIi+bk−pi)=0i∈ωk∑bk=i∈ωk∑(pi−akIi)i∈ωk∑bk=i∈ωk∑pi−aki∈ωk∑(Ii)
记
ω
k
\omega_k
ωk中像素的个数有
∣
ω
∣
\lvert\omega\rvert
∣ω∣个,那么
b
k
∣
ω
∣
=
∑
i
∈
ω
k
p
i
−
a
k
∑
i
∈
ω
k
I
i
b_k\lvert\omega\rvert=\sum_{i\in\omega_k}p_i-a_k\sum_{i\in\omega_k}I_i
bk∣ω∣=i∈ωk∑pi−aki∈ωk∑Ii
两边同时除以
∣
ω
∣
\lvert\omega\rvert
∣ω∣
b
k
=
∑
i
∈
ω
k
p
i
−
a
k
∑
i
∈
ω
k
I
i
∣
ω
∣
=
p
‾
k
−
a
k
μ
k
b_k=\frac{\sum_{i\in\omega_k} p_i-a_k\sum_{i\in\omega_k}I_i}{\lvert\omega\rvert}=\overline{p}_k-a_k\mu_k
bk=∣ω∣∑i∈ωkpi−ak∑i∈ωkIi=pk−akμk
在对
a
k
a_k
ak的偏导数进行化简
∑
i
∈
ω
k
I
i
(
a
k
I
i
+
b
k
−
p
i
)
+
ϵ
a
k
=
0
∑
i
∈
ω
k
(
a
k
I
i
2
+
I
i
b
k
−
I
i
p
i
+
ϵ
a
k
)
=
0
\begin{aligned} &\sum_{i\in\omega_k}I_i(a_kI_i+b_k-p_i)+\epsilon a_k = 0 \\ &\sum_{i\in\omega_k}(a_kI_i^2+I_ib_k-I_ip_i+\epsilon a_k) = 0 \end{aligned}
i∈ωk∑Ii(akIi+bk−pi)+ϵak=0i∈ωk∑(akIi2+Iibk−Iipi+ϵak)=0
将上面求出的
b
k
b_k
bk公式带入该式,有
∑
i
∈
ω
k
a
k
I
i
2
+
I
i
(
p
‾
k
−
a
k
μ
k
)
−
I
i
p
i
+
ϵ
a
k
=
0
∑
i
∈
ω
k
(
I
i
2
−
I
i
μ
k
+
ϵ
)
a
k
+
I
i
p
i
=
0
a
k
∑
i
∈
ω
k
(
I
i
2
−
I
i
μ
k
+
ϵ
)
=
∑
i
∈
ω
k
(
I
i
p
i
−
I
i
p
‾
k
)
\begin{aligned} &\sum_{i\in\omega_k}a_kI_i^2+I_i(\overline{p}_k-a_k\mu_k)-I_ip_i+\epsilon a_k=0\\ &\sum_{i\in\omega_k}(I_i^2-I_i\mu_k+\epsilon)a_k+I_ip_i=0\\ &a_k\sum_{i\in\omega_k}(I_i^2-I_i\mu_k+\epsilon)=\sum_{i\in\omega_k}(I_ip_i-I_i\overline{p}_k) \end{aligned}
i∈ωk∑akIi2+Ii(pk−akμk)−Iipi+ϵak=0i∈ωk∑(Ii2−Iiμk+ϵ)ak+Iipi=0aki∈ωk∑(Ii2−Iiμk+ϵ)=i∈ωk∑(Iipi−Iipk)
a k = ∑ i ∈ ω k ( I i p i − I i p ‾ k ) ∑ i ∈ ω k ( I i 2 − I i μ k ) + ∑ i ∈ ω k ϵ = ∑ i ∈ ω k I i p i − p ‾ k ∑ i ∈ ω k I i ∑ i ∈ ω k ( I i 2 − I i μ k ) + ∣ ω ∣ ϵ = 1 ∣ ω ∣ ∑ i ∈ ω k I i p i − p ‾ k ∑ i ∈ ω k I i ∣ ω ∣ 1 ω ∑ i ∈ ω k ( I i 2 − I i μ k ) + ϵ = 1 ∣ ω ∣ ∑ i ∈ ω k I i p i − p ‾ k μ k 1 ∣ ω ∣ ∑ i ∈ ω k ( I i 2 − I i μ k ) + ϵ = 1 ∣ ω ∣ ∑ i ∈ ω k I i p i − p ‾ k μ k 1 ∣ ω ∣ ∑ i ∈ ω k I i 2 − μ k ∑ i ∈ ω k I i ∣ ω ∣ + ϵ = 1 ∣ ω ∣ ∑ i ∈ ω k I i p i − p ‾ k μ k 1 ∣ ω ∣ ∑ i ∈ ω k I i 2 − μ k ∑ i ∈ ω k I i ∣ ω ∣ + ϵ = 1 ∣ ω k ∣ ∑ i ∈ ω k I i p i − p ‾ k μ k 1 ∣ ω k ∣ ∑ i ∈ ω k I i 2 − μ k μ k + ϵ = 1 ∣ ω ∣ ∑ i ∈ ω I i p i − p ‾ k μ k 1 ∣ ω ∣ ∑ i ∈ ω k I i 2 − μ k 2 + ϵ \begin{aligned} a_k & = \frac{\sum_{i\in\omega_k} (I_i p_i - I_i \overline{p}_k)}{\sum_{i\in\omega_k}(I_i^2-I_i\mu_k)+\sum_{i\in\omega_k}\epsilon} \\ & = \frac{\sum_{i\in\omega_k}I_i p_i - \overline{p}_k\sum_{i\in\omega_k}I_i}{\sum_{i\in\omega_k}(I_i^2-I_i\mu_k)+|\omega|\epsilon} \\ & = \frac{\frac{1}{|\omega|} \sum_{i\in\omega_k}I_i p_i-\frac{\overline{p}_k\sum_{i\in\omega_k}I_i}{|\omega|}}{\frac{1}{\omega}\sum_{i\in\omega_k}(I_i^2-I_i\mu_k)+\epsilon} \\ & = \frac{\frac{1}{|\omega|}\sum_{i\in\omega_k}I_i p_i - \overline{p}_k\mu_k}{\frac{1}{|\omega|}\sum_{i\in\omega_k}(I_i^2-I_i\mu_k)+\epsilon} \\ & = \frac{\frac{1}{|\omega|}\sum_{i\in\omega_k}I_i p_i - \overline{p}_k\mu_k}{\frac{1}{|\omega|}\sum_{i\in\omega_k}I_i^2-\mu_k\frac{\sum_{i\in\omega_k}I_i}{|\omega|}+\epsilon} \\ & = \frac{\frac{1}{|\omega|}\sum_{i\in\omega_k}I_i p_i-\overline{p}_k\mu_k}{\frac{1}{|\omega|}\sum_{i\in\omega_k}I_i^2-\mu_k\frac{\sum_{i\in\omega_k}I_i}{|\omega|}+\epsilon} \\ & = \frac{\frac{1}{|\omega_k|}\sum_{i\in\omega_k}I_i p_i - \overline{p}_k\mu_k}{\frac{1}{|\omega_k|}\sum_{i\in\omega_k}I_i^2-\mu_k\mu_k+\epsilon} \\ & = \frac{\frac{1}{|\omega|}\sum_{i\in\omega}I_i p_i - \overline{p}_k\mu_k}{\frac{1}{|\omega|}\sum_{i\in\omega_k}I_i^2-\mu_k^2+\epsilon} \\ \end{aligned} ak=∑i∈ωk(Ii2−Iiμk)+∑i∈ωkϵ∑i∈ωk(Iipi−Iipk)=∑i∈ωk(Ii2−Iiμk)+∣ω∣ϵ∑i∈ωkIipi−pk∑i∈ωkIi=ω1∑i∈ωk(Ii2−Iiμk)+ϵ∣ω∣1∑i∈ωkIipi−∣ω∣pk∑i∈ωkIi=∣ω∣1∑i∈ωk(Ii2−Iiμk)+ϵ∣ω∣1∑i∈ωkIipi−pkμk=∣ω∣1∑i∈ωkIi2−μk∣ω∣∑i∈ωkIi+ϵ∣ω∣1∑i∈ωkIipi−pkμk=∣ω∣1∑i∈ωkIi2−μk∣ω∣∑i∈ωkIi+ϵ∣ω∣1∑i∈ωkIipi−pkμk=∣ωk∣1∑i∈ωkIi2−μkμk+ϵ∣ωk∣1∑i∈ωkIipi−pkμk=∣ω∣1∑i∈ωkIi2−μk2+ϵ∣ω∣1∑i∈ωIipi−pkμk
由方差定义,
E
(
X
−
X
‾
)
2
=
E
X
2
−
2
E
X
X
‾
+
E
X
‾
2
=
E
X
2
−
2
X
‾
E
X
+
E
X
‾
2
=
E
X
2
−
2
X
‾
E
X
+
E
X
‾
2
=
E
X
2
−
2
X
‾
X
‾
+
X
‾
2
=
E
X
2
−
X
‾
2
\begin{aligned} E(X-\overline{X})^2 & = EX^2-2EX\overline{X}+E\overline{X}^2 \\ & = EX^2-2\overline{X}EX+E\overline{X}^2 \\ & = EX^2-2\overline{X}EX+E\overline{X}^2 \\ & = EX^2-2\overline{X}\overline{X} + \overline{X}^2 \\ & = EX^2 -\overline{X}^2 \\ \end{aligned}
E(X−X)2=EX2−2EXX+EX2=EX2−2XEX+EX2=EX2−2XEX+EX2=EX2−2XX+X2=EX2−X2
于是有,
a
k
=
1
∣
ω
∣
∑
i
∈
ω
k
I
i
p
i
−
p
‾
k
μ
k
σ
k
2
+
ϵ
a_k=\frac{\frac{1}{|\omega|}\sum_{i\in\omega_k}{I_i p_i}-\overline{p}_k\mu_k}{\sigma_k^2+\epsilon}
ak=σk2+ϵ∣ω∣1∑i∈ωkIipi−pkμk
至此,算法的建模和求解的理论推导过程完毕。
guided filter的计算算法的伪代码描述如下:
严格来说,至此算法部分已经结束,后面部分从理论和应用角度来理解guided filter在实际的滤波过程中和传统滤波器的关系及其相对于传统滤波器所体现出来的优点。
边缘保持特性:guided filter在用作平滑滤波器具有边缘保持特性,在此我么以
I
=
p
I=p
I=p的特殊情况为例,从理论角度分析guided filter的边缘保持性质。
将
I
=
p
I=p
I=p代入
(
a
k
,
b
k
)
(a_k,b_k)
(ak,bk)的求解公式中,有
a
k
=
σ
k
2
σ
k
2
+
ϵ
b
k
=
(
1
−
a
k
)
μ
k
\begin{aligned} &a_k=\frac{\sigma_k^2}{\sigma_k^2+\epsilon}\\ &b_k=(1-a_k)\mu_k \end{aligned}
ak=σk2+ϵσk2bk=(1−ak)μk
当
ϵ
=
0
\epsilon=0
ϵ=0时,有
a
k
=
1
,
b
k
=
0
a_k=1,b_k=0
ak=1,bk=0,此时滤波后的图像为
q
i
=
a
k
I
i
+
b
k
=
I
i
=
p
i
q_i=a_kI_i+b_k=I_i=p_i
qi=akIi+bk=Ii=pi等价于完全没有滤波。
当
ϵ
>
0
\epsilon>0
ϵ>0时,有如下两种情况:
(1)指导图像像素值在
ω
k
\omega_k
ωk的小窗口内有剧烈变化,即高方差区域,
σ
k
2
\sigma_k^2
σk2远大于
ϵ
\epsilon
ϵ
a
k
=
1
,
b
k
=
0
a_k=1,b_k=0
ak=1,bk=0
滤波后图像为:
q
i
=
a
k
I
i
+
b
k
≈
I
i
≈
p
i
q_i=a_kI_i+b_k\approx I_i \approx p_i
qi=akIi+bk≈Ii≈pi
也就是说在变化明显的区域,该区域滤波后几乎保持不变,从而具有很好的边缘保持特性。
(2)指导图像像素在
ω
k
\omega_k
ωk的小窗口内变化不大,即平坦区域,
σ
k
2
\sigma_k^2
σk2接近于0,
σ
k
2
\sigma_k^2
σk2远小于
ϵ
\epsilon
ϵ
a
k
≈
0
,
b
k
≈
μ
k
a_k \approx 0, b_k \approx \mu_k
ak≈0,bk≈μk
滤波后图像为:
q
i
=
a
k
I
i
+
b
k
≈
μ
k
q_i = a_kI_i + b_k \approx \mu_k
qi=akIi+bk≈μk
也就是说在变化不怎么明显的平坦区域,该区域滤波后相当于对该区域做了均值滤波,从而对平坦区域就有很好的平滑作用。
将guided filter的参数和双边滤波器类比:
r
↔
σ
s
,
ϵ
↔
σ
r
2
r \leftrightarrow \sigma_s, \epsilon \leftrightarrow \sigma_r^2
r↔σs,ϵ↔σr2参数支箭有一个广义上类似的作用。
在本部分的开头硕大guided filter时一个线性移-变滤波器,这里我们结合公式推导来给出guided filter的线性移-变滤波器形式,并给出其物理上的解释。移变滤波器公式为:
q
i
=
∑
j
W
i
j
(
I
)
p
j
q_i = \sum_{j}{W_{ij}(I)p_j}
qi=j∑Wij(I)pj
两边同时对
p
j
p_j
pj求偏导数,即可推出guided filter作为线性移-变滤波器的具体公式:
W
i
j
(
I
)
=
∂
q
i
∂
p
j
W_{ij}(I)=\frac{\partial q_i}{\partial p_j}
Wij(I)=∂pj∂qi
将
q
i
=
a
k
I
i
+
b
k
=
1
∣
ω
∣
∑
k
∣
i
i
n
w
k
a
k
I
i
+
p
‾
k
=
1
∣
ω
∣
∑
k
∣
i
i
n
w
k
a
k
(
I
i
−
μ
k
)
+
p
‾
k
q_i=a_kI_i+b_k=\frac{1}{|\omega|}\sum_{k|i in w_k}{a_kI_i + \overline p_k} = \frac{1}{|\omega|}\sum_{k|i in w_k}{a_k(I_i-\mu_k)} + \overline p_k
qi=akIi+bk=∣ω∣1∑k∣iinwkakIi+pk=∣ω∣1∑k∣iinwkak(Ii−μk)+pk以及
a
k
a_k
ak的具体公式代入上式,有
W
i
j
(
I
)
=
1
ω
∑
k
(
∂
a
k
∂
p
j
(
I
i
−
μ
k
)
+
∂
p
‾
k
∂
p
j
)
W_{ij}(I)=\frac{1}{\omega}\sum_{k}{(\frac{\partial a_k}{\partial p_j}(I_i-\mu_k)+\frac{\partial \overline p_k}{\partial p_j})}
Wij(I)=ω1k∑(∂pj∂ak(Ii−μk)+∂pj∂pk)
∂
p
‾
k
∂
p
j
=
1
∣
ω
∣
∂
(
p
1
+
⋯
+
p
∣
ω
∣
)
∂
p
j
=
1
∣
ω
∣
δ
k
∈
ω
k
\frac{\partial \overline p_k}{\partial p_j}=\frac{1}{|\omega|}\frac{\partial (p_1+\cdots+p_{|\omega|})}{\partial p_j} = \frac{1}{|\omega|}\delta_k \in \omega_k
∂pj∂pk=∣ω∣1∂pj∂(p1+⋯+p∣ω∣)=∣ω∣1δk∈ωk
∂
a
k
∂
p
j
=
1
σ
k
2
+
ϵ
(
1
∣
ω
∣
∑
i
∈
ω
k
∂
p
i
∂
p
j
I
i
−
∂
q
‾
k
∂
p
j
μ
k
)
=
1
σ
k
2
+
ϵ
(
1
∣
ω
∣
I
j
−
1
∣
ω
∣
μ
k
)
δ
k
∈
w
j
\begin{aligned} \frac{\partial a_k}{\partial p_j} & = \frac{1}{\sigma_k^2 + \epsilon}(\frac{1}{|\omega|}\sum_{i\in\omega_k}\frac{\partial p_i}{\partial p_j}I_i - \frac{\partial \overline q_k}{\partial p_j}\mu_k) & = \frac{1}{\sigma_k^2 + \epsilon}(\frac{1}{|\omega|}I_j - \frac{1}{|\omega|}\mu_k)\delta_{k\in w_j} \end{aligned}
∂pj∂ak=σk2+ϵ1(∣ω∣1i∈ωk∑∂pj∂piIi−∂pj∂qkμk)=σk2+ϵ1(∣ω∣1Ij−∣ω∣1μk)δk∈wj
将二式代入移-变滤波器中,有
W
i
j
(
I
)
=
∂
q
i
∂
p
j
=
1
∣
ω
∣
2
∑
i
∈
ω
i
,
j
∈
ω
j
(
1
+
(
I
i
−
μ
k
)
(
I
j
−
μ
k
)
σ
k
2
+
ϵ
)
W_{ij}(I)=\frac{\partial q_i}{\partial p_j} = \frac{1}{|\omega|^2}\sum_{i\in\omega_i,j\in\omega_j}(1+\frac{(I_i-\mu_k)(I_j-\mu_k)}{\sigma_k^2+\epsilon})
Wij(I)=∂pj∂qi=∣ω∣21i∈ωi,j∈ωj∑(1+σk2+ϵ(Ii−μk)(Ij−μk))
当
I
i
−
μ
k
I_i-\mu_k
Ii−μk和
I
j
−
μ
k
I_j-\mu_k
Ij−μk符号相同,即在以像素块
ω
k
\omega_k
ωk的均值
μ
k
\mu_k
μk的度量下符号相同,即像素点相似,那么对应的移-变滤波器系数大,从而加权的权重更大;反之,符号相反,差异很大,权重系数小。从而,从滤波器的角度也解释了guided filter具有边缘保持和平滑滤波特性。如果把图像理解为随机场的话:
(
I
i
−
μ
k
)
(
I
j
−
μ
k
)
σ
k
2
+
ϵ
\frac{(I_i-\mu_k)(I_j-\mu_k)}{\sigma_k^2+\epsilon}
σk2+ϵ(Ii−μk)(Ij−μk)
可以理解为调制后的相关函数,相关函数越逼近1,说明相关性越大,从而两个像素对应的像素相似度越高,反之越逼近-1,说明相关性越小,图像相似度越小。
Guided filter的梯度保持特性:
设输入信号为
p
p
p,它的的base部分为
q
q
q,细节部分为
d
=
p
−
q
d=p-q
d=p−q,在
I
=
p
I=p
I=p时,
a
k
=
σ
k
2
σ
k
2
+
ϵ
<
1
a_k=\frac{\sigma_k^2}{\sigma_k^2+\epsilon}<1
ak=σk2+ϵσk2<1
那么
∂
x
d
=
∂
x
p
−
∂
x
q
=
(
1
−
a
k
)
∂
x
p
\partial_x d = \partial_x p - \partial_x q = (1-a_k)\partial_x p
∂xd=∂xp−∂xq=(1−ak)∂xp
这说明细节的梯度方向和原始信号的梯度方向一致,不会出现梯度方向反转。
上图中bilateral filter的细节部分出现了明显的梯度反转,而guided filter则保持梯度方向不变。这反应在图像上就是在边缘部分,一个有或多或少的振铃现象,另一个则能够避免这样的现象出现。
guide filter面对三位彩色图像的情形也很容易推广,在这里就不再赘述了。
这里补充一下为什么在建模的时候加入
L
2
L^2
L2范数正则化:
很多做过病态反问题的人给出的回答时,正则化的引入可以带来更稳定的数值解,而不至于在输入引入很小的扰动时,数值解很大地偏离了理论解。
做模式识别的人给出的回答是正则化的引入可以防止过拟合,给训练系统更好的泛化能力。在前面的建模部分,也分析了guided filter在指导图像和输入图像一致时,
L
2
L^2
L2范数正则化在一定程度上防止了过拟合情形的出现,下面给出
L
2
L^2
L2范数正则化防止过拟合的理论依据。
假定最优化模型已经建立,最优化目标函数为:
J
(
ω
;
X
,
y
)
J(\omega;X,y)
J(ω;X,y),给目标函数加入
L
2
L^2
L2范数正则项
∣
∣
ω
∣
∣
=
α
2
ω
T
ω
||\omega||=\frac{\alpha}{2}\omega^T\omega
∣∣ω∣∣=2αωTω,新的目标函数为:
J
n
e
w
(
ω
;
X
,
y
)
=
∇
ω
J
(
ω
;
X
,
y
)
+
α
ω
J_{new}(\omega;X,y)=\nabla_\omega J(\omega;X,y)+\alpha\omega
Jnew(ω;X,y)=∇ωJ(ω;X,y)+αω
对其求梯度,有
∇
ω
J
n
e
w
(
ω
;
X
,
y
)
=
∇
ω
J
(
ω
;
X
,
y
)
+
α
ω
\nabla_{\omega}J_{new}(\omega;X,y)=\nabla_{\omega}J(\omega;X,y)+\alpha\omega
∇ωJnew(ω;X,y)=∇ωJ(ω;X,y)+αω
对于
ω
⋆
=
a
r
g
m
i
n
ω
J
(
ω
;
X
,
y
)
\omega^{\star}=arg\mathop{min}\limits_{\omega}J(\omega;X,y)
ω⋆=argωminJ(ω;X,y)现在我们将多元函数
J
(
ω
;
X
,
y
)
J(\omega;X,y)
J(ω;X,y)在
ω
s
t
a
r
\omega^{star}
ωstar做一个二阶的泰勒近似,于是有:
J
~
(
ω
)
=
J
(
ω
⋆
)
+
1
2
(
ω
−
ω
⋆
)
T
H
(
ω
−
ω
⋆
)
\tilde{J}(\omega)=J(\omega^{\star})+\frac{1}{2}(\omega-\omega^{\star})^TH(\omega-\omega^{\star})
J~(ω)=J(ω⋆)+21(ω−ω⋆)TH(ω−ω⋆)
这里H为J的Hessian矩阵,对其求偏导数,没有梯度项时因为极点值必要条件:梯度在极点为零,有
∇
ω
J
~
(
ω
)
=
H
(
ω
−
ω
⋆
)
\nabla_{\omega}\tilde{J}(\omega)=H(\omega-\omega^{\star})
∇ωJ~(ω)=H(ω−ω⋆)
在极点值处,显然上式为零,现在考虑加入
L
2
L^2
L2范数正则项,
α
ω
+
H
(
ω
−
ω
⋆
)
=
0
\alpha\omega+H(\omega-\omega^{\star})=0
αω+H(ω−ω⋆)=0
(
H
+
α
I
)
ω
=
H
ω
⋆
(H+\alpha I)\omega=H\omega^{\star}
(H+αI)ω=Hω⋆
ω
=
(
H
+
α
I
)
−
1
ω
⋆
\omega=(H+\alpha I)^{-1}\omega^{\star}
ω=(H+αI)−1ω⋆
在
α
\alpha
α很接近0时,此时的
ω
\omega
ω和没有正则项的极值点很接近,那么
α
\alpha
α逐渐增大呢?
由于Hessian矩阵时一个实的对称矩阵,因此可以对其做正交分解,即存在正交矩阵Q和对角矩阵
Λ
\Lambda
Λ使得
H
=
Q
Λ
Q
T
H=Q\Lambda Q^T
H=QΛQT,于是有
ω
=
(
Q
Λ
Q
T
+
α
I
)
−
1
Q
Λ
Q
T
ω
⋆
=
[
Q
(
Λ
+
α
I
)
Q
T
]
−
1
Q
Λ
Q
T
ω
⋆
=
Q
(
Λ
+
α
I
)
−
1
Q
T
Q
Λ
Q
T
ω
⋆
=
Q
(
Λ
+
α
I
)
−
1
Λ
Q
T
ω
⋆
\begin{aligned} \omega & = (Q\Lambda Q^T + \alpha I)^{-1}Q\Lambda Q^T \omega^{\star} \\ & = [Q(\Lambda+\alpha I)Q^T]^{-1}Q\Lambda Q^T\omega^{\star} \\ & = Q(\Lambda+\alpha I)^{-1}Q^TQ\Lambda Q^T \omega^{\star} \\ & = Q(\Lambda+\alpha I)^{-1}\Lambda Q^T\omega^{\star} \\ \end{aligned}
ω=(QΛQT+αI)−1QΛQTω⋆=[Q(Λ+αI)QT]−1QΛQTω⋆=Q(Λ+αI)−1QTQΛQTω⋆=Q(Λ+αI)−1ΛQTω⋆
(
Λ
+
α
I
)
−
1
Λ
=
(
λ
1
+
α
λ
2
+
α
⋱
λ
n
+
α
)
−
1
(
λ
1
λ
2
⋱
λ
n
)
=
(
λ
1
λ
1
+
α
λ
2
λ
2
+
α
⋱
λ
n
λ
n
+
α
)
\begin{aligned} (\Lambda+\alpha I)^{-1}\Lambda &= \begin{pmatrix} \lambda_1+\alpha & & & \\ & \lambda_2+\alpha & & \\ & & \ddots & \\ & & & \lambda_n+\alpha \\ \end{pmatrix}^{-1} \begin{pmatrix} \lambda_1 & & & \\ & \lambda_2 & & \\ & & \ddots & \\ & & & \lambda_n \\ \end{pmatrix} \\ &= \begin{pmatrix} \frac{\lambda_1}{\lambda_1+\alpha} & & & \\ & \frac{\lambda_2}{\lambda_2+\alpha} & & \\ & & \ddots & \\ & & & \frac{\lambda_n}{\lambda_n+\alpha} \\ \end{pmatrix} \end{aligned}
(Λ+αI)−1Λ=⎝⎜⎜⎛λ1+αλ2+α⋱λn+α⎠⎟⎟⎞−1⎝⎜⎜⎛λ1λ2⋱λn⎠⎟⎟⎞=⎝⎜⎜⎛λ1+αλ1λ2+αλ2⋱λn+αλn⎠⎟⎟⎞
这说明
α
\alpha
α对特征值起到了衰减调制作用,远小于
α
\alpha
α的特征值,在
α
\alpha
α的调制下几乎不能对系统特征起到作用,而想法,在
α
\alpha
α的调制下保留了那些相对于
α
\alpha
α同一数量级甚至更高数量级的特征。这才是
L
2
L^2
L2正则化得以能够进行繁华的理论原因。这里的
ω
\omega
ω就是guided filter滤波器中的
a
k
a_k
ak,
α
\alpha
α即为guided filter中的
ϵ
\epsilon
ϵ。
到这里权重调制的作用已经很清晰了,可能有的读者线性代数功底不够,更进一步完善一下细节。
记
Q
=
[
q
1
,
q
2
,
⋯
,
q
n
]
Q=[q_1,q_2,\cdots,q_n]
Q=[q1,q2,⋯,qn],分量为列向量,那么
Q
T
=
[
q
1
,
q
2
,
⋯
,
q
n
]
T
=
Q^T=[q_1,q_2,\cdots,q_n]^T=
QT=[q1,q2,⋯,qn]T=,代入
ω
\omega
ω中,有
ω = Q ( Λ + α I ) Q T ω ∗ = ( q 1 , q 2 , ⋯ , q n ) ( λ 1 λ 1 + α λ 2 λ 2 + α ⋱ λ n λ n + α ) ( q 1 T q 2 2 ⋮ q n 2 ) ω ∗ = ( ∑ i = 1 n λ i λ i + α q i q i T ) ∗ ω ∗ \begin{aligned} \omega & = Q(\Lambda+\alpha I)Q^T\omega^{*} \\ & = \begin{pmatrix} q_1,q_2,\cdots,q_n \end{pmatrix} \begin{pmatrix} \frac{\lambda_1}{\lambda_1+\alpha} & & & \\ & \frac{\lambda_2}{\lambda_2+\alpha} & & \\ & & \ddots & \\ & & & \frac{\lambda_n}{\lambda_n+\alpha} \end{pmatrix} \begin{pmatrix} q_1^T \\ q_2^2 \\ \vdots \\ q_n^2 \\ \end{pmatrix}\omega^{*} & = (\sum_{i=1}^{n}\frac{\lambda_i}{\lambda_i+\alpha}q_i q_i^T) * \omega^{*} \\ \end{aligned} ω=Q(Λ+αI)QTω∗=(q1,q2,⋯,qn)⎝⎜⎜⎛λ1+αλ1λ2+αλ2⋱λn+αλn⎠⎟⎟⎞⎝⎜⎜⎜⎛q1Tq22⋮qn2⎠⎟⎟⎟⎞ω∗=(i=1∑nλi+αλiqiqiT)∗ω∗
到这里就非常清晰了,如果 α \alpha α远大于某些特征值,那么这个值对应的权重为 1 1 + ∞ ≈ 0 \frac{1}{1+\infty}\approx 0 1+∞1≈0,对应的特征在正则项的调制下可以忽略不计,反之则该特征值对应的特征很强,对应的权重也很大,是主要特征。反映到guided filter中,就对应了 ϵ \epsilon ϵ对 a k a_k ak的调制作用,指导图像的 ω k \omega_k ωk图像块的方差就对应了这里的特征值 λ \lambda λ, ϵ / σ k 2 \epsilon / \sigma_k^2 ϵ/σk2的相对大小,就决定了对应的权重调制到什么程度。
2.基于matlab的简单实现
该部分仅仅从guided filter的原理层面对其进行matlab简单实现,笔者一直认为matlab只是验证算法正确性的工具,代码尽可能贴近原理,算法性能优化及性能对比还是以c/cpp等工程应用编程语言为准,其O(N)的快速算法这里不涉及。matlab自带的imfilter本身经过加速,用for循环进行计算反而会降低其速度。
为了方便和原理对比,这里再贴一下算法的伪代码描述:
单通道灰度图像实现
function q = guided_filter(I, p, r, epsilon)
% demo realization of guided filter
% just used to illustrate the principle of guided filter
w = fspecial('average', 2*r+1);
mean_I = imfilter(I, w);
mean_p = imfilter(p, w);
corr_I = imfilter(I.*I, w);
corr_Ip = imfilter(I.*p, w);
var_I = corr_I - mean_I .* mean_I;
cov_Ip = corr_Ip - mean_I .* mean_p;
a = cov_Ip ./ (var_I + epsilon);
b = mean_p - a .* mean_p;
mean_a = imfilter(a, w);
mean_b = imfilter(b, w);
q = mean_a .* I + mean_b;
end
参考文献:
- KaiMing He, Jian Sun and Xiaoou Tang, Guided Image Filtering, IEEE Trans on PAMI, Vol, No.6, June 2013, P1397-1409
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, Chap7 Regularization for Deep Learning, P231-234.