小白初涉matting界,boss便指了几篇经典论文让我自行参悟。无奈基础为负,参悟了个把月依旧门都没入。看到油管里这个视频,一种如获至宝的感觉。https://www.youtube.com/watch?v=Mvd93DdgqAY(要找梯子)。这一集简要讲解了closed form matting,避开了生涩的高端理论,只讲最基本的原理,实在很适合入门,遂笔记分享之。
适合人群:对closed form matting 完全不入门的小白们。主要是推荐视频,笔记仅供参考(误导)。因为自己也是半懂不懂,所以没法对大家负责了。但求指正和补充。。
Part 1
首先给出了一幅龙猫图像
和它的RGB分布
发现前景的颜色分布像在一个skinny ellipse(瘦长椭圆)里。而背景因为是蓝屏,只有一种颜色,所以便是左上方那一小坨啦。
一些研究证明,在一个小窗口(譬如5*5)里,它的颜色分布(对于5*5窗口,就是那25个像素的颜色分布)几乎处在一条线段上。
这就是color-line assumption。
| ColorLine assumption:
在一个小窗口内,前景颜色F和背景颜色B的分布各自满足于在一条线段上(RGB 空间)。
补充:
因为:一个窗口的前景色对应一条线段。
而且:空间里可使用2个端点确定一条线段。
所以:一个窗口的前景颜色分布可由2端点确定。(即对于一个窗口来说,F1F2是固定的)
背景的B1B2 同理。
此刻,别忘了抠图的关键假设:I =αF + (1-α)B ——图像是由前景色和背景色通过参数α合成的。
Part 2
再强调一遍,在一个小窗口里,F1F2是固定的。这个小窗口里的所有前景颜色都分布在F1F2确定的这条线段上——只是β值的差别而已(上图第一行公式)。
背景色同理。
接着提出了一个很厉害的结论:
如果颜色线性假设成立,那么我们要求的true matte(α)满足等式:
αi = aT Ii + b, (1)
对于该窗口的所有像素来说。
根据这个结论,如果我们知道了aT、b,把已知的图像像素Ii(RGB空间下,是个3*1向量),往里轻松一代,不就能得到梦寐以求的α了!
Part3 中Rich老师开始证明这个结论。同时说明里面的aT和b是什么。
Part 3
把color line assumption代入I = αF + (1-α)B,
展开:
然后把B2移到左边,写成矩阵相乘形式:
看到木有看到木有,我们要求的α 。
移到左边
解释:原是个3*3的矩阵,因为RGB颜色是(3*1)向量。
把它的逆矩阵
看作。因为我们只需要求α,知道第一行r1T已足够。
最后,
知道r1T和B2就可以求α了,噢,别忘了r1T来源于
所以我们知道这些端点——F1F2B1B2,就能求α了。
Part 4
以上的理论怎么用在matting上呢?
建立一个cost function(以解决实际问题):
对于每颗像素要考虑它的α值。
对于每个窗口,则考虑它的a和b。【还记得 (1) 中的和b吗】
所以才有了上面这个2层嵌套的求和式子。一方面它考虑到了每颗像素(外层求和),另一方面对于每个像素当前所处的小窗口(内层求和),(每个窗口都有它的a、b,也就是该窗口的F1F2B1B2)。内层求和,就是通过该窗口的a、b衡量该窗口。
一个像素属于多个窗口——是propagation的基础。窗口加强了像素之间的联系。相隔较远的像素受窗口的影响小,而相隔较近的像素,因为在一个或几个有交集的窗口的里,故互相影响着。这样的设计强化了对α的限制,使之不会太过突然的剧烈的变化。
Part 5
对cost function的修改和变形
改变:加了一个regularization term:
这样做的作用是防止a太大,防止a” getting too far from a constant”.
假设a=0,意味着该窗口里的matte是恒定的(α=b)。恒定是好的。相反,a太大,α也会变得crazy起来。所以要加这个regularization term。
变形:最后可变形成这样:
注意到Gj完全取决于图像,而a,b,α都是未知的。
好啦,我们的cost function的直观意思就是在所有窗口下向量和向量相互贴近。
如何最小化这个cost function是一个线性最小二乘问题(a linear least squares problem)。
我们最终关心的是α。假设我们已知α,什么样的a和b能让最小?
PSEUDOINVERSE: 虚拟反矩阵
这样,如果知道α,就知道a,b了,即a、b是α的表达式!
把optimal a、b代进去,我们得到了一个只有α的cost function:
α:特征值为0的特征向量
L称为 matting Laplacian
求最小值即对它求导。并另导数=0,求解。
matting的解便在这0特征向量中了。
坏消息是,有太多的0特征向量了。
为了限制matte,得到我们需要的结果,我们把用户输入(scribbles)加入其中。即一些像素被强制标记为α=0(背景)或α=1(前景)
实际上我们求解的是
(Scribbles:α确定为0,和α确定为1)