0%

抠图

抠图

Blue Screen Matting

  • 始祖抠图算法

定义matting问题

$$
I=\alpha F+(1-\alpha)B
$$

  • 假设一张图片由背景(background),前景(foreground),透明度组成。
    • 而透明度也就是RGBA的第4个元素,对于每一个RGB像素都有着对应的A(就是$\alpha$),当然也可以全部的$\alpha$都相等
  • 那么现在的问题就变成了:已知I,求解$\alpha,F,B$的其中两个

条件放松,问题转化

首先有:F是由前景对应的图片和一个纯色背景按照matting公式合成的

  • 从上面的式子可知,要直接求出想要的东西是很难的,所以我们要加一些限制条件

    • 第一种限制形式:假设背景只要一种颜色,我们假定这个是蓝色

      • 这个显然是一个极好的限制条件,这可能也是我们的各种证件照为什么会有限制的底色的原因
      • 既然B只有蓝色,那么显然的我们就可以让前景F没有蓝色了,所以matting后的图片的所有蓝色分量全部来自于B,那么就能求出对应的$\alpha$了
    • 第二种限制形式:假设图片是灰度图,也就是说$R=G=B$

      • 当然我们可以不用把条件限制的那么禁,如只用R=G即可
    • 第三种限制形式:对于同一个前景目标,在不同的背景下拍摄

      • 当然可以使两张图对应的$\alpha$相同

      • $$
        I_1 = \alpha F + (1-\alpha)B_1\
        I_2 = \alpha F + (1-\alpha)B_2
        $$

        • $已知I_1,I_2,B_1,B_2,求解\alpha ,F$
      • 下面我们简化一下问题: 我们简化一下就是已知背景图$B$

      • 现在已知将问题转化为优化问题

        • $$
          I_1 - I_2 = (1-\alpha)(B_1 - B_2)\
          当(I_1-I_2) 与 (B_1-B_2)共线的时候才有确定的\alpha\
          所以我们让等式尽可能成立,问题转化成\
          \min_{\alpha} ||(I_1-I_2)-(1-\alpha)(B_1-B_2) ||\
          然后就转化成了残差最小问题—->最小二乘法即可
          $$

        • 两种方式:我们可以对整张图片的RGB来做最小二乘,也可以只针对一个小方框来做

Bayes Matting

前要知识

tri-map和scribbles

  • tri-map:三区标注图(标注前景,背景,未知领域)

    img

    • 上图黑白灰分别对应:背景,标注前景,未知领域
  • scribbles:手动粗略地画出前景与背景

  • scripple

  • 上图白色涂前景,黑色涂背景

  • 所以我们只用对上面两种方式的不确定部分建模即可

    ### 主要内容

  • 我们有$F,B,I(已知),\alpha$,依据最大后验概率和贝叶斯定理,有
    $$
    \max_{F,B,\alpha}P(F,B,\alpha|I)=\
    \max_{F,B,\alpha}\frac{P(I|F,B,\alpha)P(F)P(B)P(\alpha) }{P(I)}=\
    \max_{F,B,\alpha}L(I|F,B,\alpha)+L(F)+L(B)+L(\alpha)
    $$

    • L表示取对数
  • 1、求解$L(I|F,B,\alpha)$

    • 假设图像是满足高斯分布的,那有

    $$
    L(I|F,B,\alpha)=-||I-\alpha F-(1-\alpha)B||^2/ {\sigma_I}^2\
    {\overline I }= \alpha F-(1-\alpha)B\
    \sigma_I 为I的标准差
    $$

  • 2、求解$L(F)$

    • 这一项相当于计算当前点属于前景的概率,所以$L(B)$的求解类似

Closed_form_matting

  • matting问题都是要假设的,该方法最重要的假设如下

    • $$
      在一个小方框w内\I_i\approx\alpha_i F+(1-\alpha_i)B\qquad(i\in w)\
      \Rightarrow \alpha_i \approx aI_i+b\qquad (a=\frac{1}{F-B},b=\frac{-B}{F-B})
      $$

      • 以上$\approx$是假设a和b为常数(或说F和B)引入的

