抠图--学习笔记

基础知识

在自然图像中,大部分物体的边界都可以用一个闭合轮廓来表示,图像分割算法通常就是用这样的一个闭合轮廓来划分前景物体和背景图像,而没有中间的过渡区域。但是,在实际图像中,尤其是在前景物体的边缘,常常会有一些不确定像素点,如果将这些像素点归于前景或背景,会导致前景物体边界不尽人意。造成这一现象的原因有很多,其中一个主要的原因就是数字图像中某一个像素点的颜色来自于传感器上某一区域内的光照具体来说就是一些像素点吸收了来自于不同物体的光照。在低分辨率图像上,物体的某些微小部分可能会低于照相机的分辨率,如倾泻的瀑布和燃烧的火焰等,当这些部分投影到数字图像网格上时可能比一个像素还小,这就导致这些像素点同时接受了前景物体和背景区域的光线,使得物体的边界并不是一个清晰的轮廓,而是一个模糊的过渡区域,这类边界无法用闭合轮廓来表示。另外,这种过渡区域还有可能由镜头或前景物体的运动、摄像机光圈引起的焦点模糊、或前景物体的局部透明性导致。传统的边缘检测算法或图像分割算法通常无法很好的检测或分割出这类物体。所以引入透明度(alpha)通道这一概念。对于这类物体边界上的每一个像素点,假设其颜色都是由前景颜色和背景颜色混合而来的,前景背景混合的比例就用透明度来表示。对于每一幅数字图像,无论其分辨率多高,默认其都含有透明度值最小为0最大为1的像素点。将前景物体精确的从图像的背景中分离出来(包括决定完全及不完全像素覆盖问题),被称为数字抠图。

自然抠图算是是面向复杂图像的前景提取方法,它通过计算每一个像素点的透明度值来实现前景和背景的分离,从而实现前景提取的目标。

语义分割与抠图的区别

  • 语义分割重在对每个像素的语义理解,将相同语义的像素分割为同一个部分,得到的结果就是若干个块状,至于块与块之间是否衔接则不考虑。返回像素分类结果,分类结果是整型。

  • 抠图只将图片分成前景和背景两块,返回的是属于前景或背景的概率,在前景与背景交互区域会产生渐变的效果,使得抠图更加自然。

  • 相同点 图像分割和图像抠图都属于前景提取技术,所要完成的工作都是将一幅图像中的前景物体提取出来。

  • 不同点 分割的目的是将图像划分为更便于理解和分析的形式,分割得到的结果可能是若干图像块或者若干边缘轮廓的集合。在图像分割中不存在半透明像素,即每个像素点的透明度不是等于0就是等于1。抠图则认为前景物体的边缘是模糊边缘,从前景过渡到背景有一个中间过程,即图像中存在半透明像素,其透明度值可以取[0,1]中的任何一个值。

  • 抠图算法的前景提取方式同分割算法相比,得到的结果精度更高,更适合于完成图像合成任务。尤其是对于处理含有细微的部分,或者呈半透明状态的前景物体时,前景提取任务只能由抠图来完成。

抠图难点

在这里插入图片描述
在这里插入图片描述

抠图方法分类

基于采样的方法(sampling-based)

基于采样的方法从trimap标定的前景背景区域中收集一组前景色和背景色样本进行初始化,然后从前景背景色数据集中为每个像素选择最佳的前景-背景色对。对于给定的未知像素,Robust Matting从空间上接近的已知前景和背景区域采样,缺点,真正的样本可能位于更远的位置。Shared Matting从trimap的已知区域和未知区域的边界处收集样本。Global Matting采集trimap已知区域和未知区域的边界上的所有像素,这样降低了错过真实样本的概率,但也增加了样本数量和选择成本。

基于学习的方法(learning-based)

