Image Matting(抠图)技术介绍

Image Matting(抠图)技术介绍:序言

        最近项目需要开始研究图像处理中的image matting技术了,中文简称抠图技术。刚接触这项技术时一直有些疑虑,这个和图像分割技术有什么差别,然后大概懂了。基本抠图都要人工交互,而分割技术则是全自动的,当然有人工介入的抠图分割在准确性上要远高于常规的图像分割技术,其实近两年不少文章都将分割技术作为抠图的第一步融入进去了。

       字码到这里又一想,其实除了上述提到的,他俩还是有其他本质差异的。图像分割是将原图分割成若干块,分割的好与不好就看分出来的块是否与图像的内容对应了,例如如果分割结束后某一块只包含半张人脸,另外半张在另一块上,那肯定就不是好的分割了。至于抠图技术,基本只会分成两块,一块是前景,另一块是背景,而大多数时候我们抠图也就是为了把前景给拿出来。

       早期这项技术主要被用在电影工业中,所以这是一项古老的技术了,只是现在依然在不断发展进步。你有时会看到拍电影的摄影棚都是全绿色背景,以及一群穿着全绿色衣服的工作人员。这些都会在后期的抠图技术下被抠掉换上“真正的”背景,这用的就是最原始的蓝屏抠图技术,即背景是纯色时用的抠图技术,纯色的背景可以确保前景被准确抠出。

       不过蓝屏抠图我并不想介绍,毕竟纯色背景的情况在现实中太少,应用面狭窄,背景是自然图像的抠图技术才是本系列介绍的重点。

       虽然这项古老的技术发展至今已经数十年了,但几乎所有的解决方案都是在想办法做成一件事情,把这个公式“C = αF + (1-α)B”给解出来,这里就暂时把它称为抠图界的“上帝公式”吧。解什么?就是把α(不透明度)、F(前景色)和B(背景色)三个变量给解出来,C为图像当前可观察到的颜色,这是已知的。问题是一个等式解不出三个变量啊? 因此就必须引入额外的约束使这个方程可解。这个额外的约束就是由用户指定的trimap图或者是仅仅在前景和背景画几笔的草图。

       先在这里停一下,外行看到这里已经有点云里雾里了。那个公式是啥还没解释呢,那个公式其实反应出了一个模型,它把原始的图像看成了由若干图中对象叠加合成所组成的图,α则是每个对象的不透明度([0,1]区间变化,1为不透明,0为完全透明)。这个模型也就告诉我们你当前在图中看到的像素的颜色是已经叠加合成过的颜色了也就是C,至于α、F、B都是未知的。其实我当初看到这里时依然还有疑问,既然是抠出来的前景,还有透不透明一说吗?正常的想法应该是完全不透明才对。当然事实确实是前景是不透明的α=1,而背景α=0,但问题是你能100%确定每个像素它是否是属于前景或是背景呢?也许一个像素一个像素分析后你也确实可以确定哪个属于前景,哪个属于背景,但这时图也已经抠好了,还要计算机干啥呢?这里也就引出了抠图技术真正需要计算机出马的部分了,就是处理在图像中那些人工不是那么容易辨认是前景还是背景的细节部分。我们把能轻易辨认的部分分别在原图标志为前景和背景,剩下不容易确定的部分则为未知区域由计算机处理。这样一张由人工制作的包含前景、背景和未知区域的图就叫作trimap图。不过计算机可没人这么聪明,它无法精确确定在未知区域的像素究竟是属于前景还是属于背景,只能去估计,这样导致的结果就是α不再是非0即1,而是有可能出现小数。

       因此基本上所有在文献中的抠图算法都是在教计算机如何更准确更快地通过用户指定的前景和背景估计出未知区域的α、B、F,而用户指定的方式一般分为两种,一种是信息量很大的trimap图,另一种则是信息量具少的草图(scribbles)。然而trimap图的构建是很麻烦的,用户需要几乎把整张图都涂满才行,而草图就方便很多,只要在前景和背景处画几笔即可。所以对草图的处理才是未来抠图技术的发展趋势。

       获取到每个像素的α值后就可以生成一张α图,这张图看起来是只有前景是白的,其余都是黑的,这就像是我们都曾见过的在艺术创作中使用的蒙版(matte),只把前景露出来,其他背景被挡住。它和原图结合后就完成了抠图的工作了。之后只要继续按照上帝公式就可将抠出的前景移到新的背景中了。

       优秀的抠图算法是有能力将前景中非常细小的毛发细节都能提取出的好算法,这点是传统图像分割技术做不到的。

 

(以下图片均来自互联网)

原图

trimap图

α图(蒙版图)

草图(scribbles)

α

转发:https://blog.csdn.net/blueswhen/article/details/22617631?locationNum=10

你可能感兴趣的:(抠图matting,matting)