转化成可优化问题

  • 既然已经有上述的等式了,那么下一步显然的就是求loss了
    $$
    J(\alpha,a,b)=\sum_{j\in I}(\sum_{i \in w_j}(\alpha_i-a_jI_i-b_j)^2+\varepsilon a_j^2)
    $$

    • 后面的$\varepsilon$是为了正则化的
  • 如果不加思考的话,那么很多人可能就会针对这条式子来优化了,但是该算法的巧妙之处就在于,作者思考怎么消去$常数a,b$,变成只有$\alpha$的优化问题,最后求得$\alpha$的解析解

  • 我们假设第二条式子是某个向量的模的平方,通过观察然后构造

    • 假设当前窗口是3×3的,用背景颜色$(F_k,B_k)求得(a_k,b_k)$

    $$
    G_k={\left[\begin{matrix}
    I_1&1\
    I_2&1\
    .&.\
    .&.\
    .&.\
    I_9&9\
    \sqrt{\varepsilon}&0
    \end{matrix}\right]},
    \alpha_k={\left[\begin{matrix}
    \alpha_1\
    \alpha_2\
    .\
    .\
    .\
    \alpha_9\
    0
    \end{matrix}\right]}\
    \Rightarrow G_k\left[\begin{matrix}a_k\b_k\end{matrix}\right]-a_k=\left[\begin{matrix}I_1a_k+b_k-\alpha_1\I_2a_k+b_k-\alpha_2 \…\I_9a_k+b_k-\alpha_9\\sqrt{\varepsilon}a_k\end{matrix}\right]\
    所以,最后有\Rightarrow J(\alpha,a,b)=\sum_{k\in I}(G_k\left[\begin{matrix}a_k\b_k\end{matrix}\right]-\alpha_k)^T(G_k\left[\begin{matrix}a_k\b_k\end{matrix}\right]-\alpha_k)=\\sum_{k\in I}|(G_k\left[\begin{matrix}a_k\b_k\end{matrix}\right]-\alpha_k)|^2\
    $$

  • 那么现在的问题就转化成:

    • 1、先对给定的$\alpha$求$a,b$的最小值
    • 2、然后再求对应loss最小的$\alpha$
  • 先针对第一步:我们对$a_k,b_k$求导
    $$
    设\beta=\left[\begin{matrix}a_k\b_k\end{matrix}\right],\alpha=\alpha_k\
    J_k=(G_k\beta-\alpha)^T(G_k\beta-\alpha)\
    求导\
    \frac{\partial J_k}{\partial \beta}=2G_k^TG_k\beta-2G_k^T\alpha=0\
    \beta^{}=\left[\begin{matrix}a_k^{}\b_k^{}\end{matrix}\right]=(G_k^TG_k)^{-1}G_k^T\alpha\qquad (\beta^{}表示最优的\beta,其他同理)
    $$

  • 再针对第二步:
    $$
    将\beta^{*}代入\
    J(\alpha,a,b)=\sum_{k \in I}|(G_k\left[\begin{matrix}a_k\b_k\end{matrix}\right]-\alpha_k)|^2\
    提取因子\alpha,并设\overline G_k=I-G_k(G_k^TG_k)^{-1}G_k^T\
    \Rightarrow J(\alpha,a,b)=\sum_{k \in I}\alpha_k(G_k^TG_k)\alpha_k=\sum_{k \in I}\alpha_kL\alpha_k\qquad(L=G_k^TG_k)
    $$

    • 我们可以发现上面的$G_k$和正则化的拉普拉斯矩阵的形式是一样的,然后人们把L称为matting Laplace Matrix,在后续的抠图算法中,L是个很重要的矩阵

    • $$
      L_{i,j}=\delta_{i,j}-\frac{1}{|w_k|}(1+\frac{1}{\frac{\varepsilon}{|w_k|}+\sigma_k^2}(I_i-\mu_k)(I_j-\mu_k))\
      \delta 是克罗内克函数(当i=j时为1,其余为0)\\mu和\sigma分别是均值和方差,|w_k|是窗口内像素的个数
      $$

