摘要
交互式数字抠图,基于有限的用户输入从图像中提取前景物体,是图像和视频处理中非常重要的任务。从计算机视觉角度,这个任务非常具有挑战性,因为它是一个病态问题,每个像素上都必须估计前景和背景的颜色,还有单通道颜色的前景不透明度(alpha磨砂)。当前的方法将估计严格限制在图像的一小部分,基于已知像素附近估计前景和背景颜色,或者用alpha估计反转前景和背景颜色迭代执行非线性估计。
本文提供了自然图像抠图闭合方案。我们从前景和背景颜色中推导出一个代价函数,在得到的表达式中可以消除前景和背景颜色在alpha通道上得到一个二次代价函数。这使得我们可以解等式的一个稀疏线性系统找到全局不透明alpha模糊。接着,对于闭合方程,分析稀疏矩阵的特征向量可以估计方案的特征,这与光谱图像风格算法中的矩阵非常接近。只需要用户非常少的输入,就可以在自然图像上得到高质量的抠图。
1 简介
自然图像抠图和合成,在图像和视频编辑中是至关重要的。图像抠图方法将图像I作为输入,是前景图像F和背景图像B的组合。第i个像素的颜色是对应前景颜色和背景颜色的组合:
其中αi是像素前景不透明读。在自然图像抠图中,等式1中右边所有量都是未知的。因此,对于一个3通道的彩色图像,每个像素有3个等式7个未知数。
显然,这是一个严重的欠约束问题,需要用户交互获得一个良好的抠图。最近的方法都需要用户提供一个成3的图像作为开始;一个例子如图1(e)所示。成3地图是一种硬性(通常是手绘)的分割,将图像分成3个区域:前景(白色),背景(黑色)和未知区域(灰色)。给定一个成3图像,这些方法通常要同时得到F,B和α。在实践中,这意味着要想获得一个好的结果,成3图像中的未知区域要尽可能地小。当然,成3图像方法通常很难处理像素混合部分,或者当前景物体有很多洞的时候,如论文15。在这样非常有挑战的情况下,经验和用户交互对构建一个成3的图像非常有必要,可以生成一个好的抠图。成3图像接口的另外一个问题是在图像上非常重要的部分用户很难对抠图产生影响:也就是像素混合的地方。
图1. (a)稀疏约束的图像:白色的笔刷是前景,黑色的笔刷是背景。在这样的稀疏输入图像中应用贝叶斯抠图会生成一个完全错误的抠图(b)。前景提取算法,如论文9,11,生成一个比较硬的分割(c)。从一个比较硬性的分割中自动生成的图片可能会丢掉精细的特征(d)。一个精确的手绘图像(e)会生成比较合理的抠图(f)。(图片来源于论文15)
本文提供了一种新的闭合形式方案用于从自然图像中提取alpha抠图。从前景和背景颜色F和B上的局部平滑中得到一个代价函数,从结果的表达式来看,可以消除F和B,生成一个α的二次代价函数。这种方法生成的alpha抠图是这个代价函数的全局最优,可以通过解稀疏线性方程组得到。既然,只需要直接计算α,而不需要估计F和B,也就需要很少的用户输入(比如一组稀疏的笔刷),足以提取高质量的抠图。然后,闭合形式公式可以通过检验稀疏矩阵的特征向量理解和预测方案的特征,和光谱图像分割中的矩阵非常相近。为了给这个方法提供强有力的理论基础,这些分析在应该往哪里放笔刷时给用户提供了非常有用的提示。
1.1 之前的工作
大部分现有自然图像抠图方法都要求输入图像处理成成3图片,将每个像素标记成前景,背景或未知。这些方法的目标就是要解组成方程组等式1的未知像素。这通常都是使用F和B的局部正则化,估计未知区域每个像素的值来处理。论文2 Corel KnockOut算法中,假设F和B是光滑的,基于已知前景和背景像素的加权平均进行估计(越近的像素权重越高)。有的算法,论文5和12,假设局部前景和背景服从一个相对简单的色彩分布。可能大部分成功的算法是贝叶斯抠图算法,如论文5,方向高斯分布的组合可以得到局部分布,估计合适的α,F和B得到这个分布。当前景和背景色彩分布不重叠,成3地图中的未知区域非常小的时候,这个方法非常好。图1(b)中所示,一组稀疏的约束可能会生成一个完全错误的抠图。相反,我们的方法使用F和B的特定平滑,不需要估计这些函数的值,直到磨砂部分被提取之后。
论文14的泊松抠图方法,也需要成3地图作为输入的一部分,用磨砂梯度场和Dirichlet边界求解泊松方程 计算混合区域的alpha磨砂。在全局泊松抠图方法中,磨砂梯度场用▽I/(F-B)近似估计,使用了等式1的梯度,忽略了F和B中的梯度。这样就可以找到磨砂,通过解一个方程就可以了,它的梯度与估计的磨砂梯度场非常相近。只要未知区域不足够平滑,生成的磨砂可能就不正确,另外,在磨砂梯度场应用交互式的局部操作以获得满意的方案。这种交互式的优化过程就是局部泊松抠图。应该可以看到,我们的方法在F和B上的要求更弱,但可以生成更精确的磨砂。
最近,提出了几种从背景中提取全景物体的成功方法,如论文3,9和11所示。两种方法都将简单的用户指定约束(比如,笔刷或者矩形)转换成最小分割问题。解决最小分割纹理生成一个硬性二值分割,而不是一个微弱的alpha磨砂(如图1(c))。硬性分割可以通过侵蚀转换成一个成3图片,但这可能还是会丢失一些细微的或模糊的特征,如图1(d)所示。尽管在硬边界附近的窄带上拟合一个参数化alpha特征进行边界抠图,但这更像是羽化而不是全alpha抠图,更宽的模糊区域是无法用这种方式来处理的。
我们的方法和论文7的彩色化方法,论文6的随机游走alpha抠图方法,非常相似。这两种方法最小化二次代价函数传递笔刷约束。这里我们采用了相似的策略,但我们的假设和代价函数进行了修改,以更好的适应抠图问题。
另一个基于笔刷接口的交互式抠图是论文15提出的。从表示少量背景和前景像素的笔刷开始,他们使用简单传递迭代地估计图像像素中的未知数。这个方法得到的结果令人印象深刻,但在使用非线性优化过程时,还是有缺点的,它可能会收敛到一个不同的局部最小值。
2 推导
为了更清楚地分析,先推导一个灰度图像的alpha抠图闭合形式方案。这个方案在2.1节会扩展到彩色图像中。
如之前提到的,抠图问题是一个严重的欠约束问题。因此,对F,B和/或α的假设是必要的。为了推导灰度图方案,我们假设F和B是每个像素附近小窗口上的近似常量。注意假设F和B局部平滑,并不意味着输入图像I是局部平滑的,α不连续意味着I不连续。这个假设,在2.1节会被放宽,这样就可以重写等式1,将α表示成图像I的线性函数:
其中,和w是小的图像窗口。这个线性松弛与之前论文17中所用的比较相似。我们的目标是找到α,a和b,最小化代价函数
其中wj是像素j附近的小窗口。
上面的代价函数包括a的一个正则化项。添加这个项的一个理由是数值稳定性。比如,如果图像是第j个窗口上的常量,没有先验信息,aj和bj并不能唯一确定。还有,最小化偏差的范数,方案会变成更平滑的α磨砂(aj=0意味着α是第j个窗口上的常量)。
在实现过程中,通常会使用3×3像素的窗口。在每个像素周围放一个窗口,等式3中的窗口wj会重叠在一起。这种属性使得相邻像素间的信息重叠。代价函数是α,a和b的二次函数,对一个有N个像素的图像,有3N个未知数。幸运的是,如下所示,a和b可以从等式3中消除,剩下只有N个未知数的二次代价函数:像素的alpha值。
定理 1:
定义J(α)为: ,那么
其中L是一个N×N的矩阵,它的第(i,j)元素是:
这里δij是克罗内克δ函数,μk和是k附近窗口wk的亮度的均值和方差,|wk|是窗口中像素的数量。
*********************************************************************************************
这里的推导公式有点跳,但下面的证明有文字说明,从3式开始,如何用矩阵形式重写等式3:
*********************************************************************************************
证明:用矩阵形式重写等式(3),可以得到
对于每个窗口wk,Gk定义为一个(|wk|+1)×2的矩阵。对于每个i∈wk,Gk包含了一排 [Ii,1],Gk的最后一排是。对于一个给定的磨砂α,可以定义是一个(|wk|+1)×1的向量,对于每一个i∈wk,定义为αi,它最后一个元素是0。和Gk中的元素都是顺序对应的。
对于一个给定的磨砂α,每个窗口wk中的最优对是最小二乘问题的最优解:
将这个解代入等式6中,将Gk表示为,
我们得到
更多的线性代数计算,的第(i,j)个元素可以表示为:
对k求和,可以得到等式5。
2.1 彩色图像
一个简单的方法将代价函数应用到彩色图像中,就是在单独在每个通道中应用灰度代价函数。我们还可以用一个4D线性模型取代等式2的线性模型:
这种合并线性模型的一个好处是它放宽了之前的假设,即每个窗口上的F和B是常数。其实,这已经足够了,在一个小窗口上,F和B是两种颜色通道的线性混合;也就是说,小窗口中Fi的值在RGB颜色空间中的某条直线上:,对背景来说Bi的值也是这样的。在本文剩下的部分,我们称这种假设为颜色线性模型。
这个模型非常有用,比如,具有恒定漫反射的表面上的阴影变化。另外一个例子是,窗口包含了同属于前景和背景的两个统一的颜色区域之间的边缘。还有就是,论文10展示了在很多自然图像中RGB空间中的像素颜色往往形成一个相对少量的细长簇。尽管这些簇不是直线,但它们的轮廓基本上是局部线性的。
定理 2:
如果窗口中前景和背景颜色满足颜色直线模型,有表达式:
证明:用线性组合
和替换等式1,其中F1,F2,B1,B2是小窗口上的常量,可以得到:
************************************************************
将B2移到等式左边,写成矩阵相乘的形式:
**************************************************************
设H是一个3×3的矩阵,它的第c排是。那么,上式就可以写为:
其中,Ii和B2是3×1的向量,表示3个彩色通道。将H-1的第一行的元素记为a1,a2,a3,将H-1的第一行的向量B2作标量乘法,乘以b。得到αi=Σc ac Ii+b。
使用等式9的4D线性模型,可以定义RGB图像的抠图代价函数为:
与灰度图情况类似,代价函数中的和b可以消掉,生成关于未知数α的二次代价函数:
这里L是一个N×N的矩阵,它的第(i,j)个元素是:
其中,Σk是一个3×3的协方差矩阵,μk是一个3×1的窗口wk的颜色均值向量,I3是一个3×3的识别矩阵。
我们将等式5和12中的矩阵L称为拉普拉斯抠图矩阵。注意,L每行元素的和为0,因此L的零核空间包含了常数向量。如果 ε=0,L的零核空间也就包含了I的每个颜色通道。
除了数学上的理由,我们的代价函数的直观理解为matte可以局部表示为图像各颜色通道的线性组合,如下图中3个代表性实例所示。 第一个例子的窗口包含十分一致的前景、背景颜色。在这个例子中,alpha matte和原始图像有很强的标准化相关性,它可以由一个颜色通道值乘以一个系数再加上一个常数形成。在第二个例子中,alpha matte在整个窗口中是一个常值。在不考虑窗口中图像纹理的复杂性的情况下,这个常值alpha可以由原始图像的各个颜色通道值乘以0再加上一个常数形成。这个小例子很重要,它显示了一些4D线性模型的优点。在图像的绝大部分窗口中,一般matte值是常值的(0或1),在这种窗口中的matte可以表示为图像的线性函数,而不需要考虑确切颜色分布以及颜色线性模型是否支持。最后,我们展示了一个不为常值的窗口,这个窗口中实际包含了一个边。在不同颜色通道的边界对比度是不同的,通过每个颜色通道值的缩放,我们的模型其实是可以消除背景边的。
3 约束和用户接口
在我们的系统中,用户施加的约束通过笔刷GUI提供。用户使用背景笔刷(黑色笔刷)指示背景像素(α=0),前景笔刷(白色笔刷)指示前景像素(α=1)。
为了提取alpha磨砂匹配用户笔刷,我们解如下方程
其中,S是笔刷像素集,si是笔刷所指的值。
定理 3:
I是等式1中前景和背景形成的图像,α*是真实的alpha磨损。如果每个局部窗口wk中F和B满足颜色直线模型,如果用户指定的约束S与α*是一致的,那么α*是等式13的一个最优解,其中L构建时ε=0。
证明:既然ε=0,如果每个窗口wk满足颜色直线模型,它就满足等式10 的定义J(α*,a,b)=0,因此,J(α*)=α*TLα*=0。
图2. 抠图例子。(a,c)带有笔刷的输入图像。(b,d)提取的磨砂图层。
我们在图2中演示了这些论述。图2(a)第一个图像是一个合成的图像,计算机在一个简单的背景和几个颜色波段上模拟(单色)合成的,满足颜色线性模型。黑白笔刷是输入约束。我们的方法提取的磨砂图层(如图2(b))与基准磨砂完全一致。第二个例子(图像2(c))是一个真实的图像,前景和背景颜色融合在一起。只刷了黑白两个点,就可以提取高质量的磨砂图层(如图2(d))。
4 光谱分析
拉普拉斯抠图矩阵L是一个正定对称矩阵,如定理1和其证明所示。这个矩阵也可以写为L=D-W,其中D是一个对角矩阵D(i,j)=Σj W(i,j),W是一个对称矩阵,它的非对 角元素由等式12定义。因此,矩阵L是光谱分割中的抠图拉普拉斯矩阵,等式12提供了一种新型的亲和函数。为了方便对比,定义亲和函数的典型方法(比如论文13中的归一化切割图像分割算法)是设置:
其中σ是一个全局常量(通常是手动选择的)。这个相似函数对相近颜色附近的像素比较大,当颜色差远大于σ时,接近于0。论文6的随机游走抠图算法使用了一个类似的亲和函数用于抠图问题,但是两个像素之间的颜色距离在颜色线性变换后取值。这个变换依赖于图像,用流形学习技术进行估计。
相反,重写拉普拉斯抠图矩阵L=D-W,可以得到如下亲和函数,可以称其为抠图亲和函数:
为了获得抠图亲和函数的直观感受,考虑一个包含了两种颜色(比如,一个理想的边缘)的图像区域。在这个例子中,相同颜色的两个像素间的亲和函数的值随着距离的增大而减少,不同颜色的像素间的亲和值为0。通常,标准的亲和函数也是类似的状况:相似颜色的像素之间的亲和值比较高,不同颜色像素之间的亲和值比较小。但是,需要注意的是抠图亲和函数并没有一个全局缩放参数σ,而是使用的均值和方差的局部估计。后面会讲到,这种适应性的特点会在性能上有非常显著的提升。论文16中也有相似的情况,也是采用了局部参数缩放提升了图像分割的结果。
为了比较两个亲和函数,它们对应的拉普拉斯最小特征向量,因为这些特征向量在光谱分割算法中用于风格图像。
图3:不同拉普拉斯的最小特征向量
图3展示了两个样例图像的拉普拉斯矩阵的第二小的特征向量(最小的特征向量在两个案例中都是常量图像)。第一个例子是一个有不同颜色同心圆的简单图像。在这个例子中,区域的边界非常简单,两个拉普拉斯都正确地捕捉了颜色变换。第二个例子是一个孔雀图像。全局σ特征向量(归一化分割算法所使用的)不乏捕捉孔雀尾巴羽毛和背景之间的复杂模糊的边界。相反,拉普拉斯抠图特征向量很好地将孔雀从背景中分离出来。这个例子中的拉普拉斯抠图是用ε=0.0001计算的。
4.1 特征向量作为引导
如果没有用户输入,这个抠图问题是一个病态问题,抠图拉普拉斯矩阵包含了图像上的很多信息,甚至在提供任何笔刷之前,如之前的章节所描述的那样。
也就是说观测最小的抠图拉普拉斯矩阵的特征向量可以引导用户在哪里画笔刷。比如,提取的磨砂往往在相同的区域内是分段常数,最小的特征向量是分段常数。如果特征向量图像中的一个分区的值是连贯的,在这个分区中的笔刷足以将这个希望的值传递到整个分区中。另外一方面,图像上特征向量的值较少连贯的困难区域中,建议多做一些笔刷。
更确切地说,alpha磨砂可以通过检查拉普拉斯抠图矩阵的最小特征向量来确认,因为等式13的最优解是更小的特征向量生成尽可能大的区域。事实上,可以限制权重,最优解会分配更大的特征向量,作为对应特征值的比值的函数。
图4.最小的特征向量(a-b)用于引导笔刷放置(c)。生成的磨砂图层如(d)所示。
图4显示了一个画笔刷的过程如何被特征向量引导的过程。通过检查最小的两个特征向量(图4(a-b)),在每个连续特征向量值(图4c)内放置笔刷。生成的磨砂如图4d所示。注意图4c中的笔刷是第一次尝试放置笔刷。
5 结果
这里演示了通过受笔刷约束的拉普拉斯抠图矩阵最小化方法,用闭合形式方案提取alpha磨砂图层。既然拉普拉斯抠图矩阵是alpha上的二次函数,最小值可以通过解一个稀疏线性方程组得到。通常用3×3的窗口定义拉普拉斯抠图矩阵。当前景和背景的颜色分布不是很复杂时,用更宽的窗口时有帮助的。然而,生成的系统更稠密,用更宽的窗口会增加计算时间。为了克服这个问题里,采用与图像的alpha磨砂通道的线性系数(等式9)。用一个较宽的窗口在一个更精细的分辨率上得到的系数与从一个粗糙的图像上一个较小的窗口中获得相似。因此,可以用一个粗糙图像上的3×3的窗口解得alpha磨砂通道,计算粗糙图像的线性系数。可以对线性系数插值,将其应用在一个更精细的分辨率图像上。用这个方法获得的alpha磨砂通道与用更宽的窗口在更精细的图像上直接求解抠图系统时相似的。更详细的内容如论文8所示。【参考文献的论文8是本文的TechnicalReport】
本文演示的结果是直接在matlab里面解决抠图系统的(“blackslash”运算符),在一个2.8GHz的处理器上处理200×300的图像用了20秒。用matlab处理大图,由于内存的限制,基本不可能。为了克服这个问题,可以使用一个由粗到细的算法。对图像和笔刷降采样,在一个更低的分辨率上处理。重构的alpha通道可以插值成更高的分辨率,alpha值是阈值,alpha值接近0或1的像素作为更精细分辨率的约束。约束像素可以从系统中消除,减少系统的规模。也可以用多网格处理来做磨砂提取。多网格处理处理非常大的图像只需要几秒,但磨砂质量会有所下降。
这里只演示了提取alpha磨砂。注意,如果分解背景,需要解决F。找到磨砂后,可以从等式10中直接得到ac和b的系数,从它们中提取前景和背景。然而,我们发现前景和背景的更好估计可以从解决一组F和B的新的线性方程组得到,通过引入F和B的一些明确的光滑先验信息到等式1中得到。前景重建和组成结果的更多信息可以在论文8中找到。
图5. 不同算法提取的alpha磨砂图层的对比。图像(a,c,e,g,i,k,m,o)从论文15中提取的。剩下的图像是用各种方法生成的。
图5显示了用我们的方法从论文15中两个比较有挑战的图像提取的磨砂图层,与其他几种算法比较了结果。可以看到,在这些案例中,我们的算法是有竞争力的,即使我们使用了一种非常简单的算法。全局泊松抠图无法从稀疏的笔刷中提取高质量的磨砂图层,尽管它在一个成3地图中性能非常好。论文6的随机游走抠图也是最小化拉普拉斯矩阵,但使用了一个全局缩放参数的亲和函数,因此在孔雀图像中非常困难。
图6. 用两个基准磨砂图层进行定量比较。i和j中的误差作为背景平均梯度强度的函数绘制的,分成10个条形图。为了生成各个方法的执行结果,使用了原论文中指定的参数值。
为了获得这些算法的定量比较,我们用带有比较基准的合成图像做了实验。我们随机地从图6(h)中提取了2000幅子图像。我们用每个子图作为背景,用两个不同的alpha磨砂图层组成一个统一的前景图像:第一个磨砂图层是一个计算机模拟的烟的图像,图像的大部分都是透明的;另外一个磨砂图层是一个圆圈的一部分,大部分不透明的部分都是羽化边界。磨砂图层如图6c所示。接着,我们得到了4000个成分图像,其中两个如图6a所示。在这组图像中,我们比较了4中抠图算法的性能,Wang和cohen,全局泊松抠图,随机游走抠图和我们的方法(用不带金字塔的3×3的窗口)。所有的算法都提供了一个成3地图作为输入。成3地图和不同方法生成的结果的例子如图6 a,d-g所示。对每个算法,我们都计算了提取的磨砂图层和基准图层的绝对平方误差和。图6 i,j 绘制了4种作为背景平滑函数的算法的平均误差(我们测量了平均梯度强度,分到10个条形图中)。烟雾磨砂图层的误差绘制在图6i中,圆圈磨砂图层的误差绘制在图6j中。如果背景平滑,所有的算法在两个磨砂图层上性能都比较好。当背景包含比较强的梯度时,全局泊松抠图性能比较差(它假设背景和前景的梯度是可以忽略的)。剩下的算法中,我们的算法得到最精确的结果。
图7 . 论文15中的一个前景和背景之间的颜色模糊的例子。(a)论文15 的笔刷和磨砂图层;(b)论文15中用成3地图生成的结果;(c)我们用于a相似的笔刷生成的结果;(d)我们的方法用更多的笔刷生成的结果。
图7 展示了论文15中的例子,由于前景和背景的颜色模糊,Wang和Cohen的方法无法从笔刷中提取比较好的磨砂图层。相同的方法,应用成3地图时,可以生成一个可接受的磨砂图层。我们的方法生成一个更干净,但从相同的笔刷中也不是很完美的磨砂图层,但添加了一些笔刷后生成更好的磨砂图层。
图8. F和B之间颜色模糊的一个案例
图8显示了另一个例子(论文14中的Koala图像的一个特写镜头),前景和背景颜色是模糊的。在这个例子中,我们的方法生成的磨砂图层明显好于Wang-Cohen方法生成的图层。为了更好地理解为什么是这样的,用RGB直方图表示F和B笔刷中的像素。背景中有些像素可以更好地匹配前景颜色模型,胜过背景(这样的像素在图8b中标为红色,在图8d中用箭头指示)。最后,这样的像素在第一阶段在高不确定情况下被分为前景。一旦做了这个错误,只在那个像素附近加强进一步错误的决定,在磨砂图层上生成一个白色丛。
我们的方法并没有使用F和B的全局颜色模型,它就可以处理图8那样的模糊状况。然而,也有一些例子,我们的方法出于同样的原因而无法生成精确的磨砂图层。图9显示了两种颜色背景下的一个女演员。甚至尽管黑色B笔刷涵盖了两种颜色,生存的磨砂图层还是含有部分背景(在左边头发和肩膀之间)。在这样的例子中,用户必须在这个区域添加另外的B笔刷。
图9. 由于缺少颜色模型而失效。
6 讨论
抠图和组合是图像和视频编辑中最重要的任务,给计算机视觉带来了巨大挑战。这个过程定义要求用户交互,大部分现有算法的性能随着用户输入的减少而迅速恶化。本文,基于前景和背景颜色平滑变化,我们引入了一个代价函数,演示了如何消除前景和背景颜色获得一个alpha上的二次代价函数。生成的代价函数与图像分割光谱方法中得到的代价函数非常相似,从抠图问题的公式中推导亲和函数。代价函数的全局最小化可以通过解一组稀疏线性等式找到。实验表明,在真实和合成图像上,我们的算法明显优于没有从抠图等式中推导二次代价函数的那些算法。实验结果还表明,我们的结果比那些更复杂、非线性的代价函数中得到的结果更有竞争力。然而,与之前非线性方法对比,可以在很短的时间内得到方案,我们证明了我们方法的特点,通过分析运算子的特征向量,给用户提供了指导。
我们的方法假设前景和背景颜色平滑,但没有要求每个分区的全局颜色分布。实验表明,局部平滑要求对自然图像更有用。然而,可以将我们的公式扩展到两个分区上包含更多的假设和要求(比如,全局模型,局部纹理模型,等等)。目标是整合进更复杂的模型,前景和背景更复杂的那种,用简单的数值线性代数获得更高质量的结果。
公式推导过程参考:
Soft Matting 中所使用 Matting Laplacian Matrix 元素通项的推导
http://www.aiuxian.com/article/p-1153890.html
A closed form solution to natural image matting。《Computer Vision for Visual Effects》讲解笔记。
http://blog.csdn.net/d_nel/article/details/44133197