半监督学习方法,核心在于给定标记数据的情况下,预测结果不止和标记数据有关,还和未标记数据有关,更精确的说和数据的相对位置有关。如果能建立一种 α 和像素点颜色的映射,那么给定一个像素点,就能通过它的颜色来预测 α 。假设:

  • 半监督学习中相对位置的概念,任何未知像素的 α ,是周围像素 α 的线性组合,从而可以将这种线性组合表达为矩阵的形式。
  • α 和像素点的颜色向量呈线性相关。

对于每一个点的 α ,使用周围像素 α 的线性组合来预测,这个线性组合的参数,是通过学习得到的,学习的过程就是建立α 和颜色特征向量之间相关关系的过程。

基于亲和力的方法(affinity-based)

抠图算法

Grabcut

Grabcut算法是微软研究院的一个重要课题,其主要功能是完成图像分割和图像抠图任务。Grabcut是迭代的图像分割算法。该算法利用了图像中的边界(反差)信息和纹理(颜色)信息,在减少了用户交互量的基础上得了比较好的分割结果。用户只需要在目标外面画一个框,将目标框住,通过该算法就可以完成良好的分割和抠图效果。在此基础上,如果增加额外的用户交互(即由用户指定一些属于目标的像素),那么效果就可以更完美。同时,该算法的边缘抠图技术(Border Matting)会使目标分割边界更自然和准确。

closed form matting(2008)

Paper
A Closed Form Solution to Natural Image Matting

closed form matting

Code
TensorFlow

简介
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
公式推导

  • 抠图公式
    在这里插入图片描述

  • 对于灰度图像。假设:在一个小的窗口(window,用w表示)中,前景(FG)与背景(BG)是一个常数,分别为F和B,于是(1)式可以转换成为:
    在这里插入图片描述

  • α和I是线性关系(a,b是常数)。那么就可以简单的定义要优化的目标函数为α的估计值与实际值的差:
    在这里插入图片描述

  • 在滑动窗体w内:
    在这里插入图片描述

  • 对于整个图像:
    在这里插入图片描述

  • 加一个平滑用的正则项则变为公式(3)

  • 假设窗体 w k w_{k} wk的size是3x3,其像素为 { I 1 , I 2 , . . . , I 9 } \{I_{1},I_{2},...,I_{9}\} {I1,I2,...,I9},其前景和背景颜色为 ( F k , B k ) (F_{k},B_{k}) (Fk,Bk)根据公式(2)有:
    在这里插入图片描述

  • 将(6)代入(3)有:
    在这里插入图片描述

  • m i n J ( α ) minJ(\alpha) minJ(α),由公式(6)有:
    在这里插入图片描述

  • 公式(8)带入公式(7)有:
    在这里插入图片描述

  • 公式(9)中,L被称为Laplacian Matrix, α ‾ k \overline{\alpha}_{k} αk α k \alpha_{k} αk最后一个元素增添0后的扩展矢量,因而L是 G ‾ k T G ‾ k \overline G^{T}_{k}\overline G_{k} GkTGk去掉最后一行和一列的矩阵,它的每个元素是可以确定的:
    在这里插入图片描述
    在这里插入图片描述

  • 于是 J ( α , a , b ) J(\alpha,a, b) J(α,a,b)可以表示成 α \alpha α的二次型,再加上限制点约束条件,问题,最后转化为带有约束条件的凸优化问题,其中 D s D_{s} Ds是对角矩阵,其对角线元素对应图中每个点,限制点(标出的FG和BG点)上为1值,而其他非限制点均为0, b s b_{s} bs是与 α \alpha α相同维度的列矢量,限制点上为相应 α i \alpha_{i} αi值,其余为0。
    在这里插入图片描述

  • 由公式(11)定义Loss为:
    在这里插入图片描述

  • Loss对 α \alpha α求偏导,并置零,计算出 α \alpha α的解析解。
    在这里插入图片描述

  • 对于彩色图像,可以看成是三个单色通道的合并,且 α \alpha α值在三个通道中保持一致,根据公式(1)有:
    在这里插入图片描述

  • 彩色图像能像灰度图像那样转换为求 α \alpha α二次型凸优化问题,关键在于找到估计值与最优值之间的距离,即要从公式(14)中得到 α \alpha α的估计值。由(14)得到:
    在这里插入图片描述

  • 公式(15)说明的矢量 I i − B i I_{i}-B_{i} IiBi和矢量 F i − B i F_{i}-B_{i} FiBi是线性关系,这个约束太强,若两个矢量不是线性,则 α \alpha α只能为0。因而引入两色线模型(小窗体中,前景和背景分别可以用一条在(R,G,B)空间的直线段表示;线段可以由两个端点确定,其它部分由端点间的线性插值确定)。因而有:
    在这里插入图片描述

  • F 1 F_{1} F1, F 2 F_{2} F2分别对应小窗体中前景的两个颜色矢量, B 1 B_{1} B1, B 1 B_{1} B1分别对应小窗体中背景的两个颜色矢量, β i F \beta^{F}_{i} βiF β i B \beta^{B}_{i} βiB分别对应前景和背景插值斜率。代入公式(15)有:
    在这里插入图片描述

  • 公式(18)是一个线性方程组,若有解的话,要求H与其增广矩阵 H ‾ \overline H H的秩相等。但若H满秩则一定有解。放宽约束条件后, α i \alpha_{i} αi H − 1 ( I i − B 2 ) H^{-1}(I_{i}-B_{2}) H1(IiB2)的第一行元素,因而有:
    在这里插入图片描述

  • 公式(19)是矢量 α \alpha α的每一个元素的估计,参考公式(5),定义最优值与估计值距离:
    在这里插入图片描述

  • 问题转换为二次型凸优化:
    在这里插入图片描述

