基于SMPL可变模型和单幅图像的动画三维重建方法

2023-11-02 12:36肖志良李中华
计算机应用与软件 2023年10期
关键词:轮廓姿态标签

肖志良 李中华

1(佛山职业技术学院电子信息学院 广东 佛山 528137)

2(中山大学智能工程学院 广东 广州 510006)

0 引 言

随着计算机多媒体相关技术的快速发展,三维重建[1-2]技术逐渐普及,其应用常出现在网络媒体和商品中,如线上产品介绍与营销、虚拟现实的体验产品等。由于三维重建可带给人们完全不同于二维的视觉感官和体验,且应用范围广泛,因此,该领域的研究具有较大商业价值和意义。

目前较多的方法是采用了视频动画方法,如文献[3]提出一种“视频纹理”方法,从视频中创建较大长度的视频,从动作捕捉视频中生成特定于人物的视频纹理。文献[4]通过在时间和空间中对给定视频进行分割来创建具有运动效果的图像,但运动幅度非常有限。文献[5]提出一个完整的重建系统用于恢复包含多个刚体运动目标的视频动态场景结构,主要通过大尺度光流法获得特征点轨迹,并在此基础上对独立目标进行姿态估计。文献[6]提出基于图像特征点匹配的视频三维重建方法,对特征点一定邻域内图像的纹理、结构以及其他特征进行统计,采用体绘制法完成图像序列的三维重建,但该方法的重建效率较低。

与视频或图像集合相比,从单幅图像中进行动画重建,也可实现较好的效果,所需的信息较少,且约束条件较少。如文献[7]利用梯度场修改的方法将样本表情映射到输入人脸上,对输入图像的眼睛部分进行纹理合成处理,并创建人脸变化。文献[8]利用大姿态三维人脸重建技术,基于可变形模型的三维人脸图像重建方法,对一幅人脸图像进行姿态调整并重建,以满足人脸匹配的条件。但该方法无法对人脸动画做后续处理,属于静态重建。文献[9]针对自由曲面的表面无纹理、曲率变化不可预测特点,提出了一种基于网格投影的三维重建方法,将网格条纹投影到自由曲面表面,使得自由曲面具有确定的可识别纹理与特征。但未能较好解决网格边框线条和内部线条交叉区域畸变,从而影响曲线拟合。文献[10]提出一种利用手绘人体动作草图到三维骨骼模型的重建方法,将三维骨骼模型渲染为二维图像来建立维度映射关系,使用基于深度卷积神经网络对图像分类模型进行构建。该方法需要大量离线样本的学习,且必须在没有自遮挡的理想情况下进行。针对单幅图像中3D人体形态估计,文献[11]提出了捕捉各种不同的人体三维形态SMPL模型,其中,SMPL是一种参数化(可微分)的人体模型。并证明该模型可有效进行3D姿态和形状估计,然而,该方法不能重建全3D模型。文献[12]提出一种单幅图像重建动作的视图场景表示方法,利用场景几何的强先验信息提高姿态估计的精度,利用多视图多点光线完成人体动作姿态重建。但该方法需要较多的场景约束先验知识,场景设定较为固化。文献[13]利用深度神经网络和SMPL模型,提出了用于单视角人体姿态估计的端到端框架,并研究人体与纹理图的稠密对应关系。但不一定适用于动画重建。

大部分单幅图像人物动画制作方法主要着眼于2D或伪3D动画,与此不同,本文旨在提供全3D体验,并考虑到人物着装,寻求动画绘制解决方法。且提出的方法支持部分遮挡的处理,特别是身体前方的手臂所造成的遮挡。与以往方法相比,所提方法能够较好完成各种样例的3D动画重建,并提供更好的增强现实体验。

1 提出的重建方法

本文研究的核心技术问题是如何从单幅图像中重建出可动画、纹理化的3D网格。所提方法的流程如图1所示。首先执行人物检测、分割和2D姿态估计。利用上述结果,创建装配网格。其后,将SMPL模板模型[13]拟合到2D姿态,并投影到图像中,作为法线贴图和蒙皮贴图。所提方法的主要思想在于:找到人物轮廓与SMPL轮廓之间的映射,将SMPL法线/蒙皮贴图扭曲到输出,通过优化SMPL网格上的顶点位置,并考虑到轮廓边界,避免挤压,以及自相交,强制SMPL模型适应轮廓。利用整合扭曲后的法线图建立深度图。重复该过程,以模拟模型的背面视图,并结合深度图和蒙皮图,以创建完整的装配后3D网格。同时在修补背景上使用运动捕捉序列对网格做进一步纹理化和动画绘制。

