一、抠图算法简介

  Alpha matting算法研究的是如何将一幅图像中的前景信息和背景信息分离的问题,即抠图。这类问题是数字图像处理与数字图像编辑领域中的一类经典问题,广泛应用于视频编缉与视频分割领域中。Alpha matting的数学模型是

                  

由Porter 和 Duff于1984 年提出[1]。他们首先引入了α 通道的概念,即它是一种前景和背景颜色的线性混合表示方法。一张图片包含前景信息、背景信息,将该图片看成是前景图和背景图的合成图,于是便有了以上的混合模型。前景α为1, 背景α为 0,α的取值介于0-1之间,表示前后背景图的线性组合。在大多数自然图像中,大多数像素点都属于绝对前景或者绝对背景,如何将其它混合点的α 值准确的估计出来是alpha matting的关键。

  给定一个输入图像,对于所有像素点,它的(F,B, α)都是未知的,需要进行估计,如果图片是灰度图片,每个像素点包含3个未知数,这样的问题是一个欠约束问题。大多数抠图问题需要用户交互的先验条件,使得我们对已知输入图像的颜色统计有预先的估计和假设,从而能够更加准确的估计出未知量的值,常见的人工添加的约束条件有三区标注图(trimap)草图(scribble)两种。

  预先提供的约束条件(trimap图或scribble图)越精确,未知区域内的点就越少,更多前景和背景信息就更容易利用。然而,在实践中,要求预先输入非常准确的 trimap 是一件异常繁琐的工作,不现实也不必要的,如何在预先提供的trimap以及最终算法所求得的抠图结果之间寻求一个最佳答案,不同的抠图算法对于这个问题有着不同的阐述。

二、Alpha matting 算法的发展

  通常,alpha matting算法要解决两个问题,一个是求解图像像素点颜色分布模型,一个是求解像素点颜色和α 值的关系。一些经典的抠图算法会预先假设好局部像素点颜色分布模型和像素点颜色α 值模型,再通过采样(例如贝叶斯抠图[2])或传播(例如封闭式(closed-form)抠图[3])的方法拟合模型,求解α 值,另一些抠图算法将抠图问题视为一个半监督的学习过程,用学习的方法拟合模型求解α 值[4]。以上这些方法中关联像素点是从待定像素的邻域中取的,除了这些局部抠图算法之外,一些学者根据非局部原理提出非局部抠图算法,例如K近邻抠图[5]、全局采样抠图[6]等。近年来深度学习如火如荼,最近比较热门的发展方向是基于CNN的抠图方法[7]

  2003年Chuang Y Y等提出贝叶斯抠图(Bayes matting)[2]算法,核心是通过领域采样,从待定像素的领域像素中采样关联像素,利用图像像素点的颜色值特征,以定向高斯模型建立像素颜色模型,再用极大似然发估计α 值。贝叶斯方法从条件概率的角度去考虑抠图问题,以贝叶斯公式建立F、B和α的联合概率分布,抠图问题就可以被转化为已知图片像素颜色I的情况下,为了最大化后验概率P(F,B,α|I),求 F、B和α估计值的问题。

  2006年Levin A等提出封闭式抠图(Closed formed matting)[3],核心思想是通过传播的方法来利用图像的颜色特征,即允许α值从已知区域传播到领域未知域。封闭式抠图基于两个假设:一是颜色分布遵循颜色线性模型;二是前景背景颜色值局部平滑,并由此推知未知像素的alpha值和该像素点的颜色I呈线性相关关系,经过矩阵计算之后,代价函数表达式转化为关于α的二次型形式:  

                  

  其中L为拉普拉斯矩阵(matting Laplacian matirx),可以由图像局部像素点颜色计算得到。由此,待定点的α值可以在没有明确估计该像素点前景和背景颜色的情况下以封闭的形式求解。

  封闭式抠图方法提出的拉普拉斯矩阵被广泛地于各种抠图方法中。例如,K近邻抠图(KNN matting,2012)[5]就是通过在特征空间取k个最邻近点计算得拉普拉斯矩阵计算α值,这种非局部抠图关注于可以处理更稀疏的trimap,甚至不需要附加的约束条件输入,直接通过图像自身的前景与背景属性的区别来进行分割。

  贝叶斯算法基于图像局部颜色一致性的假设前提,封闭式抠图预先假设了颜色线性模型,这两种经典方法都预先假设了颜色分布模型,考虑到颜色分布不一定服从一个确定的模型,2009年有学者提出了基于学习的抠图算法(learning based matting)[4],将抠图问题视为一个半监督的学习问题,以更通用的学习的方法拟合颜色模型求解α值,并且这种算法模型,除了颜色之外还可以融入其他图像特征。较早期的抠图算法中图像特征只考虑颜色,例如贝叶斯抠图(2003)和封闭式抠图(2006)采用的图像特征是颜色,K近邻抠图(2012)采用的特征是HSV颜色和像素点坐标两种[5],随着抠图算法的发展,算法模型中渐渐融入其他图像特征。例如2017年Chao L[9]设计了一个新的特征,称为SUMD特征,以增加像素识别能力。这种特征是一种纹理特征,功能是使具有相似纹理的像素点具有相似的特征值。

  传统alpha matting 方法通常只使用低层次的特征,基于深度学习的算法可以考虑更高层次的图像特征,并且可以通过创建大型图像数据集来自动优化算法。2017年Xu N等 [7]提出一种基于深度学习的新抠图算法,使用的CNN模型分为两个阶段:第一阶段是深卷积编码器,将原图和对应的trimap图作为输入,预测图像的α;第二阶段是一个小型卷积神经网络,作用是对第一个网络的输出进行精修优化。由于CNN网络可以捕捉到更高阶的图像结构和语义特征,并且可以通过大数据集进行优化,基于深度学习的抠图方法可以更好的适用于真实图像。