Large Kernel Matting(2010)

Paper Fast Matting Using Large Kernel Matting Laplacian Matrices
在closed form matting方法的基础上,结合线性系统的计算和拉普拉斯矩阵,发现了大核和迭代次数的关系,降低了计算时间。

KNN matting(2012)

Paper
KNN Matting

Code
TensorFlow

简介
KNN matting属于非局部抠图,目标是通过允许α值在非局部像素中传播。它假设像素的α值可以通过具有相似外观的非局部像素的α值的加权来描述。在非局部抠图中,相似的外观由颜色,距离和纹理相似性来定义。因为要与非局部像进行比较,其计算量非常高。KNN matting通过仅考虑高维特征空间中的前K个近邻而改善了非局部抠图。它通过仅考虑颜色和它们特征空间中的位置相似性来减少计算量。有点是参数少,易于调整,不足是定义一个通用的特征空间是困难的。

Scalable Matting(2014)

paper Scalable Matting: A Sub-linear Approach
There is a property of mattes of natural images that has not been fully exploited: they tend to be constant almost everywhere. In fact, for opaque foreground objects, the only regions that contribute to the objective function are the pixels on the edge of the object. Computation on non-boundary pixels is wasteful. Furthe, as the resolution grows, the ratio of the number of edge pixels to the rest of the pixels goes to zeros. This means if we can find a solver that exploits these properties to focus on the boundary, it should be more efficient as n grows. Since these properties hold independent of the choice of the Laplacian, such a solver would be general and much more natural than the heuristics currently applied to the Laplacian itself.
有一种自然图像的特性尚未被充分利用:它们几乎无处不在。事实上,对于不透明的前景对象,唯一有助于目标函数的区域是对象边缘上的像素。对非边界像素的计算是浪费的。此外,随着分辨率的增加,边缘像素的数量与其余像素的比率变为零。这意味着如果我们能够找到利用这些属性的解算器来关注边界,那么随着n的增长它应该更有效。由于这些属性独立于拉普拉斯算子的选择,因此这种求解器通常比当前应用于拉普拉斯算子本身的启发式更自然。
Though we have described a very simple system, we have analagous problems in matting, just that the constraints are user-supplied and the Laplacian is usually data-dependent. For matting, most methods have sidestepped this problem by relying on very dense constraints to resolve most of the low-frequency components. No one has yet proposed a solver for Laplacianbased matting which can handle the low-frequency modes efficiently as the resolution increases and as constraints become sparse.
虽然我们已经描述了一个非常简单的系统,但我们在matting中存在类似的问题,只是约束是用户提供的,拉普拉斯算子通常是数据依赖的。对于消光,大多数方法都依赖于非常密集的约束来回避大多数低频分量,从而回避了这个问题。还没有人提出基于拉普拉斯算子的消光解决方案,它可以在分辨率增加和约束变得稀疏时有效地处理低频模式。
Multigrid methods are a class of solvers that attempt to fix the problem of slow low-frequency convergence by integrating a technique called nested iteration. The basic idea is that, if we can downsample the system, then the low-frequency modes in high-resolution will become high-frequency modes in low-resolution, which can be solved with relaxation.
多重网格方法是一类求解器,它试图通过集成一种称为嵌套迭代的技术来解决慢速低频收敛的问题。基本思想是,如果我们可以对系统进行下采样,那么高分辨率的低频模式将成为低分辨率的高频模式,可以通过放松来解决。
The idea of multigrid is simple: incorporating coarse low-resolution solutions to the full-resolution scale. The insight is that the low-resolution parts propagate information quickly, converge quickly, and are cheap to compute due to reduced system size.
多重网格的想法很简单:将粗糙的低分辨率解决方案纳入全分辨率规模。我们的见解是,由于系统尺寸减小,低分辨率部件可以快速传播信息,快速收敛,并且计算成本低廉。
When the problem has some underlying geometry, multigrid methods can provide superior performance.It turns out that this is not just heuristic, but also has nice analytic properties. On regular grids, v-cycle is provably optimal, and converges in a constant number of iterations with respect to the resolution [14].
当问题有一些基础几何时,多重网格方法可以提供优越的性能。事实证明,这不仅是启发式,而且还具有很好的分析属性。在常规网格上,v循环可证明是最优的,并且相对于分辨率以恒定的迭代次数收敛。