图1 方法主要流程

1.1 网格扭曲、装配和蒙皮

首先,针对没有自遮挡的对象建立装配网格的程序。对SMPL轮廓进行扭曲,以匹配原始图像中的目标人物轮廓;然后,向投影SMPL法线贴图和蒙皮贴图应用该扭曲。得出的法线贴图和蒙皮贴图用于构建人物正面视图和背面视图。

从人物的2D姿态和轮廓遮罩S开始,为简单起见,本文用S表示一个集合以及一个函数,即作为人物轮廓内所有像素的集合,以及一个二元函数(对于轮廓内像素x,S(x)=1;对于轮廓外像素x,S(x)=0)。为构建带骨架装配的3D网格,首先利用文献[13]提出的方法将SMPL模型拟合到2D输入姿态,该操作同时也会恢复相机参数。其后,将该网格投影到相机视图中,以形成一个轮廓遮罩SSMPL。对于像素x∈SSMPL,该投影还额外提供了深度图ZSMPL(x)、法线贴图NSMPL(x)以及蒙皮贴图WSMPL(x)。从SMPL模型中顶点蒙皮权重中推导出蒙皮贴图。

基于SSMPL和输入图像的轮廓遮罩S,对ZSMPL、NSMPL和WSMPL进行扭曲,以分别建立输出深度图(位于人物轮廓处)Z∂S(x∈∂S)、法线贴图N(x)和蒙皮贴图W(x)。具体来说,寻求平滑逆扭曲f(x),以使得:

S(x)=SSMPL(f(x))

(1)

然后,将该扭曲应用到深度图和蒙皮贴图:

(2)

根据实证经验,设Z(x)=ZSMPL(f(x)),得出的网格在z轴方向上常会过平。

扭曲程序一般会对平面中的几何形状进行拉伸(SMPL模型通常比着装对象更薄,甚至常会比未着装的对象更薄),但不会对深度进行拉升。为解决该问题,对法线贴图进行扭曲,以到达N(x)处。然后,对其进行整合以生成Z(x)。具体来说,对于像素x∈∂S,求解稀疏线性系统[14],从而生成在边界约束Z(x)=Z∂S(x)下,与扭曲后的法线贴图N(x)高度相符的Z(x)。

为构建逆向扭曲函数f(x),有很多可用的平滑扭曲函数供选择。本文选择了基于均值坐标的平滑扭曲函数,因为该类函数在不自交的平面多边形的整个平面上均有着明确定义,能够较好地满足所提方法的要求。具体来说,给定输入轮廓的闭合多边形边界上的点(顶点)的有序集合,pi∈∂S=(p0,p1,…,pm-1),则可以将S内的任何一个点表示为:

(3)

其中,(λ0(x),λ1(x),…,λm-1(x))为任意x∈S相对于边界顶点pi的均值坐标。

假定存在对应函数φ,该函数可利用SMPL轮廓边界上的点:

(4)

其后,利用式(3)的相同均值坐标,将扭曲函数定义为:

(5)

实践中,通过f(x)进行扭曲时可能会产生空洞,即由于∂S和∂SSMPL之间的非双射映射而产生的较小区域(其中f(x)∉SSMPL)。对于该问题,可在扭曲后的法线和蒙皮权重贴图中平滑地填充这些空洞。为重建人物背面,对拟合SMPL模型的背面视图进行虚拟渲染,建立人物遮罩镜像,然后应用上文描述的扭曲方法即可。

1.2 自遮挡问题的解决

在人物对象存在自遮挡,即人体某部分遮住另一部分之上的情况下,仅从二元轮廓中重建单个深度图(例如正面)并不足以解决该问题[15]。为处理自遮挡问题,本文通过人体标签图将身体分割为多个部位,补完被部分遮挡的区段,然后,使用1.1节描述的方法对每个部分进行重建。提出方法的流程如图2所示。

图2 自遮挡问题解决的流程

1.2.1初始身体标签

投影SMPL模型提供的人体标签参考图LSMPL与图像不够一致。本文利用标签参考图,通过两个步骤构建最终标签图:① 估计每个像素x∈S的初始标签图Linit,尽可能与LSMPL相似;② 在遮挡边界处重新定义Linit,其中标签的间断面应该与输入图像的边重合。

通过对马尔可夫随机场(MRF)目标函数进行最小化,以求解初始(粗糙)身体标签图Linit:

(6)

式中:

(7)

(8)