三、抠图公式-图像去雾

  图像去雾的研究算法有很多,但是主要分为两类,基于图像增强的去雾算法和基于图像复原的去雾算法。基于图像增强的去雾算法主要是通过去除图像的噪声,提高图像的对比度,从而恢复出无雾清晰图像。而基于图像复原的去雾算法,主要是采用雾化图像模型。

  2009年何凯明[14]提出暗通道去雾算法,将抠图算法应用到图像去雾算法中,以优化透射率计算。何的暗通道去雾算法是基于图像复原的去雾算法,采用雾化图像模型,其数学表达为:

                 

  其中I(x)为观测到的雾化图像,J(x)是景物的实际图像,t(x)是透射率,A 为大气光成分。

      

  图像去雾的目标就是从I(x)中恢复J(x) 、A、 t(x),在雾化图像模型中,大气光成分A虽然是未知量,但一般情况下,它是一个三通道强度值均接近于255的全局常量,唯一的未知是散射率t(x),而在求得t(x)的情况下,可以很容易恢复出实际图像J。

  雾化图像模型抠图公式数学表达形式是一样的,J、A、t分别与前景F、背景B、透明度通道α对应。何参考封闭式抠图[3]的代价函数提出去雾算法透射率的代价函数:

                  E(t) = tTLt                                          

  其中L为拉普拉阿斯矩阵,与封闭式抠图[3]中的拉普拉斯矩阵有着相似的形式,这样就可以采用图像软抠图的方法,对计算得到的透射率图t(x)进行精细优化。

  采用封闭式抠图算法优化图像去雾透射率的方法计算速度较慢,为了解决这个问题,2013年何凯明[15]提出了一种新型的图像滤波方法——引导滤波器,将封闭式抠图算法应用在图像滤波中。

参考文献

[1]       T. Duff, T. Porter. Compositing Digital Images[C]//Proceedings of the 11th Annual Conference on Computer Graphics and Interactive Techniques. 1984:253–259.

[2]       Chuang Y Y, Curless B, Salesin D H, et al. A Bayesian approach to digital matting[C]// IEEE Computer Society Conference on Computer Vision & Pattern Recognition. 2003.

[3]       Levin A , Lischinski D , Weiss Y. A Closed Form Solution to Natural Image Matting[C]// null. IEEE Computer Society, 2006:61-68.

[4]       Zheng Y , Kambhamettu C . Learning based digital matting[C]// 2009 IEEE 12th International Conference on Computer Vision (ICCV). IEEE Computer Society, 2009.