多重网格法(Muti Grid)

多重网格法是一种用于求解方程组的方法,可用于插值、解微分方程等。
从专业角度讲多重网格法实际上上一种多分辨率的算法,由于直接在高分辨率(用于求解的间隔小)上进行求解时对于低频部分收敛较慢,与间隔的平方成反比。就想到先在低分辨率(间隔较大)上进行求解,因为此时,间隔大,数据量小,进行松弛时的时空耗费小,而且收敛快,而且一个很重要的优点是在低分辨率上对初值的敏感度显然要低于对高分辨率的初值要求。
多重网格法可以直接在低分辨率上以一个随意的初值进行计算,然后再进行插值,提高其分辨率,再在更高分辨率进行计算;也可以先在高分辨率以随意初值进行计算,得到一个结果,再将其限制(插值)到低分辨率去,再在低分辨率上进行解算,最终再从低分率经插值计算达到高分辨率。
基本思想
一般的迭代法是在一种固定的网格上进行迭代,当网格比较细时,计算量十分大。多重网格在计算细网格上的精确解时,其初值是比它粗一些网格上的精确解构造的,因而迭代次数少。当然,求较粗的网格上的精确解,它的初值就是由更粗一些的网格上的精确解所构造的,如此往复,直到一个相当粗的网格位置。多重网格法的求解过程是一个递归的过程。
三大支柱

  • 细网络松弛
  • 粗网络校正
  • 套迭代技术