N(p)为p的八近邻。基于到LSMPL中具有相同标签的最近点距离得到U(·)的标签,由此鼓励Linit的形状与LSMPL相似;V(·)则鼓励了空间相关标签。

1.2.2身体标签微调

接下来,对身体标签图进行改良,以更明确地区分遮挡边界。

当有着不同部位标签的两个像素在图像中为近邻关系,但两者在3D身体表面上并不是邻近像素时,即会出现遮挡边界。为识别这些像素,首先,依次计算各个身体部位的扭曲函数f,该函数将每个身体部位Linit=映射到相应的身体部位LSMPL=。其后,沿着Linit的手臂部位的边界,对于具有不同标签的每对邻近像素(p,q),确定相应的投影SMPL位置(fLinit(p)(p),fLinit(q)(q)),将其反投影到SMPL网格上,并检查其在表面上是否彼此邻近。如果并不接近,则将这些像素识别为遮挡像素。最后,在这些遮挡像素周围扩张,以生成一个遮挡遮罩O。结果如图2(c)所示。

现在,对O内的标签进行微调,以更好地跟踪图像I中的颜色不连续性,得到最终的身体标签图L。为此,定义另一个MRF:

(9)

U(L(p))=-log(GMM(L(p),I(p)))

(10)

V(L(p),L(q))=C(L(p),L(q))e-β‖I(p)-i(q)‖2

(11)

(12)

式中:GMM(L(p),I(p))为使用高斯混合模型建模,将颜色I(p)的像素p标记为L(p)的概率。依据SMPL模型[13]参数设定,一般γ取8,β的定义如下:

(13)

式中:〈·〉表示取遮挡遮罩O中所有成对的邻近像素的均值。

一般通过扩展迭代方法[16]求解该问题,在每次迭代中,利用最新估计出的L(L初始时为Linit)重新估计高斯混合模型GMM(·),最终身体标签图如图2(d)所示。

1.2.3网格构建

在完成身体标签并恢复遮挡形状后,按各个部位依次投射SMPL模型,以得到每个部位的SMPL深度、法线和蒙皮权重图,然后按照1.1节方法构建身体部位网格(图2(h)),并将其组合在一起得到最终的身体网格(图2(i))。最后,应用Laplacian平滑,以减少由于二元轮廓分割所造成的沿着网格边界的锯齿伪迹。

1.3 其他简单遮挡的解决

为了使得问题的解决方案更加鲁棒性,这里讨论一下其他简单遮挡(非自遮挡)的处理方式,值得一提,这种遮挡只限于简单小部分遮挡。首先对图像进行标签初始化,明确遮挡的罩盖位置和大小,由于是其他物体的遮挡,需要将身体和物体分割。然后,将遮挡的物体移除,重新绘制身体部分,并对移除后的空洞区域按照一定程序进行蒙皮。最后,按照1.1节方法对身体各部分进行重建,为了进一步改良身体标签图,采用1.2.2节的标签微调方法,恢复遮挡形状后,完成网络构建。

1.4 头部姿态纠正与纹理化

对于动画绘制来说,头部姿态的准确度非常重要,但SMPL的头部姿态通常是不正确的。为此,检测图像中的面部基准点,并寻找能够实现检测到的面部基准点与相应的投影3D基准点的3D头部姿态。完成头部深度图的重建后,应用平滑扭曲,将投影3D基准点与图像基准点完全对齐。在未检测到面部或基准点的情况下,省略该步骤。

对于目标人物的正面,将图像投影到几何体上。使用PatchMatch[17]对被遮挡的正面身体部位进行填充。本文提供了两个选项:(1) 将正面纹理的镜像拷贝粘贴到背面;(2) 通过指导用户进行手动修复。对于第2个选项,通过身体标签图来引导身体背面的修复,利用具有相同身体标签的区域进行纹理绘制。用户可轻易更改这些标签图,例如用头发纹理来填充头部背面。最后,利用泊松混合理论[18-19]将正面和背面的纹理拼接在一起。

2 实验结果与分析

本文从互联网上下载满足本文方法所需规格的图像,主要为全身照,大部分为正面图,共70幅照片,包括艺术作品、海报、涂鸦等,对提出的方法进行了测试,并与其他方法进行比较。

2.1 用户接口的构建

实验建立了一个用户接口界面,如图3所示,并提供以下用户互动:1) 修改动画:默认动画为“奔跑”,而用户可以固定一些身体部位,改变序列,修改姿态,并让模型从修改后的姿态开始执行一个动作。2) 在有必要时,对自动检测包围盒、骨架、分割和身体标签图进行微调。3) 针对目标人物背面,选择使用镜像纹理;或通过编辑身体标签图进行调整。