[5]       Chen Q , Li D , Tang C K . KNN Matting[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013, 35(9):2175-2188.

[6]       He K, Rhemann C, Rother C, et al. A global sampling method for alpha matting[J]. 2011.

[7]       Xu N , Price B , Cohen S , et al. Deep Image Matting[J]. 2017.

[8]       He K , Rhemann C , Rother C , et al. A global sampling method for alpha matting[J]. 2011.

[9]       Chao L, Ping W, Zhu X, et al. Three-layer graph framework with the sumD feature for alpha matting[J]. Computer Vision & Image Understanding, 2017, 162:S1077314217301236.

[10]     姚桂林. 数字图像抠图关键技术研究[D].哈尔滨工业大学,2013.

[11]     杨仙魁. 闭合型抠图的研究与应用[D].云南大学,2013.

[12]     崔兆华,高立群,马红宾,李洪军.改进alpha-matting算法及其在军事红外目标提取中的应用[J].渤海大学学报(自然科学版),2013,34(02):225-231+95.

[13]     Al Y Y B E. Interactive Graph Cuts for Optimal Boundary & Region Segmentation of Objects in N-D Images[J]. Iccv, 2001, 1:105-112.

[14]     He K, Jian S, Tang X. Single image haze removal using dark channel prior[C]// IEEE Conference on Computer Vision & Pattern Recognition. 2009.

[15]     He K, Sun J, Tang X. Guided Image Filtering[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2013, 35(6):1397-1409.

Alpha matting算法发展的更多相关文章

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

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

  2. CNN目标检测系列算法发展脉络——学习笔记(一):AlexNet

    在咨询了老师的建议后,最近开始着手深入的学习一下目标检测算法,结合这两天所查到的资料和个人的理解,准备大致将CNN目标检测的发展脉络理一理(暂时只讲CNN系列部分,YOLO和SSD,后面会抽空整理). ...

  3. 标题 发布状态 评论数 阅读数 操作 操作 CNN目标检测系列算法发展脉络简析——学习笔记(三):Fast R-CNN

    最近两周忙着上网课.投简历,博客没什么时间写,姑且把之前做的笔记放上来把... 下面是我之前看论文时记的笔记,之间copy上来了,内容是Fast R-CNN的,以后如果抽不出时间写博客,就放笔记上来( ...

  4. c#实现SharedMatting抠图算法

    内容简介 将Alpha Matting抠图算法由c++ 版本移植至c#环境. 主要采用OpenCV的C#版本Emgu取代c++支撑的OpenCV. 参考资料 http://www.inf.ufrgs. ...

  5. RGBA alpha 透明度混合算法实现和测试

    目录 1.算法叙述 1.1.透明度混合算法1 1.3.简易Alpha混合算法 2.算法实现代码和测试 2.1.透明度混合算法1实现代码 2.1.AlphaBlend算法实现代码 2.3.测试截图 2. ...

  6. RGBA alpha 透明度混合算法

    RGBA alpha 透明度混合算法 .分类: 图像处理 Ps技术 2011-05-25 09:11 1112人阅读 评论(0) 收藏 举报 Alpha 透明度混合算法,网上收集整理,分成以下三种: ...

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

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

  8. {Links}{Matting}{Saliency Detection}{Superpixel}Source links

    自然图像抠图/视频抠像技术发展情况梳理(image matting, alpha matting, video matting)--计算机视觉专题1 http://blog.csdn.net/ansh ...

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

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

随机推荐

  1. 11g OCM 考试感悟

    11g OCM 考试感悟 PrudentWoo 累,累.真的很累.考前每天全场景的刷两遍.三遍不觉得累.总感觉练习时间不够.考中尽管时间足够.可是压力很大.尤其看到一些和平时训练不一样题目的时候,那种 ...

  2. 获取当前View

    在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...

  3. struts 类型转换器

    类型转换 (来自尚学堂) a)      默认转换 i.       日期处理 b)      写自己的转换器: public class MyPointConverter extends Defau ...

  4. Apache OFBiz 添加样式

    1.打开themes文件夹,拷贝一份样式作为自己的样式更改初始样式,我这里拷贝的是flatgrey文件夹,重新命名为qlstyle     2.在文件/ofbiz/framework/common/c ...

  5. AsyncHttpClient来完成网页源代码的显示功能,json数据在服务器端的读取还有安卓上的读取

    一.使用AsyncHttpClient来完成网页源代码的显示功能: 首先.我们引入 步骤: 1.添加网络权限 2.判断网页地址是否为空 3.不为空的情况下创建客户端对象 4.处理get/post请求 ...

  6. Lintcode---线段树修改

    对于一棵 最大线段树, 每个节点包含一个额外的 max 属性,用于存储该节点所代表区间的最大值. 设计一个 modify 的方法,接受三个参数 root. index 和 value.该方法将 roo ...

  7. IIS6.0应用程序池回收(转载)

    这段时间公司的程序经常出现问题,然后整个应用程序就不能访问了,我们的服务器版本:window 2003 SP1,IIS6.0,没有安装Microsoft Visual Studio .NET . 问题 ...

  8. Java编程介绍

    原文地址:http://happyshome.cn/blog/java/introduction.html 本文介绍的编程基础知识很Java适合刚開始学习的人. 要学习编程,你须要了解编程语言的语法和 ...

  9. [k8s]kubelet最佳实战

    kubelet端口解析: 10250 –port: kubelet服务监听的端口,api会检测他是否存活 10248 –healthz-port: 健康检查服务的端口 10255 –read-only ...

  10. [sj系统] phabricator系统升级

    sj是公司产品bug管理 wiki一体化系统 ,很刁. 安装: http://www.cnblogs.com/chorulex/p/5381558.html 升级: https://phabricat ...