算法过程

  • 预平滑 选定一个初值,先采用一般方法,比如说权雅克比方法迭代一两次,求出一个近似解 u l u_{l} ul
  • 粗网格校正
    (1)计算剩余量 r l = f l − A l u l r_{l}=f_{l}-A_{l}u_{l} rl=flAlul
    (2)限制剩余量 r l − 1 = R l , l − 1 r l r_{l-1}=R_{l,l-1}r_{l} rl1=Rl,l1rl,其中的 R R R为限制算子,它实质上是一个插值算子。
    (3)在粗网格上,求下列问题精确解:
    A l − 1 ∗ e l − 1 = r l − 1 A_{l-1}*e_{l-1}=r_{l-1} Al1el1=rl1
    其中, A l − 1 A_{l-1} Al1是在粗网格上离散后得到的矩阵(如果有限元方法,就是刚度矩阵)。如果在这个粗网格上精确解不好求,继续放粗,递归调用整个过程。
    (4)将 e l e_{l} el延拓到粗网格上,以求解 e l e_{l} el e l = P l − 1 , l e l − 1 e_{l}=P_{l-1,l}e_{l-1} el=Pl1,lel1,其中P为延拓算子,其实它是一个插值算子。
    (5)计算粗网格上的近似解,仍然用 u l u_{l} ul表示:
    u l = u l + e l u_{l}=u_{l}+e_{l} ul=ul+el
  • 后平滑 以算得的 u l u_{l} ul为初值,采用一般迭代法再迭代个一两次,求解近似解。
    一个简单的一维多重网格算法流程如下所示,这里的一般迭代方法选用的Weighted Jacobi方法。
    在这里插入图片描述
    数值实验与结果
    在这里插入图片描述

多重网格技术(multigrid solver)

微分方程的误差分量可以分为两大类:一类是频率变化较缓慢的低频分量;另一类是频率高,摆动快的高频分量。一般的迭代方法可以迅速的将摆动误差衰减,但对那些低频分量,迭代法的效果不是很显著。高频分量和低频分量是相对的,与网格尺度有关,在细网格上被视为低频的分量,在粗网格上可能为高频分量。

多重网格方法作为一种快速计算方法,迭代求解由偏微分方程组离散以后组成的代数方程组,其基本原理在于一定的网格最容易消除波长与网格步长相对应的误差分量。该方法采用不同尺度的网格,不同疏密的网格消除不同波长的误差分量,首先在细网格上采用迭代法,当收敛速度变缓慢时暗示误差已经光滑,则转移到较粗的网格上消除与该网格上相对应的较易消除的那些误差分量,这样逐层进行下去直到消除各种误差分量,再逐层返回到细网格上。

目前两层网格方法从理论上已证明是收敛的,并且其收敛速度与网格尺度无关。多重网格法是迭代法与粗网格修正的组合,经过证明,迭代法可迅速的将那些高频分量去掉,粗网格修正则可以帮助消除那些光滑了的低频分量,而那些低频分量基本不起作用。

需要说明的是在多重网格迭代方法中,粗网格修正之前,细网格必须进行光滑迭代,以消除高频误差,使粗网格修正最有效的发挥其作用;在粗网格修正之后,不可避免的引入高频误差,所以也必须进行光滑迭代,不过高频误差能很快的通过光滑迭代消除。
多重网格,最开始是用来求解椭圆型方程的。其原理为:数值求解的误差可以展开成级数的形式,从级数的形式我们可以看出误差的振动分量有很多频段,只要消除了这些频段的误差,整个解也就收敛了。而网格,可以看成一种滤波器,不同尺度的网格可以滤掉不同频段上的误差。如果网格一定,那么对于某些误差来说,可以很快滤掉,对于与其频段不匹配的误差来说,这种网格可能完全失败而根本无法滤掉。于是,人们开始采用多重网格技术来进行数值求解,这样可以很快的滤掉各个频段上的误差,从而加速求解。

上面所说的是多重网格理论上的技术,而实行多重网格技术还有很多困难,首要的困难是粗网格的生成,对于结构网格来说这是比较容易的,只需要进行相应的采样即可,对于非结构网格,粗网格的构造要麻烦的多,所以说多重网格技术也是一种网格生成技术。非结构网格是一个难点,生成了非结构网格,再形成多重网格更是一个难点,与其相比,数值格式的确很简单。

Multi-grid是一种加速收敛技术,多译为“多重网格”,Multi-block是网络生成技术,多译为“多块网格”。