加上用户交互的限制(以scribbles为例)

  • scribbles上,我们的限制可以构造成,如果涂了色那么就有对应的贡献

  • 然后就变成了有约束的极值问题了–>拉格朗日乘子法

    • $$
      \alpha=argmin\text{ } Loss=argmin\text{ } (\alpha^TL\alpha+\lambda(\alpha^T-b_s^T)D_s(\alpha-b_s))\
      D_s是对角矩阵,对角上有值的元素对应scribbles上涂色的点,\设涂色为1,未涂为0\
      b_s是与\alpha维度相同的列向量,涂色点上对应\alpha_i的值,其余为0\
      继续求导\
      \frac{\partial Loss}{\partial \alpha}=2L\alpha+2\lambda D_s(\alpha-b_s)\
      所以\alpha^{*}=\lambda(L+\lambda D_s)^{-1}D_sb_s=\lambda(L+\lambda D_s)^{-1}b_s
      $$

    • 由于计算量大,所以$\lambda$不训练,而是提前设定好一个值(事实证明,$\lambda$的值在一定范围内影响不了多少)

对彩色图:color line model(两色线模型)

  • 上文的方法显然是基于灰度图的,所以需要每个通道都算一次,而且效果不一定好(因为要满足一个小方框内的三元向量(R,G,B)保持线性,这个约束太强)

  • 所以我们加一个假设条件,假设:一个小方框内,背景和前景的值都是近似位于一条直线上的
    $$
    \begin{cases}
    F_i=\beta_i^FF_1+(1-\beta_i^F)F_2\
    B_i=\beta_i^BB_1+(1-\beta_i^B)B_2\
    \end{cases}
    $$

    • $F_1,F_2,B_1,B_2$分别对应着前景和背景的颜色向量(表示的一个线段的两个端点),$\beta$表示基于这两个端点的插值斜率
  • 则最后能推到

    • $$
      \alpha_i \approx\sum_{c \in \text{(R,G,B)}}a^cI_i^c+b\
      \Rightarrow\alpha_i=a^TI_i+b\qquad(a=\left[\begin{matrix}a^R\a^G\a^B\end{matrix}\right])
      $$

推导证明

  • 虽然上面的结论看起来很有道理,可能不用说你都知道,但是我们还是给出一番证明

$$
将F_i.B_i的式子代入I_i=\alpha_iF_i+(1-\alpha_i)B_i\
I_i=\alpha_i(\beta_i^FF_1+(1-\beta_i^F)F_2)+(1-\alpha_i)(\beta_i^BB_1+(1-\beta_i^B)B_2)\
我们把式子转化成类似\text{Blue Screen Matting}中的式子\
I_1 - I_2 = (1-\alpha)(B_1 - B_2)\
所以有\Rightarrow I_i-B_2=H\cdot \left[\begin{matrix}\alpha_i\\alpha^i\beta_i^F\(1-\alpha_i)\beta_i^B\end{matrix}\right]\(H=[F_2-B_2,F_1-F_2,B_1-B_2])
$$

  • 然后我们就把问题转化成了一个线性方程组
    $$
    设\qquad x_1=\alpha_i,x_2=\alpha^i\beta_i^F,x_3=(1-\alpha_i)\beta_i^B\
    所以H\cdot \left[\begin{matrix}x_1\x_2\x_3\end{matrix}\right]=I_i-B_2
    $$

    • 那么我们求出线性方程组后的第一行的元素就是答案,所以把$H^{-1}$乘过去

      • $$
        \left[\begin{matrix}x_1\x_2\x_3\end{matrix}\right]=H^{-1}\cdot (I_i-B_2)
        $$

      • 所以,$x_1$的值只和$H^{-1}$的第一行元素有关,我们提取出来就能得到形为$x_1=\alpha_i=a^TI_i+b$的式子

得到新的Matting Laplace Matrix

  • 将上述公式代入此模型重新推导后得到

    • $$
      L_{i,j}=\sum_{(i,j)\in w_k}[\delta_{i,j}\frac{1}{|w_k|}(1+(I_i-\mu_k)^T(\sum_k + \frac{\epsilon}{|w_k|}I_3)^{-1}(I_i-\mu_k))]
      $$