对于抠图(matting)大家可能不太熟悉,但我说几个功能,你定用过,微信视频通话中的背景虚化功能,B站视频播放过程中的弹幕蒙版,直播过程中的背景替换,它们背后的技术原理都与抠图有着密切的关系。

e10598d89d6003a7af61357498095d18.jpeg

什么是抠图?

抠图(Matting)是一种图像处理技术,它的目标是从图像中准确地提取出前景对象,并将其与背景进行分离。抠图的结果是一个具有透明度通道的图像,其中前景对象的像素值表示其在合成或叠加时应具有的透明度。

抠图的主要挑战在于处理前景对象与背景之间的复杂边界和细节,特别是在存在复杂的前景边缘和半透明区域的情况下。传统的抠图方法通常需要用户提供额外的输入,如剪贴路径(trimap)或用户交互,以帮助确定前景和背景的边界。然而,近年来,许多基于计算机视觉和深度学习的方法已经提出,旨在实现自动化和精确的抠图,而无需人工干预。

抠图的应用非常广泛,包括图像合成、虚化背景、物体分割、人像编辑、特效制作以及增强现实等领域。它为图像处理和计算机视觉任务提供了重要的先决步骤,使得可以从复杂的场景中准确地提取出感兴趣的前景对象,并将其与不同的背景进行组合和合成。

抠图与图像分割的区别

看完前面对抠图的定义,大家可能觉得这不就是图像分割吗?其实,两者是有区别的,分割的结果是像素分类标签,是整数,而抠图的结果是像素属于前景或者背景的概率。如果使用分割的结果提取前景图像,前景背景的边界没有过渡,会显得过于泾渭分明。

MODNET模型简介

论文地址:
https://arxiv.org/pdf/2011.11961.pdf
官方源码:
https://github.com/ZHKKKe/MODNet

c582df9dbaf6710dcf8111dbfcf7962a.png

模型的输出matte是与原始图像image大小一致的单通道矩阵,矩阵的每一个元素代表该像素属于前景的概率,接下来就可以通过matte来提取前景图像了。

foreground = image * matte + np.full(image.shape, 255) * (1 - matte)

Matting Tool抠图工具功能展示

Matting Tool将官方发布的pytorch格式预训练模型转换为ONNX格式,然后使用ONNXRuntime for .Net进行推理,采用WPF进行用户交互和效果展示。

源码:
https://github.com/AIDajiangtang/MODNET-Matting-tool
安装包以及模型文件:
公众号后台回复【mat】获取下载链接

软件支持导入本地图像,可以替换背景为纯色或者其他图像。

除了支持本地图像还支持截图和剪切板。

除了图像外,还支持导入视频,由于视频需要逐帧处理,所以为了提高效率,目前Fps设置为2,也就是每秒2帧。

 
 

ffcf18403d50e07320c650ef558bb0d6.jpeg

 
 
 
 
 
 
 
 
往期精彩回顾




适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑机器学习交流qq群772479961,加入微信群请扫码

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