上面讨论的几何为基础的多重网格法。几何多重网格法一般在粗网格上直接构造守恒方程,对合适的问题,收敛会很快。缺点是对复杂几何形状,粗网格很难生成。

代数多重网格(Algebraic Multigrid)

代数多重网格(AMG)是利用几何多重网格(Geometric Multigrid,GMG)的一些总要原则和理念发展起来的不依赖于实际几何网格的多重网格方法。它继承了几何多重网格的主要优点,并且可以被用于更多类型的线性方程组。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Information-Flow Matting(2017)

Paper Information-Flow Matting
Code AffinityBasedMattingToolbox
We can not release the original source code. However, a reimplementation of the method is available as a part of the affinity-based matting toolbox. While this reimplementation does not give the same results as the original implementation we recommend its use in comparisons and extensions.[我们不公布源码,但是,作为工具箱的一部分重新实现了该方法,虽然重新实现的算法不会提供与源码相同的结果,但是建议用它作为比较和扩展。]

Introduction
在这里插入图片描述

  • Color-mixture information flow
    Due to transparent objects as well as fine structures and sharp edges of an object that cannot be fully captured due to the finite-resolution of the imaging sensors, certain pixels of an image inevitably contain a mixture of corresponding foreground and background colors. By investigating these color mixtures, we can derive an important clue on how to propagate alpha values between pixels.

  • K-to-U information flow

  • Intra-U information flow
    Inra-U distributes the information between similar-colored pixels inside the unknown region without giving spatial proximity too much emphasis.

  • Local information flow

  • Linear system and energy minimization

Semantic Soft Segmentation(2018)

Paper Semantic Soft Segmentation
Code SemanticSoftSegmentation

Introduction
While general natural image matting is beyond the scope of our method, Figure 12 shows several examples where our method is albel to generate satisfactory results on images from natural image matting datasets without requiring a trimap.(虽然一般的抠图超出了我们方法的范围,但是图12 几个示例图,我们的方法能够在抠图数据集上生成令人满意的结果而无需trimap图像。)
在这里插入图片描述
As a result, our runtime for a 640x480 image lies between 3 and 4 minutes. (因此,我们640x480图像的运行时间在3到4分钟之间。)

In the constrained sparsification step, we generate around 15-25 segments, which are then grouped using the feature vectors into 5. The number of layers was set via empirical observations, and in some cases, an object may be divided into several layers.While this does not affect the applicability of our method as combining those layers in editing is trival, more sophisticated ways of grouping the layers such as through recognition and classification can be devised.(在约束稀疏化步骤中,生成大约15-25个分割,然后使用特征向量将其分为5个分割。通过经验观察确定层数,在某些情况下,一个对象可以分为9个层。虽然这不会影响方法的适用性,但是可以通过识别和分类的方法设计出更复杂的分组方法。)

As Figure 15 demonstrates, our method may fail at the initial constrained sparsification step when the object colors are very similar, or the grouping of soft segments may fail due to unreliable semantic feature vectors around large transition regions.(如图15所示,当对象颜色非常相似时,我们的方法可能在初始约束稀疏化步骤中失败,或者由于围绕大过渡区域的不可靠语义特征向量,软分割可能失败。)
在这里插入图片描述

Learning-based Sampling for Natural Image Matting(2019)

Paper Learning-based Sampling for Natural Image Matting
Introduction
首先,估计背景图像,然后使用背景估计前景颜色,将估计的背景和前景以及原图像和trimap图像作为网络输入, 如下图所示。
在这里插入图片描述

  • Background sampling
  • Foreground sampling
  • Generating the alpha matting

参考文献

抠图技术及方法简介(Image Matting Overview)
视觉感知特性指导下的自然图像抠图算法研究
《A Closed-Form Solution to Natural Image Matting》的一句话的理解
图像抠图闭合方案 A Closed Form Solution to Natural Image Matting
多重网格法简介(Multi Grid)
多重网格方法
代数多重网格(Algebraic Multigrid)简介

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值