很多公式和图传起来比较麻烦,其实这是一篇论文(仅参考)

图像和视频抠图(Matting)技术可以分成自动和半自动;根据背景的先验知识,又有蓝屏背景,已知背景,和自然背景扣图。报告介绍了自然背景下的半自动扣图,以及能获得类似结果的技术,如Snapping。其中我实现了Bayesian Matting。

Image Matting是将图像的背景和前景分离的技术,广泛用于图像合成和影视特技制作中。最早的技术在如蓝色绿色等单色背景下将前景物体分离,之后通过已知自然背景包含和剔除前景物体的两幅图像求解,类似的是同一个前景物体在多个背景下的多幅图像,最新的技术都是处理自然背景的单幅图像的半自动学习方法,包括将Image Matting的技术应用到视频,可以将运动的物体抠出,并合成到任意场景中。报告主要介绍半自动学习技术。

所谓半自动,是因为实现用户必须在图像上预先指定三个区域(Trimap):背景(黑色)、前景(白色)、未知区域(灰色),图1(b)。根据已知确定的前景背景,半自动技术才能一边学习一边求解。当然也有其它的交互方式,不一定需要这么详致的信息,在2.3和2.4种都是特殊的更为简化的交互。

Matting一般基于公式1,C为未知点的颜色, 是透明度,B是背景色,F是前景色:

Bayesian Matting (BM)定义一个Bayesian框架来公式化Matting的参数,并求解一个最大后验问题。BM的改进还在于,通过滑动的窗口,将已经计算出来的未知区域也作为样本数据,这样在过渡区域获得更好的效果。BM的记过比之前所有的方法都要好。

2.1.   Poisson Matting [2] (Siggraph 2004)

Poisson Matting(PM)是在图像的亮度梯度场上求解一个泊松方程,确定 。PM首先在全局上求解,得到的结果通过多种局部滤波方式选择性的改进。由于给了用户更多的交互手段,处理复杂的场景比BM更加稳定

2.2.1泊松方程

将公式1表示为公式11,对公式11两边求偏导数得到公式12。左侧对应的就是输入图像的亮度梯度,只是估计值。假定背景和前景都是比较光滑的,那么项 近似为零,公式12变换成公式13,这对 的梯度估计,PM就是在这个梯度场上解出 。

相应的泊松方程是公式14,是拉普拉斯算子,div是散度运算。其狄利克雷边界条件 定义如公式15,其中代表未知区域的外边界,前景,背景,如图2(a)。

图2

2.2.2全局求解

这也是一个迭代优化,有三个步骤:

1)       初始化(F-B)项,因为F和B未知,分别近似为在 中最邻近的像素。

2)       计算 ,求解公式14。

3)       F,B优化,使,即把几乎全部是前景色的像素加入到 ;类似的,。然后将 中的F,B更新到在 和 与之最近的像素颜色。

重复步骤2,3,直到 的变化足够小或 和 为空。

2.2.3局部优化

局部优化事实上在全局求解结果不令人满意的区域加入用户的交互,使得对 梯度的估计更加准确,同时加入全局求解中被忽略的 项,如图2(b)区域 。此时的边界条件是公式16,

2.1.   GrabCut-Interactive Foreground Extraction using Iterated Graph Cuts [3](Siggraph 2004)

GrabCut与上诉两种Matting不太一样,首先是在先验知识的获取上,只需要用户在前景物体周围画一个方框;其次,GrabCut分成两个步骤,一是前景背景分割,二在膨胀的边界上在真正的Matting,平滑过渡。GrabCut在对比度较低的边界能获得比以往技术更好的结果,但是并不能处理复杂的情况,比如大面积的交错毛发,这是因为第一步的分割不能在这些区域获得好结果。

2.3.1 数据模型

GrabCut的数据模型建立在GraphCut的基础上,只是用了一个高斯混合模型(Gaussian Mixture Model)代替原先的直方图,与Bayesian Framework类似。

对于输入图像z = (z1,…,zn,…,zN),透明值表示成 =( ,…, ),,若是强分割,,0表示背景,1是前景。GrabCut附加了一个向量k = (k1,…,kn,…,kN), 到图像z,代表来自背景或前景的一个GMM。于是,定义Gibbs能量:

能量E包含了数据项和平滑项。数据项U(公式18)定义了 的分布与输入z的匹配程度,其中。 是一个高斯概率分布, 是混合权系数;通过对数函数将乘法和指数运算转化成加减法,全部展开为公式19。 分别是高斯分布的均值和协方差矩阵。

于是,公式19相关的所有参数:

 于是,我们要估计 ,通过动态规划最小化以下Gibbs能量:

 最后,估计的前景色与已知的前景色比较,将差异最小的复制到当前区域,进一步保证平滑。

2.4.1 GraphCut图像分割

图像被看成一个图, , 是所有的节点, 是连接相邻节点的边。图像分割可以当作一个二元标记问题,每一个 ,有唯一的一个 {前景为1,背景为0}与之对应。所有的 集合X可以通过最小化Gibbs能量E(X)获得:

同样的,根据用户画的曲线,我们有前景节点集F和背景节点B,未知节点集U。首先用K-Mean方法将F,B的节点聚类,计算每一个类的平均颜色, 代表所有前景类的平均颜色集合,背景类是 。计算每一个节点i到每一个前景类的最小距离,和相应的背景距离 ,定义公式28:

前两组等式保证定义与用户输入一致,第三组等式意味着与前背景的颜色相近度决定着未知点的标记。

E2定义为与梯度相关的一个函数:

E2的作用是减少在颜色相近的像素之间,存在标记变化的可能,即使其只发生在边界上。

上述作用于像素的GraphCut因其效率并不适合实时交互。于是[4]在输入图像上进行预先作了过分割,然后把每一块当作一个像素来看待,颜色取均值,速度提升了10倍。

一、        References

[1] Chuang, Y.-Y., Curless, B., Salesin, D. H., Szeliski, R. 2001. A bayesian approach to digital matting. In Proceedings of CVPR 2001, Vol. II, 264-271.

[2] Jian Sun, Jiaya Jia, Chi-Keung Tang and Heung-Yeung Shum. Poisson Matting.In Proceedings of ACM SIGGRAPH 2004, Vol 23, No. 3, April 2004.

[3] ROTHER, C., BLAKE, A., AND KOLMOGOROV, V. 2004. Grabcut - interactive foreground

extraction using iterated graph cuts. In Proceedings of ACM SIGGRAPH 2004.

[4] Yin Li, Jian Sun, Chi-Keung Tang, Heung-Yeung Shum, 2004, Lazy Snapping, In Proceedings of ACM SIGGRAPH 2004.

paper 117:image matting 数字抠图的更多相关文章

  1. paper 116:自然图像抠图/视频抠像技术梳理(image matting, video matting)

    1. Bayesian Matting, Chuang, CVPR 2001.http://grail.cs.washington.edu/projects/digital-matting/paper ...

  2. Python学习手册(第4版) - 专业程序员的养成完整版PDF免费下载_百度云盘

    Python学习手册(第4版) - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:g7v1 作者简介 作为全球Python培训界的领军人物,<Python学习手册:第4版>作者M ...

  3. Python学习手册(第4版)PDF高清完整版免费下载|百度云盘

    Python学习手册(第4版)PDF高清完整版免费下载|百度云盘 提取码:z6il 内容简介 Google和YouTube由于Python的高可适应性.易于维护以及适合于快速开发而采用它.如果你想要编 ...

  4. LearnPython_week3

    函数说明 1 # -*- coding:utf-8 -*- 2 # Author:Wong Du 3 4 5 ###函数, 6 # 能避免代码重复, 7 # 方便代码修改等操作 8 def wong( ...

  5. 图像抠图算法学习 - Shared Sampling for Real-Time Alpha Matting

    一.序言   陆陆续续的如果累计起来,我估计至少有二十来位左右的朋友加我QQ,向我咨询有关抠图方面的算法,可惜的是,我对这方面之前一直是没有研究过的.除了利用和Photoshop中的魔棒一样的技术或者 ...

  6. paper 108:系统学习数字图像处理之图像复原与重建

    首先,必须注意这里所限制的处理条件. 关于图像退化/复原模型 退化的图像是由成像系统的退化加上额外的噪声形成的. 1.只考虑噪声引起的退化 噪声模型,包含于空间不相关和相关两种,除了空间周期噪声,这里 ...

  7. paper 156:专家主页汇总-计算机视觉-computer vision

    持续更新ing~ all *.files come from the author:http://www.cnblogs.com/findumars/p/5009003.html 1 牛人Homepa ...

  8. paper 61:计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接

    转载出处:blog.csdn.net/carson2005 以下链接是本人整理的关于计算机视觉(ComputerVision, CV)相关领域的网站链接,其中有CV牛人的主页,CV研究小组的主页,CV ...

  9. paper 27 :图像/视觉显著性检测技术发展情况梳理(Saliency Detection、Visual Attention)

    1. 早期C. Koch与S. Ullman的研究工作. 他们提出了非常有影响力的生物启发模型. C. Koch and S. Ullman . Shifts in selective visual ...

随机推荐

  1. 性能分析神器VisualVM

    VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回 ...

  2. jquery 练习笔记

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Weblogic部署项目三种方式

    在weblogic中部署项目通常有三种方式:第一,在控制台中安装部署:第二,将部署包放在domain域中autodeploy目录下部署:第三,使用域中配置文件config.xml 进行项目的部署. 控 ...

  4. JQuery中on()函数详解

    JQuery API中定义的on方法,专业名词很多,读起来并不是那么容易,而对于开发人员知道函数怎么使用就可以了.本文将JQuery的说明翻译如下: on(events,[selector],[dat ...

  5. Ubuntu apt-get "Hash Sum mismatch" 问题解决方法

    参考:ubuntu: apt-get update的时候遇到"Hash Sum mismatch"错误 在安装Mininet的时候,apt-get update的时候遇到了这个问题 ...

  6. ExtJS笔记 Ext.data.Types

    This is a static class containing the system-supplied data types which may be given to a Field. Type ...

  7. hibernate学习(7)——HQL查询

    1.HQL查询定义 Hibernate查询分类: 1. get/load 根据OID检索 2. 对象视图检索 c.getOrders 3. Sql语句 createSqlQuery 4. Hql语句 ...

  8. C# 动态调用webservice

    最近项目中,用到动态调用webservice的内容,此处记录下来,留着以后COPY(我们只需要在XML,config文件,或者数据库中配置webservice连接地址和方法名即可使用): using ...

  9. 关于JavaScript的判断语句(2)

    上一篇描述的都是一些通过条件判断来执行,符合条件下面的代码块,达到对动作的反应效果 这篇将描述的是for. for/in. while. do/while循环语句. for语句: for(i=0,i& ...

  10. python零碎知识点一

    dir(object),列出对象所有可以用的的方法(参数可以为任意对象,例如class,func等) >>>dir('str') ['__add__', '__class__', ' ...