Design and implementation of an image matting system on Android Phones
论文链接:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7334761
发表出处:2015 IHMSC
1.内容
本文旨在介绍一个人机交互形式便捷、处理速度快的Android图像抠图应用的设计与实现。
首先,在Android图形API和Android触摸API的基础上获得用户的交互输入。
然后采用一种新的基于改进的梯度和引导滤波的抠图算法对图像进行处理。
如果用户对抠图结果不满意,可以在结果中添加一些涂鸦作为额外的约束。
然后,抠图结果将被所提出的抠图算法再次处理。
2.方法流程
首先,从用户的交互输入中收集一些样本像素。
接下来,最小描述长度(MDL)用于对采样像素进行聚类,并训练几个高斯混合模型。
然后,定义一个图。
接下来,基于期望最大化算法和最大流/最小割图分割进行迭代图像分割。
最后,在局部区域使用导向滤波来平滑前景边缘。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0bf69f42cafab0e44bdf8b05e3491455.png#pic_center)
3.系统设计
用户从安卓手机中选择一张图片后,画一个矩形来选择前景对象。然后自动生成mask图像。原始图像和mask图像将通过抠图算法进行处理。然后用户评估抠图结果。需要在抠图结果中添加一些涂鸦来修改蒙版,如果用户对结果不满意,图像将被重新处理,直到获得满意的结果。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/983307ffc69c2c98936016615c8fc8b1.png#pic_center)
4.组件实施
该系统由三部分组成:用户交互输入,抠图算法和结果修改,它们之间的关系如图所示
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3e66ff4da959a4611be53ae7bc699b40.png#pic_center)
(1)用户输入
将采样像素分类为四种类型:前景像素,背景像素,可能的前景像素和可能的背景像素。创建一个具有与原始图像相同大小的新图像(称为mask图像),该过程在不同类型的样本像素的位置写入不同的值。
提供两种交互方式:
①矩形:
在图像上绘制一个矩形以包围前景对象,然后将矩形内部的像素标记为可能的前景像素,将外部像素标记为背景像素
②涂鸦:
可以在涂鸦中选择四种标记笔来标记不同的样本像素
(应首先执行矩形,然后在图像上运行抠图。如果结果不满意,则需要在上面添加一些涂鸦)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d81451262481ab2be00bc8b4a2e59386.png#pic_center)
(2)抠图算法
抠图算法分为六个步骤:初始化;样本像素建模;为每个像素分配适当的模型并更新模型参数;能量函数定义和整个图像的图形模型建立;采用最大流量/最小切割算法和EM算法对图像进行分割;在部分区域应用导向滤波器以平滑分割结果。
①在初始化步骤中,我们需要检查在用户交互阶段生成的蒙版图像,并确保大小和像素值合理。
②为了characterize样本像素,分别在RGB颜色空间中为前景像素和背景像素构造了几个高斯混合模型,使用可能的前景像素和前景像素来建模前景,其余像素来建模背景。
③选择最小描述长度(MDL)来确定每个GMM的正确簇数K和高斯参数
MDL:
假设k是已知的(k = 1,2 … K),则像素x n归因于第k个簇的高斯概率密度函数为:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f40ec97319f1d298b189db8b7416c910.png#pic_center)
令πk表示像素归因于第k个簇的概率,它表示第k个簇中的样本数如何加权整个样本。然后,得出像素x分布到任何高斯聚类的概率为:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/00c00b758184026ed9a12316a357e35c.png#pic_center)
其中θ(π,μ,σ)是每个GMM的高斯参数:π表示每个GMM在所有GMMS中的权重,μ和σ分别是每个GMM的均值和标准差。
用于建模高斯混合的MDL准则[16]表示为:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/42a9164096204d3680c846ad21aac09d.png#pic_center)
K是簇数。 N是样本数。 M是图像的通道量
④在初始化K和θ之后,我们利用EM迭代算法来优化MDL方程
当MDL(K,θ)达到稳定值时,将记录K,θ和MDL(K,θ)。如果K> 1,则减少聚类数,然后再次采用EM算法并记录每个最优值。当K等于1时,退出迭代,然后选择最小化MDL的θ和K作为最终最优值。接下来,为每个图像像素分配适当的GMM并为每个GMM更新高斯参数
⑤定义一个能量函数,并基于Grabcut算法
(https://blog.csdn.net/molihong28/article/details/89337211)为整个图像构造一个图形;使用最大流量/最小切割来最小化能量函数,最后得到存储在蒙版图像中的粗略分割结果
⑥应用导向滤波器平滑分割结果
彩色图像导向滤镜的原理如下:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2940e9798ad6b0fa6cd3ffd8c8be57cf.png#pic_center)
其中I是要进行抠图处理的原始图像,p是从分割结果中得到的二值图像,q是滤波器输出。合成原始图像I和滤波器输出q,将得到初步的抠图结果。
5.结果
(1)速度
从速度来看,花的369 229图像需要2秒,菠萝的610459图像需要9秒,娃娃的652 459图像需要9秒,透明包的554459图像需要8秒。总而言之,500*500图像的平均速度约为6秒
(2)视觉效果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0931ae2ad644113338f05c93691dc48f.png#pic_center)