本节继续上一节的讨论
sudit:Closed Form Matting 算法抠图以及优化(1)——目标函数zhuanlan.zhihu.com构建拉普拉斯矩阵
首先,我们复习下矩阵乘法的分块形式,假设矩阵
和向量
按如下分块
那么
如果我们假设
,即
是一个带状矩阵,那么就有
这让我们看到了和前面推导的目标函数形式上的相似之处
而且我们知道,
其实就是向量
的一部分,这和
与
的关系相当,唯一的区别是
元素的位置在
上不是连续的,但这并不重要。于是,通过这种类比,我们可以推断,存在一个矩阵
,使得
由于刚才我们假设
是带状矩阵,那么有理由相信
肯定也是带状矩阵。因为
在
上不是连续的,对于单个
来说,其乘法关系在全量的矩阵表示形式下如图所示,图中黑色的部分代表对应的
和
。
现在,我们面临着和矩阵乘法分块相反的问题,那就是把已经分块的矩阵重新拼凑成原矩阵,即组装
。这与有限元中通过单元刚度矩阵组装总体刚度矩阵的方法十分相似,说不定它们之间还存在着更深刻的联系。
在讨论如何通过
来组装
之前,我们先回顾
这两个量的物理意义,
是由每个像素的透明度组成的向量,由于图片是二维的,所以我们按横向扫描所有像素,它的具体形式为
而
是第
个窗口的所有像素透明度组成的向量,同样按横向扫描
其中的下标
等是
中的元素索引。这里需要注意一下,前面在定义
的时候,最后还有一个元素为 0,这里我们去掉了,因为可以证明,如果向量
的某些位等于 0,那么只需要去掉这些位,以及
中相应的的行和列,其结果是等价的
其中
是修改之后的向量和矩阵。
现在我们举个简单的例子,假设
那么按照向量矩阵乘法的要求,
在
中的位置分布如下
也就是说,
的元素在
中的位置与
元素的下标有关,其对应关系为
其中
为
中第
个元素的下标。由于不同的
可能在
上的位置重叠,我们只需要将它们相加即可,因为矩阵乘法只是简单的线性操作。
使用上述方法构造出
之后,我们便得到了关于目标函数的新的表示形式
其中,
又被称为拉普拉斯矩阵。从而,优化的目标为
根据前面我们对
的推导可以证明,
的每一个元素都是非负的,并且按照定义
的每一个元素也是非负的,这样一来,就只需要令
的每一个元素都为 0,从而使
达到极小值 0,但这显然毫无意义。
这里的问题就出在我们没有对
施加约束条件,因为,我们知道肯定有一部分
是等于 1 的(即我们要提取的前景),所以大部分抠图算法都要求使用者提供约束条件,也就是说,给出部分绝对正确的前景和背景。Trimap 图便是一种这样的约束形式。
考虑上面第一张图,如果我们要抠取小狗的图像,那么其对应的 trimap 图如第二张图所示。其实就是把原图分割成三个部分,分别是100%背景,100%前景以及不那么确定的部分,这个不确定的部分就是我们要求解的,其余的都算约束。于是加上约束的优化目标就变成了
其中
是背景索引集合,
是前景索引集合。本节暂时到此未知,总结一下,我们首先通过对分块矩阵的乘法原理进行分析,假设出目标函数也具有类似
这样的乘法结构,然后发现了
是
的一部分元素,于是利用前者组装出后者,将目标函数
转换成了矩阵乘法形式,最后加入约束条件,得出了带约束的优化目标。