图3 用户接口界面

姿态编辑处理样例如图4所示。在用户界面中,网格是透明的,以显示出身体骨架。通过选择并拖拽关节,用户可以改变相应骨骼的方向。这样可以生成包含编辑后姿态的新图像。

图4 姿态编辑处理样例

一些动漫人物的重建结果如图5所示。左边为输入图像,右边为重建的结果,重建结果选取的是单幅图像帧,如果将多个连续的重建结果组合在一起,则可以形成一个三维动画效果。

2.2 与其他方法的比较

图6和图7是针对两幅常见的卡通图像的重建结果,比较的方法是两种优秀的方法:文献[11]和文献[13]。可以看出,文献[13]未能正确处理目标人物的轮廓,因此,该方法重建的结果中出现多处缺失的部分,如图6中的“孙悟空”头部有明显缺失,脚部、腿部等躯干有明显的消减效果。同理,图7中的人物头部和躯干部分大面积缺失,细节部分非常粗糙。本文方法明显优于文献[13]。由于实际3D建模,所提方法在静态帧中出现的畸变比文献[13]的方法要小得多,且所提方法可以3D体验(例如AR)。而文献[13]方法则无此功能。本文还进行了定性观察,让一些用户在两种方法的结果中选择更接近现实的动画,共收到120位参与者的回复,其中89%的用户选择了本文方法。

(a) 输入图像 (b) 文献[13]

文献[11]的方法对SMPL网格进行优化,从而对单目视频序列中的旋转人体对象的轮廓进行近似匹配。该方法使用120个输入帧,并对目标权重做了相应调整。而本文在相同的2D人物姿态和分割之外,还向其方法额外提供了120个输入图像副本。与本文方法相比,文献[11]方法不能很好地拟合轮廓。举例来说,平滑SMPL部分的复杂度不够,从图6(c)可以看出,“孙悟空”的头部映射为较大的锯齿状头发,对于握紧的拳头或抽线艺术手臂,未处理好手指细节。同样的,在图7(c)中,其头部与手部有多处缺失,且衣服的纹理没有较好地保留。文献[11]的不足之处主要源自于过强的人物形状先验知识,不适用于处理例如卡通人物或抽象画等案例。而所提方法在细节处理方面较好,手部、头发等细节部分得到了较好地保留和再现。

表1是各方法的综合比较情况,对于评价指标,遮挡处理可以增加方法的适用性,增加虚拟现实体验可以使得用户获得更加真实的体验;SMPL模型是目前公认的最佳人体模型之一,适用于各种人体形状和姿态;用户接口可以增加用户的参与度,增强方法的人性化设计。从这四个方面可以看出本文方法更优。

表1 综合比较结果

在计算效率方面,本文方法的主要耗时集中在:对SMPL轮廓进行扭曲、匹配的计算过程,以及身体标签图的初始化计算(如有遮挡)。以卡通人物“孙悟空”为例(256×448),其运行总时间为3.76 s,提供了120个输出帧,绘制出3D动画,即图像帧以大于30帧/s的帧率播放,给人眼以实时的播放效果。文献[11]的主要耗时集中在SMPL的网格优化和对旋转人体轮廓的匹配计算上,帧率估计在25帧/s和35帧/s之间,基本上达到实时播放的效果。文献[13]的SMPL计算时间并不多,但需要较多时间进行深度神经网络的学习,没有达到实时播放的效果。

3 结 语

本文提出了从单幅图像中创建人物3D动画的方法,通过可变姿态模板人体模型的形变来拟合人体的复杂轮廓,在单幅图像中以3D形式重建并呈现人物动画的应用,且可以处理部分自遮挡问题。所提方法适用于多种类型的全身正面照,包括体育照片、艺术作品或海报等。此外,本文还提出了一个交互接口,允许改变3D人物的姿态。

所提方法能够处理头部、躯干或腿部被手臂遮挡了一部分的情况。但其他类型的遮挡,如坐下时的交叉遮挡难以处理,这将是本文未来研究方向。

猜你喜欢
轮廓姿态标签
OPENCV轮廓识别研究与实践
攀爬的姿态
基于实时轮廓误差估算的数控系统轮廓控制
全新一代宋的新姿态
跑与走的姿态
无惧标签 Alfa Romeo Giulia 200HP
不害怕撕掉标签的人,都活出了真正的漂亮
标签化伤害了谁
在线学习机制下的Snake轮廓跟踪
基于多进制查询树的多标签识别方法