《A Closed-Form Solution to Natural Image Matting》【1】是作者:Anat Levin, Dani Lischinski, and Yair Weiss等人在2008年2月的一篇文章,它所用抠图的方法是文章《Semantic Soft Segmentation》(2018,来自MIT CSAIL的YAĞIZ AKSOY等人)的基础。
在文中,image matting(抠图)问题被归结为求解compositing equation:
I i = α i F i + ( 1 − α i ) B i ( 1 ) I_i=\alpha_i F_i + (1-\alpha_i)B_i \qquad(1) Ii=αiFi+(1−αi)Bi(1)
(1)式中 I i I_i Ii 是像素点,是已知的,未知数有: α i , F i , B i \alpha_i,F_i,B_i αi,Fi,Bi,其中 $ \alpha_i \in [0,1]$ 表示透明度, F i , B i F_i,B_i Fi,Bi 分别为前景颜色和背景颜色。
(1)是一个严重的欠约束的方程组:假如图像有N个像素点,则可以列出N个方程,但有3N个未知数。
为求解抠图所用模板—— α \mathbf \alpha α ,它是矢量,每一个像素对应它的一个元素 α i \alpha_i αi,如图1和图2:
图1、 原图
图2 、 α \alpha α 模板
为求 α \alpha α 模板,需要给公式(1)添加一些约束:
1、用户给出trimap(三区标注图,图中标签有三种:Foreground、Background、Unknown),或手动粗略(Scribbles)地指出前景与背景,Trimap实例如下图所示:
图3、 白色为前景区域、黑色为背景区域、灰色为未知区域
图4、Scribbles图,白色为前景,黑色为背景,中间部分为未知区域
2、假设:在一个小的窗口(window,用w表示)中,前景(FG)与背景(BG)是一个常数,分别为F和B,于是(1)式可以转换成为:
I i ≈ α i F + ( 1 − α i ) B ∀ i ∈ w ≈ α i ( F − B ) + B ⇒ α i ≈ 1 F − B I i − B F − B L e t a = 1 F − B , b = − B F − B s o α i ≈ a I i + b ( 2 ) I_i \approx \alpha_i F + (1-\alpha_i)B \quad \forall i \in w \\ \approx \alpha_i(F-B) + B \\ \Rightarrow \alpha_i \approx \frac {1}{F-B} I_i - \frac {B}{F-B} \\ Let \quad a=\frac {1}{F-B},b=-\frac {B}{F-B} \\ so \quad \alpha_i \approx a I_i+b \qquad(2) Ii≈αiF+(1−αi)B∀i∈w≈αi(F−B)+B⇒αi≈F−B1Ii−F−BBLeta=F−B1,b=−F−BBsoαi≈aIi+b(2)
此处的约等于“ ≈ \approx ≈”是因为假设了F和B是常数,由此引入的。
针对公式(2),该文章中有一段话是这样的:
为什么(2)式就 suggests 最小化这个代价函数(3)呢?
这是整篇文章的关键,是后续推导的基础,我的理解是这样的:
####一、对于一幅特定的图,前景区域和后景区域是确定的,对于同一个窗体,前景颜色是一个确定的值,整个窗体取同一个值,背景颜色也是如此。
假设一个window是3*3矩阵,有四种情况:
CASE 1: 该w都在Trimap的前景或背景中,则F和B以及 α i \alpha_i αi 都是已知的,这些像素可被认为是“约束点(Constraint Points)”,在前景中, α i = 1 , F = I i \alpha_i =1,F = I_i αi=1,F=Ii;若在背景中, α i = 0 , B = I i \alpha_i =0,B = I_i αi=0,B=Ii 。
CASE 2: 在w中,既有B约束点,又有F约束点,则F和B已知,由(2)构成的方程组与未知的 α i \alpha_i αi的个数相同,可有唯一解。
CASE 3: 在w中,只有F约束点(或B约束点)和U点(Unknown Pixel),则未知变量数量比方程式数量多1,有无限多解。
CASE 4: 在w中,只有U点,则未知数数量比方程式数量多2,没有唯一解。
若我们的滑动窗从CASE _1和CASE_2开始移动,会出现CASE_3,然后出现CASE_4。
如果在CASE_3中,我们为window中任一个U点(像素i),设定 α i \alpha_i αi值,则CASE_3方程组有唯一解。当窗口从CASE_3进入CASE_4时,若前面CASE_3的点都已经确定,则此时CASE_4的window的F和B也已经确定(来自上一次滑动窗口),因而也可求出所有的点的 α i , F , B \alpha_i,F,B αi,F,B。如此F和B信息可以通过新的窗口传递下去,最后可计算出所有的点的透明度 α \alpha α 值。
#####观察上述迭代过程,矢量 α m \alpha^m αm会在迭代过程中发生变化。这是因为我们在计算一个窗体 w i w_i wi(以像素i为中心的window)的 ( α , F i , B i ) (\alpha , F_i, B_i) (α,Fi,Bi) 时,认为 F i F_i Fi和 B i B_i Bi是常数,由上一个滑动窗继承过来,然而若滑动的路径不同,即使是同一点上算出的 ( α i , F i , B i ) (\alpha_i , F_i, B_i) (αi,Fi,Bi)也可能不同。随机游动,产生了随机序列 α m \alpha^m αm。
这是一个马尔可夫过程,滑动窗口随机游走,每滑动一次,计算一次 α \alpha α,用 α m \alpha^m αm表示。如果输入图片有唯一最优抠图(人能够将所要前景抠图出来),则存在收敛值,随机游动得到的 α m \alpha^m αm最后可以稳定下来。因为 α \alpha α所处空间是完备空间,因而存在柯西序列性质,则:
lim m → ∞ α m = α ∗ ⇒ lim m → ∞ ∣ α m + 1 − α m ∣ = 0 ( 4 ) \lim_{m \to \infty} \alpha^m = \alpha^* \Rightarrow \lim_{m \to \infty} \vert \alpha^{m+1} - \alpha^m \vert = 0 \qquad(4) m→∞limαm=α∗⇒m→∞lim∣αm+1−αm∣=0(4)
可根据公式(4)设计随机游走方案(关键在于把
α m \alpha^m αm 看作是柯西序列
),只要迭代步数足够多,前后两次迭代所得的矢量距离就会趋向0,此时所得矢量 α m \alpha^m αm 便是最优 α ∗ \alpha^* α∗。这样的算法前人已经提出,也可取得较好的抠图效果,但不足之处是速度太慢,这是所有MonteCarlo方法都具有的。
透明度收敛,即前景与背景是确定的,反之亦然。
####二、问题归结为求 α \alpha α 二次型的凸优化
【1】文最突出的贡献是给出最优 α ∗ \alpha^* α∗ 解析解,不需要经多次迭代就可得到。思想是这样的:
既然矢量 α m \alpha^m αm 存在最优,令像素 i i i上的透明度最优值为 α i \alpha_i αi,根据公式(2)得到它的一个估计值: a j I i + b j = α i ^ a_j I_i + b_j = \hat{\alpha_i} ajIi+bj=αi^,两者之间的距离定义为: ( α i − α i ^ ) 2 = ( α i − a j I i − b j ) 2 (\alpha_i- \hat{\alpha_i})^2 = (\alpha_i - a_j I_i - b_j)^2 (αi−αi^)2=(αi−ajIi−bj)2。其中,j表示窗体j,i是窗体j中的像素。
若滑动窗体的size为 N × N N\times N N×N(例如:N=3),一个窗体有 N × N N\times N N×N个像素,亦即可计算 N × N N\times N N×N个估计值,这些估计值与最优 α ∗ \alpha^* α∗之间距离的和是公式(5),随着随机游动的次数增加,最后会收敛,并达到最小值。因此,公式(5)可作为一个窗体透明度与它的最优值之间距离:
D i s t a n c e w j = D ( w j ) = ∑ i ∈ w j ( α i − a j I i − b j ) 2 ( 5 ) Distance_{w_j} = D(w_j) =\sum_{i \in w_j} (\alpha_i - a_j I_i - b_j )^2 \qquad(5) Distancewj=D(wj)=i∈wj∑(αi−ajIi−bj)2(5)
以每个像素为中心点作window,窗体与像素一一对应,因而图像 I I I 估计的透明度与最优透明度之间总距离可以表述为所有窗体距离的和:
D i s t a n c e I = ∑ j ∈ I D ( w j ) = ∑ j ∈ I ∑ i ∈ w j ( α i − a j I i − b j ) 2 ( 6 ) Distance_{I} = \sum_{j \in I}D(w_j) = \sum_{j \in I} \sum_{i \in w_j} (\alpha_i - a_j I_i - b_j )^2 \qquad(6) DistanceI=j∈I∑D(wj)=j∈I∑i∈wj∑(αi−ajIi−bj)2(6)
公式(6)加上一个为平滑用的正则项( ϵ a j 2 \epsilon a_j^2 ϵaj2),就得到了公式(3)。问题:为什么(2)式就 suggests 最小化这个代价函数(3)呢?
得解。
####3、求透明度的解析解
公式(3)我们重新抄一次,如下:
J ( α , a , b ) = D i s t a n c e I = ∑ j ∈ I ( ∑ i ∈ w j ( α i − a j I i − b j ) 2 + ϵ a j 2 ) ( 3 ) J(\alpha,\mathbf a,\mathbf b) = Distance_{I} = \sum_{j \in I} \left(\sum_{i \in w_j} (\alpha_i - a_j I_i - b_j )^2 + \epsilon a_j^2 \right) \qquad(3)