记引导图为 G G G,被滤波的图像为 X X X,输出图像为 Y Y Y,导向图滤波的目标就是使得原始的输入 X X X和输出 Y Y Y尽可能相同,同时纹理部分与引导图 G G G相似。
对于目标1:输入图像
X
X
X和输出图像
Y
Y
Y尽可能相似,可以用公式描述为:
min
∑
i
∈
W
k
∣
X
i
−
Y
i
∣
2
(1)
\min\sum_{i \in W_k}|X_i-Y_i|^2 \tag{1}
mini∈Wk∑∣Xi−Yi∣2(1)
对于目标2:输出图像
Y
Y
Y的纹理和引导图
G
G
G尽可能相似,用公式描述为:
∇
Y
=
a
∇
G
(2)
\nabla Y=a\nabla G \tag{2}
∇Y=a∇G(2)
上式中如果Y为单通道图像,
G
G
G为多通道,那么
a
a
a为一个向量;如果
Y
Y
Y和
G
G
G通道数相同,那么
a
a
a为标量或者对角矩阵。显然,
a
a
a的值越小,最后的输出图像也就越平滑。
对于目标2,假设参数
a
a
a在小范围内变化较小,近似认为是常数,可以对等式两边取定积分,从而得到:
Y
=
a
G
+
b
(3)
Y=aG+b \tag{3}
Y=aG+b(3)
上式中参数
a
a
a和
b
b
b实际是与位置有关的变量,可以考虑在一个小窗口
W
k
W_k
Wk内其为常数
a
k
a_k
ak和
b
k
b_k
bk,将上式带人到目标1中可以得到最终的优化形式为:
*
a
r
g
m
i
n
a
,
b
∑
i
∈
W
k
(
∣
G
i
T
a
k
+
b
k
−
X
i
∣
2
+
ε
2
a
k
2
)
(4)
\operatorname*{argmin}_{a,b}\,\sum_{i\in W_k}(|G_i^Ta_k+b_k-X_i|^2+\varepsilon^2a_k^2) \tag{4}
*argmina,bi∈Wk∑(∣GiTak+bk−Xi∣2+ε2ak2)(4)
上式中的
ε
\varepsilon
ε是一个用于防止参数
a
a
a过小而引入的常数
对变量
a
,
b
a,b
a,b分别求偏导得到:
∑
i
∈
W
k
(
G
i
(
G
i
T
a
k
+
b
k
−
X
i
)
+
ε
2
a
k
)
=
0
(5)
\qquad \sum_{i \in W_k}\left(G_i(G_i^Ta_k+b_k-X_i)+\varepsilon^2a_k\right)=0 \tag{5}
i∈Wk∑(Gi(GiTak+bk−Xi)+ε2ak)=0(5)
∑
i
∈
W
k
(
G
i
T
a
k
+
b
k
−
X
i
)
=
0
(6)
\sum_{i \in W_k}\left(G_i^Ta_k+b_k-X_i\right)=0 \tag{6}
i∈Wk∑(GiTak+bk−Xi)=0(6)
解得:
a
k
=
(
G
G
T
‾
−
G
ˉ
G
ˉ
T
+
ε
2
I
)
−
1
(
G
X
‾
−
G
ˉ
X
ˉ
)
(7)
a_k={\rm (\overline{GG^T}-\bar{G}\bar{G}^T+\varepsilon^2I)^{-1}(\overline{GX}-\bar{G}\bar{X})} \tag{7}
ak=(GGT−GˉGˉT+ε2I)−1(GX−GˉXˉ)(7)
b
k
=
X
ˉ
−
G
ˉ
T
a
k
(8)
b_k={\rm \bar{X}-\bar{G}^T}a_k \tag{8}
bk=Xˉ−GˉTak(8)
上式带有上划线的变量,表示在窗口 W k W_k Wk内求平均值,有时为了滤波结果更加平滑,可以在求出整张图像每个点处的 a k , b k a_k,b_k ak,bk后,分别对这两个参数进行均值滤波,得到:
a ˉ k = 1 ∣ W k ∣ ∑ i ∈ W k a i , b ˉ k = 1 ∣ W k ∣ ∑ i ∈ W k b i \bar{a}_k=\frac{1}{|W_k|}\sum_{i \in W_k}a_i,\qquad\qquad \bar{b}_k=\frac{1}{|W_k|}\sum_{i \in W_k}b_i aˉk=∣Wk∣1i∈Wk∑ai,bˉk=∣Wk∣1i∈Wk∑bi
最终的滤波公式为:
Y
=
a
ˉ
k
G
+
b
ˉ
k
(9)
Y=\bar{a}_kG+\bar{b}_k \; \tag{9}
Y=aˉkG+bˉk(9)
如果输入图像和导向图均为单通道,那么公式(7)(8)可以简化为:
a
k
=
G
X
‾
−
G
ˉ
X
ˉ
G
2
‾
−
G
ˉ
2
+
ε
2
=
c
o
v
(
G
,
X
)
σ
G
2
+
ε
2
(10)
a_k={\rm \frac{\overline{GX}-\bar{G}\bar{X}}{\overline{G^2}-\bar{G}^2+\varepsilon^2}=\frac{cov(G,X)}{\sigma_G^2+\varepsilon^2}} \tag{10}
ak=G2−Gˉ2+ε2GX−GˉXˉ=σG2+ε2cov(G,X)(10)
b k = X ˉ − G ˉ a k (11) b_k={\rm \bar{X}-\bar{G}}a_k \tag{11} bk=Xˉ−Gˉak(11)
如果导向图
G
G
G,和输入图像
X
X
X是同一个,那么不对
a
k
,
b
k
a_k,b_k
ak,bk做均值滤波的导向图滤波可以写为:
Y
=
σ
2
X
+
ε
2
X
‾
σ
2
+
ε
2
,
σ
2
=
X
2
‾
−
X
‾
2
(12)
Y=\frac{\sigma^2X+\varepsilon^2\overline{X}}{\sigma^2+\varepsilon^2} \,,\qquad\qquad \sigma^2=\overline{X^2}-\overline{X}^2 \tag{12}
Y=σ2+ε2σ2X+ε2X,σ2=X2−X2(12)