【图像处理】-028 A Bayesian Approach to Digital Matting
抠像问题最开始从电影行业引入,在模拟摄像时代就有通过对模拟信号处理的方式进行抠像的处理办法和专利。1984年Thomas Porter和Tom Duff在《Compositing Digital Images》一文中,提出了alpha通道的概念并推导了前景和背景进行over操作时的组合图像结果像素值叠加公式。之后,微软Alvy Ray Smith推导了传统的绿幕或蓝幕抠像的数学原理,并提出了一种实现方式——对同一个目标同时拍摄两种背景下的图像,从而获得前景图像的真实颜色值和alpha值。但该方法也有弊端:(1)要求对同一目标在保持光照等因素不变的情况下获取两种背景颜色下的图像,普通技术方式难以实现。(2)算法的输入图像实质上是一种特殊要求的“自然图像”。
为了提高抠像算法的通用性,Yung-Yu Chuang,Brain Curless,David H.Salesin,Richard Szeliski等人在《A Bayesian Approach to Digital Matting》一文中,提出了基于贝叶斯理论的抠像算法。
文章目录
1 Background
1.1 概述
对于抠像问题,有matting equation:
(1)
C
=
α
F
+
(
1
−
α
)
B
C=\alpha F+(1-\alpha)B \tag{1}
C=αF+(1−α)B(1)
其中,
C
C
C表示组合之后的图像的颜色,
F
F
F表示组合之前的前景图像颜色,
B
B
B表示组合的背景颜色,
α
\alpha
α表示前景图像中对应像素的透明度,作为前景和背景颜色进行线性组合的系数。
对于Blue Screen Matting,其原理是拍摄前景目标在确定的背景上的图像,然后求解前景和透明度。这显然是一个欠约束问题,我们只有3个方程但是需要求解4个未知数。
(2)
R
c
=
α
R
f
+
(
1
−
α
)
R
b
G
c
=
α
G
f
+
(
1
−
α
)
G
b
B
c
=
α
B
f
+
(
1
−
α
)
B
b
\begin{aligned} R_c&=&\red{\alpha} \red{R_f}+(1-\red{\alpha})R_b \\\\ G_c&=&\red{\alpha} \red{G_f}+(1-\red{\alpha})G_b \\\\ B_c&=&\red{\alpha} \red{B_f}+(1-\red{\alpha})B_b \end{aligned} \tag{2}
RcGcBc===αRf+(1−α)RbαGf+(1−α)GbαBf+(1−α)Bb(2)
其中,
(
R
c
,
G
c
,
B
c
)
(R_c,G_c,B_c)
(Rc,Gc,Bc),
(
R
b
,
G
b
,
B
b
)
(R_b,G_b,B_b)
(Rb,Gb,Bb)均为已知,
(
R
f
,
G
f
,
B
f
,
α
)
(R_f,G_f,B_f,\alpha)
(Rf,Gf,Bf,α)四个参数为未知数。为了求解这一问题,需要添加额外的约束条件。
Mishima等人提出了一种解法。对于所有的背景采样点,计算这些采样点的最小包围,中心位置为
B
‾
\overline{B}
B,然后对所有前景采样点,同样计算其最小包围。对于给定的组合后颜色
C
C
C,通过
B
‾
\overline{B}
B和
C
C
C做射线,分别也前景包围线、背景包围线相交于
F
F
F、
B
B
B点,那么
(3)
α
=
B
C
B
F
\alpha = \frac{BC}{BF} \tag{3}
α=BFBC(3)
这种解法的问题有:
- (1)需要在RGB空间中分别计算所有前景像素和背景像素的最小包围圈,即使简化成最小包围球体,计算量也较大;
- (2)处理结果依赖初始状态下对前景和背景的划分。
图片来自参考文献[1]
对于另一种特殊情况,在拍摄前景目标的图像之前,先拍摄一张只包含背景的图片,然后通过对含有前景的图像与背景图的差的阈值处理,可以将透明度值设置成0或者1,在对其进行模糊处理。这种方法称为“different matting”。这种方法的局限之处在于容易产生误差以及锯齿。
1.2 Trimap
Trimap是在matting问题中常用的一种先验知识,该图大小与输入图像一致,分为确定的前景、确定的背景和不确定区域,分别用不同的值表示这些区域。常用的一种值的表示方法是:
0表示确定的背景。255表示确定的前景区域。128表示不确定区域。
1.3 Knockout方法
Knockout方法,在给定Trimap之后,通过对前景区域和背景区域的不断外推,解决所有不确定区域的像素,得到最终的结果。其工作步骤如下:
- (1)对给定的不确定区域内的一点C,计算所有前景区域的边缘像素与C的加权均值,其中,离C最近的点的权值为1,最小距离为 l l l.当距离达到 2 l 2l 2l时权值衰减到0,计算这一加权和,得到前景 F F F;
- (2)对背景区域使用同样的方法,得到背景值 B ′ B^{'} B′;
- (3)计算 F B ′ → \overrightarrow{FB^{'}} FB′,以及过 B ′ B' B′点的以 F B ′ → \overrightarrow{FB^{'}} FB′为法向量的平面 S S S;
- (4)将 C C C投影到 S S S得到点 B B B;
- (5)计算 α \alpha α, (4) α = f ( C ) − f ( B ) f ( F ) − f ( B ) \alpha=\frac{f(C)-f(B)}{f(F)-f(B)} \tag{4} α=f(F)−f(B)f(C)−f(B)(4),其中 f ( ⋅ ) f(\cdot) f(⋅)表示向坐标轴的投影操作。
图片来自参考文献[1]
2 Bayesian Method
2.1 Maximum A Posteriori
最大后验估计考量的是事件
X
X
X已经发生的情况下,哪个
θ
\theta
θ发生的概率最大。
(5)
P
(
θ
∣
X
)
=
P
(
θ
)
P
(
X
∣
θ
)
P
(
X
)
P(\theta |X)=\frac{P(\theta)P(X|\theta)}{P(X)} \tag{5}
P(θ∣X)=P(X)P(θ)P(X∣θ)(5)
2.2 Bayesian framework
在融合方程中,已知的只有C,而F、B和α都是未知的。于是可以从条件概率的角度去考虑这个问题,根据MAP理论,即给定C时,F、B和α的联合概率应为
(6)
P
(
F
,
B
,
α
∣
C
)
=
P
(
C
∣
F
,
B
,
α
)
×
P
(
F
,
B
,
α
)
/
P
(
C
)
P(F,B,\alpha | C) = P(C|F,B,\alpha)\times P(F,B,\alpha)/P(C) \tag{6}
P(F,B,α∣C)=P(C∣F,B,α)×P(F,B,α)/P(C)(6)
将融合问题转化为求以下函数的最大值:
KaTeX parse error: Expected 'EOF', got '\argmax' at position 2: \̲a̲r̲g̲m̲a̲x̲_{F,B,\alpha}P(…
由于
F
,
B
,
α
F,B,\alpha
F,B,α为相互独立的随机变量,因此
(8)
P
(
F
,
B
,
α
)
=
P
(
F
)
P
(
B
)
P
(
α
)
P(F,B,\alpha)=P(F)P(B)P(\alpha) \tag{8}
P(F,B,α)=P(F)P(B)P(α)(8)
KaTeX parse error: Expected 'EOF', got '\argmax' at position 13: \therefore \̲a̲r̲g̲m̲a̲x̲_{F,B,\alpha}P(…
通过对数变换
L
(
⋅
)
L(\cdot)
L(⋅)将概率的乘法变成加法,同时由于
L
(
C
)
L(C)
L(C)为常数,对于求解最大后验估计没有影响,可以忽略,
KaTeX parse error: Expected 'EOF', got '\argmax' at position 13: \therefore \̲a̲r̲g̲m̲a̲x̲_{F,B,\alpha}P(…
通过式(10)将最终融合后颜色为
C
C
C时,对前景
F
F
F,背景
B
B
B,前景
α
\alpha
α的最大后验估计问题转换为求4项之和的最大时的参数估计。
2.2.1 L ( C ∣ F , B , α ) L(C|F,B,\alpha) L(C∣F,B,α)
取
(11)
L
(
C
∣
F
,
B
,
α
)
=
−
∣
∣
C
−
α
F
−
(
1
−
α
)
B
∣
∣
2
2
σ
c
2
L(C|F,B,\alpha)=-\frac{||C-\alpha F-(1-\alpha)B||^2}{2\sigma_c^{2}} \tag{11}
L(C∣F,B,α)=−2σc2∣∣C−αF−(1−α)B∣∣2(11)
表示对混合后颜色的估计误差符合均值
C
‾
=
α
F
+
(
1
−
α
)
B
\overline{C}=\alpha F+(1-\alpha)B
C=αF+(1−α)B方差为
σ
c
\sigma_c
σc的高斯分布。
2.2.2 L ( F ) L(F) L(F)
计算加权均值颜色
F
‾
\overline{F}
F和加权协方差矩阵
∑
F
\sum_{F}
∑F:
(12)
F
‾
=
1
W
∑
i
∈
N
w
i
F
i
\overline{F}=\frac{1}{W}\sum_{i \in N}w_{i}F_{i} \tag{12}
F=W1i∈N∑wiFi(12)
(13)
∑
F
=
1
W
∑
i
∈
N
w
i
(
F
i
−
F
‾
)
(
F
i
−
F
‾
)
T
\sum_{F}=\frac{1}{W}\sum_{i \in N}w_{i}(F_{i}-\overline{F})(F_{i}-\overline{F})^{T} \tag{13}
F∑=W1i∈N∑wi(Fi−F)(Fi−F)T(13)
其中,
w
i
=
α
i
2
g
i
w_i=\alpha_{i}^{2}g_{i}
wi=αi2gi,
g
i
g_{i}
gi为方差为8的空间高斯分布。
(14)
L
(
F
)
=
−
(
F
−
F
‾
)
T
∑
F
−
1
(
F
−
F
‾
)
2
L(F)=-\frac{(F-\overline{F})^{T}\sum_{F}^{-1}(F-\overline{F})}{2} \tag{14}
L(F)=−2(F−F)T∑F−1(F−F)(14)
2.2.3 L ( B ) L(B) L(B)
对于
B
B
B,处理方法和
F
F
F一致,不过计算
w
i
w_i
wi时用
1
−
α
1-\alpha
1−α代替
α
\alpha
α
(15)
B
‾
=
1
W
∑
i
∈
N
w
i
B
i
\overline{B}=\frac{1}{W}\sum_{i \in N}w_{i}B_{i} \tag{15}
B=W1i∈N∑wiBi(15)
(16)
∑
B
=
1
W
∑
i
∈
N
w
i
(
B
i
−
B
‾
)
(
B
i
−
B
‾
)
T
\sum_{B}=\frac{1}{W}\sum_{i \in N}w_{i}(B_{i}-\overline{B})(B_{i}-\overline{B})^{T} \tag{16}
B∑=W1i∈N∑wi(Bi−B)(Bi−B)T(16)
其中,
w
i
=
(
1
−
α
i
)
2
g
i
w_i=(1-\alpha_{i})^{2}g_{i}
wi=(1−αi)2gi,
g
i
g_{i}
gi为方差为8的空间高斯分布。
(17)
L
(
B
)
=
−
(
B
−
B
‾
)
T
∑
B
−
1
(
B
−
B
‾
)
2
L(B)=-\frac{(B-\overline{B})^{T}\sum_{B}^{-1}(B-\overline{B})}{2} \tag{17}
L(B)=−2(B−B)T∑B−1(B−B)(17)
2.2.4 L ( α ) L(\alpha) L(α)
在这里,我们认为 L ( α ) L(\alpha) L(α)为常数。
2.3 求解
令KaTeX parse error: Expected 'EOF', got '\argmax' at position 3: H=\̲a̲r̲g̲m̲a̲x̲_{F,B,\alpha}P(…,那么
KaTeX parse error: Expected 'EOF', got '\argmax' at position 4: H=\̲a̲r̲g̲m̲a̲x̲_{F,B,\alpha}L(…
由于
L
(
C
∣
F
,
B
,
α
)
L(C|F,B,\alpha)
L(C∣F,B,α)中含有非完全平方项,因此,在求解时分解成两步。
2.3.1 求解 F F F、 B B B
分别求
H
H
H对
F
F
F、
B
B
B的偏导数,然后令偏导数等于0,得到
(19)
∂
H
∂
F
=
∂
∂
F
[
−
∣
∣
C
−
α
F
−
(
1
−
α
)
B
∣
∣
2
2
σ
c
2
]
+
∂
∂
F
[
−
(
F
−
F
‾
)
T
∑
F
−
1
(
F
−
F
‾
)
2
]
=
2
I
α
(
C
−
α
F
−
(
1
−
α
)
B
)
2
σ
c
2
−
2
∑
F
−
1
(
F
−
F
‾
)
2
=
I
α
(
(
C
−
α
F
−
(
1
−
α
)
B
)
σ
c
2
−
∑
F
−
1
(
F
−
F
‾
)
\begin{aligned} \frac{\partial{H}}{\partial{F}}&=&\frac{\partial}{\partial{F}}[-\frac{||C-\alpha F-(1-\alpha)B||^2}{2\sigma_c^{2}}]+\frac{\partial}{\partial{F}}[-\frac{(F-\overline{F})^{T}\sum_{F}^{-1}(F-\overline{F})}{2}] \\\\ &=&\frac{2I\alpha(C-\alpha F-(1-\alpha)B)}{2\sigma_c^2}-\frac{2\sum_{F}^{-1}(F-\overline{F})}{2} \\\\ &=& \frac{I\alpha((C-\alpha F-(1-\alpha)B)}{\sigma_c^2}-\sum_{F}^{-1} (F-\overline{F}) \end{aligned} \tag{19}
∂F∂H===∂F∂[−2σc2∣∣C−αF−(1−α)B∣∣2]+∂F∂[−2(F−F)T∑F−1(F−F)]2σc22Iα(C−αF−(1−α)B)−22∑F−1(F−F)σc2Iα((C−αF−(1−α)B)−F∑−1(F−F)(19)
(19)
∂
H
∂
B
=
∂
∂
B
[
−
∣
∣
C
−
α
F
−
(
1
−
α
)
B
∣
∣
2
2
σ
c
2
]
+
∂
∂
B
[
−
(
B
−
B
‾
)
T
∑
B
−
1
(
B
−
B
‾
)
2
]
=
2
I
(
1
−
α
)
(
C
−
α
F
−
(
1
−
α
)
B
)
2
σ
c
2
−
2
∑
F
−
1
(
B
−
B
‾
)
2
=
I
(
1
−
α
)
(
(
C
−
α
F
−
(
1
−
α
)
B
)
σ
c
2
−
∑
B
−
1
(
B
−
B
‾
)
\begin{aligned} \frac{\partial{H}}{\partial{B}}&=&\frac{\partial}{\partial{B}}[-\frac{||C-\alpha F-(1-\alpha)B||^2}{2\sigma_c^{2}}]+\frac{\partial}{\partial{B}}[-\frac{(B-\overline{B})^{T}\sum_{B}^{-1}(B-\overline{B})}{2}] \\\\ &=&\frac{2I(1-\alpha)(C-\alpha F-(1-\alpha)B)}{2\sigma_c^2}-\frac{2\sum_{F}^{-1}(B-\overline{B})}{2} \\\\ &=& \frac{I(1-\alpha)((C-\alpha F-(1-\alpha)B)}{\sigma_c^2}-\sum_{B}^{-1} (B-\overline{B}) \end{aligned} \tag{19}
∂B∂H===∂B∂[−2σc2∣∣C−αF−(1−α)B∣∣2]+∂B∂[−2(B−B)T∑B−1(B−B)]2σc22I(1−α)(C−αF−(1−α)B)−22∑F−1(B−B)σc2I(1−α)((C−αF−(1−α)B)−B∑−1(B−B)(19)
令$ \frac{\partial{H}}{\partial{F}}=0
,
,
,\frac{\partial{H}}{\partial{B}}=0$,可得
(20)
{
I
α
(
(
C
−
α
F
−
(
1
−
α
)
B
)
σ
c
2
−
∑
F
−
1
(
F
−
F
‾
)
=
0
I
(
1
−
α
)
(
(
C
−
α
F
−
(
1
−
α
)
B
)
σ
c
2
−
∑
B
−
1
(
B
−
B
‾
)
=
0
\begin{cases} \frac{I\alpha((C-\alpha F-(1-\alpha)B)}{\sigma_c^2}-\sum_{F}^{-1} (F-\overline{F})& = &0 \\\\ \frac{I(1-\alpha)((C-\alpha F-(1-\alpha)B)}{\sigma_c^2}-\sum_{B}^{-1} (B-\overline{B}) &=&0 \end{cases} \tag{20}
⎩⎪⎨⎪⎧σc2Iα((C−αF−(1−α)B)−∑F−1(F−F)σc2I(1−α)((C−αF−(1−α)B)−∑B−1(B−B)==00(20)
(21)
{
(
∑
F
−
1
+
I
α
2
σ
2
)
F
+
I
α
(
1
−
α
)
σ
2
B
=
∑
F
−
1
F
‾
+
I
α
C
σ
2
I
α
(
1
−
α
)
σ
2
F
+
(
∑
B
−
1
+
I
(
1
−
α
)
2
σ
c
2
)
B
=
∑
B
−
1
B
‾
+
I
(
1
−
α
)
α
σ
c
2
\begin{cases} (\sum_{F}^{-1}+\frac{I\alpha^{2}}{\sigma^2})F+\frac{I\alpha(1-\alpha)}{\sigma^2}B& = & \sum_{F}^{-1}\overline{F}+\frac{I\alpha C}{\sigma^2}\\\\ \frac{I\alpha(1-\alpha)}{\sigma^2}F+(\sum_{B}^{-1}+\frac{I(1-\alpha)^{2}}{\sigma_c^2})B &=&\sum_{B}^{-1} \overline{B}+\frac{I(1-\alpha)\alpha}{\sigma_c^2} \end{cases} \tag{21}
⎩⎪⎨⎪⎧(∑F−1+σ2Iα2)F+σ2Iα(1−α)Bσ2Iα(1−α)F+(∑B−1+σc2I(1−α)2)B==∑F−1F+σ2IαC∑B−1B+σc2I(1−α)α(21)
(22)
[
∑
F
−
1
+
I
α
2
σ
2
I
α
(
1
−
α
)
σ
2
I
α
(
1
−
α
)
σ
2
∑
B
−
1
+
I
(
1
−
α
)
2
σ
c
2
]
[
F
B
]
=
[
∑
F
−
1
F
‾
+
I
α
C
σ
2
∑
B
−
1
B
‾
+
I
(
1
−
α
)
α
σ
c
2
]
\begin{bmatrix} \sum_{F}^{-1}+\frac{I\alpha^{2}}{\sigma^2}&\frac{I\alpha(1-\alpha)}{\sigma^2} \\ \frac{I\alpha(1-\alpha)}{\sigma^2}&\sum_{B}^{-1}+\frac{I(1-\alpha)^{2}}{\sigma_c^2} \end{bmatrix} \begin{bmatrix} F\\ B \end{bmatrix}= \begin{bmatrix} \sum_{F}^{-1}\overline{F}+\frac{I\alpha C}{\sigma^2} \\ \sum_{B}^{-1} \overline{B}+\frac{I(1-\alpha)\alpha}{\sigma_c^2} \end{bmatrix} \tag{22}
[∑F−1+σ2Iα2σ2Iα(1−α)σ2Iα(1−α)∑B−1+σc2I(1−α)2][FB]=[∑F−1F+σ2IαC∑B−1B+σc2I(1−α)α](22)
对于RGB三个通道,可以形成6个方程,这里,将
α
\alpha
α视为常数,因此可以解出
F
F
F,
B
B
B.
2.3.2 求解 α \alpha α
求解
α
\alpha
α时,将
F
F
F,
B
B
B视为常数,因此,
(23)
α
=
(
C
−
B
)
⋅
(
F
−
B
)
∣
∣
F
−
B
∣
∣
2
\alpha = \frac{(C-B)\cdot (F-B)}{||F-B||^2} \tag{23}
α=∣∣F−B∣∣2(C−B)⋅(F−B)(23)
3 总结
- (1) 将融合问题转化为求解最大后验估计问题;
- (2) 通过对数操作将概率连乘转化为加法操作;
- (3) 合理的设计各分量的L函数;
- (4) 通过偏导操作可以求解部分参数;
- (5) 本算法实现时有多次循环迭代过程,计算量大,实际算法执行效率较低,无法达到实时操作。
参考文献
- (1) Yung-Yu Chuang, Brian Curless, David H. Salesin, Richard Szeliski, A Bayesian Approach to Digital Matting