[论文笔记]Vision-based Control of 3D Facial Animation
论文信息
Vision-based control of 3d facial animation.
Jinxiang Chai, Jing Xiao, and Jessica Hodgins.
In SCA ’03: Proceedings of the 2003 ACM SIGGRAPH/Eurographics symposium
on Computer animation, pages 193–206, 2003. Eurographics Association.
摘要
对于计算机三维角色的表情动画与控制一直都是个难点,因为表情的DOF很多,但可用的输入设备一般都很少。论文展示了一种方法,根据预处理的运动捕捉数据库赖创建丰富而生动的表情变化,用户可以在摄像头前做出表情来控制角色的表情运动。论文开发了一个实时的表情跟踪系统来从视频中提取少量的动画控制参数。这些参数也许噪声较多,分辨率低,并且包含错误。系统使用运动捕捉数据中的知识来将这些低质量的2D动画控制信号转化为高质量的2D面部表情。要将合成的运动应用到一个新的角色模型上,论文提出一个有效的表情重定向技术,这是一个常量时间的算法,不依赖于模型的复杂度。
流程/思想
首先,从单摄像头中捕捉到的视频图像被传送到视频分析部分,进而提取出两个部分的控制参数:表情控制参数和3D位置控制参数。表情控制与动画部分根据表情控制参数和预处理的运动捕捉数据库来合成面部表情,描述了运动捕捉对象面部的运动捕捉标记的运动。表情重定向部分根据合成的面部表情、扫描的运动捕捉对象的面部模型以及输入的角色面部模型生成最终角色的面部表情。随后角色面部表情与从3D位置控制参数得到的角色头部位置合成,生成最后的动画。
因此,系统主要有四个部分:
视频分析. 同时跟踪头部的3D位置与朝向以及视频中一些重要的面部特征,然后自动地将它们转换为动画控制参数:表情控制参数和头部位置参数。
运动捕捉数据预处理. 自动地将头部运动从运动捕捉数据的表情变形中分离出来,然后从解耦的运动捕捉数据中提取表情控制参数。
表情控制与动画. 有效地将噪声大分辨率低的控制信号转换为运动捕捉数据库中的高质量的运动。过滤噪声大或走样的自由度并映射到运动捕捉数据中,丢失的自由度和细节则通过运动捕捉数据中的信息来合成。
表情重定向. 修改合成的运动来生成不同角色的表情动画。
只有运动捕捉数据预处理是离线进行的,其他步骤都是在线交互进行的。
细节
1. 视频分析
1.1 面部跟踪
头部运动具有6DOF(摇摆、俯仰、转动、3D位置),论文使用圆柱形来近似模拟头部几何,使用模型跟踪技术恢复视频中用户的头部位置。跟踪需要知道面部的19个2D特征,如图:
面部跟踪算法要求手动初始化第一帧,要求由用户点击选取19个特征点。之后,系统就可以自动的计算圆柱体与所需要的参数,然后将第一帧的图像投影到初始圆柱体的表面,建立一个纹理映射引用头部模型来进行跟踪。
在跟踪过程中,每次系统都计算使投影的引用模型与新一帧图像的密度差的平方和最小,从而自动地得到新的头部位置。然后动态地更新引用模型,以便处理遮挡等问题。但动态更新会导致误差累积。因此系统自动存储一些关键帧的纹理映射模型,当当前位置与最接近的样例位置之间的误差累积超过阀值,则系统自动的用最接近的样例替换新的视频画面。
对于遮挡、转动、噪声等问题产生变形的像素,修改它们对最小二乘法的权值可以解决这些问题。
恢复了头部位置后,就可以将图像扭转到正面视图,然后进行表情特征跟踪。在每个特征点的位置画一个正方形,然后正方形内像素的移动便可以近似为特征点3D坐标处的平面的仿射运动。论文采用一个基于梯度的运动估计的方法来找到仿射运动的参数,从而最小化当前帧的特征方形与引用帧的特征方形之间的密度差的平方之和。
为了增加结果的鲁棒性,可以增加一些约束,比如眼皮只能上下运动。系统也会存储之前提到的样例的正面图像,当图像误差累积超过阀值也会自动进行替换。
1.2 控制参数
论文从19个特征点中精心挑选出15个特征参数来描述表情运动。嘴部6个,分别是上下嘴唇的距离、左右嘴角的距离、嘴巴中心(2维)、连接上下嘴唇的线段相对于垂直线的夹角,连接左右嘴角的线段与水平线的夹角。鼻子2个,左右鼻翼距离,以及鼻尖点到左右鼻翼连线的距离。眼睛2个,每只眼睛上眼皮到下眼皮的距离。眉毛5个,眉毛相对于水平线的角,到眼睛的距离,左右眉毛的距离。
论文用表示在i时刻这15个控制参数,头部位置会提供另外6个控制参数。
2. 运动捕捉数据预处理
2.1 分离位置与表情
假设有L个相互独立的变化风格在影响面部表情,则可以用集合S1, S2,...,SL来表现。每个变形基Si是一个3*P的矩阵,描述P个点的变化风格。
我们得到的面部运动捕捉数据混合了3D头部位置和局部表情变化:
Rf是3*3头部旋转矩阵,Tf是3*1头部平移矩阵,f表示第f帧。cfi表示第i个变形基对应的权值。我们要从Xf中分离出Rf和Tf,让它只包含表情变形。
首先从Xf减去所有3D点的平均位置,以消去Tf。然后得到一个公式:
M大小为3F*P,Q是3F*3L,B是3L*P。没有噪声的情况下M的秩最多是3L,变形基的数量。有噪声时M的秩可能不是3L,因此对M进行奇异值分解(SVD),M =USVT,然后得到了秩的最优近似,得到两个矩阵:
保持指定数量的原始数据能量可以自动地确定秩。论文里采用25个变形基足以捕捉到99.6%的变化。
假设一个3L*3L大小的非奇异矩阵G,我们有:
关于旋转约束和矩阵GGT的基约束详细计算见论文的技术报告,算法从运动捕捉数据中选择L个合适的帧,使其覆盖所有的变形。用这L帧作为变形基,得到另一组约束,然后就可以用最小二乘法求出GGT唯一解。然后分解得到G,进而得到Rf,cfi,S2,...,SL。
然后将每帧3D运动捕捉数据投影到正面视点,提取每帧的表情控制参数,就像从视频跟踪数据里提取的方法一样。然后我们用表示运动捕捉标记在第i帧的3D位置,而
表示控制参数。
3. 表情控制和动画
头部位置的控制很直观,只需要对位置参数做一些缩放,缩放比例可以参考用户和模型的嘴宽比。
表情的合成采用基于样例的方法,接下来会介绍。
3.1 控制参数标准化
视频跟踪的表情参数与运动捕捉的表情参数不一致,因此需要根据中性表情的控制参数来进行标准化,使他们保持一致。
3.2 数据驱动过滤
基于视觉的控制参数通常带有很多噪声,论文将其在一个固定的时间间隔W内将其划分为片段,用运动捕捉数据库中的先验知识对其进行过滤。
对每个新的片段,从运动捕捉数据库中查找与片段相关的样例。然后用这些样例来构建局部线性的动态模型,捕捉固定长度序列下控制信号的动态行为。对运动捕捉数据库的每一帧,找出与其具有相同的时间窗口W的相邻帧的集合。所有的运动片段构成了高维格局下的非线性流形,每个运动片段是流形中的一个点采样。视频接口下得到的控制参数的运动片段可以看做是对流形的带噪声采样。过滤的思想就是用一个低维线性子空间来近似高维非线性流形的局部区域,对每个带噪声采样,对其进行Principal Component Analysis(PCA),用局部区域内的数据点来获取线性子空间,然后用线性子空间重建采样。
- 从运动捕捉数据中找出K个最接近的片段。
- 计算K个片段的Principal Component。令M个最大的特征向量U1,…UM作为过滤基,M的取值需要保证99%的原始数据变化。
- 将
投影到U1,…UM间隔的局部线性空间,然后使用投影参数重建控制参数。
K的取值取决于给定运动捕捉数据库和视频中提取的控制参数的属性,论文采用的是50-150。
3.3 数据驱动表情合成
假设已有N帧运动捕捉数据X1,...,XN以及它相对应的控制参数Z1,...,ZN。则本节思想是,根据控制信号,合成对应的运动捕捉样例
。
论文用基于片段的运动合成技术来消除控制参数空间映射到运动格局空间的歧义性。根据局部线性空间下片段到运动捕捉数据库中K个最接近的片段的欧式距离来决定它们对应的权值,然后对这些片段进行线性合成。
为了让片段的过渡显得平滑,论文设置了混合区间为5帧,用公式α = 0.5cos(βπ) + 0.5来混合两个合成的片段。β线性地从0变到1,然后用α和1-α进行线性的插值。
3.4 数据结构
为了快速查找最近的点,可以构造邻接图G,记录相邻帧的时间窗W之间的距离。然后利用表情控制信号的时序一致性,只考虑上次查询的点周围一定距离内的点。首先找出上次查询的K个最接近的点中,最接近的样例E。然后从E开始遍历,对比子节点,总是搜索距离小的支路,直到找到足够的样例,或者距离超出一定阀值。
4. 表情重定向
表情重定向的基本思想是与计算目标模型的所有变形基,使得运行时的操作仅仅需要混合这些变形基就可以了。
加工的过程要求输入扫描的源模型、目标模型和运动捕捉数据库的变形基。需要两个模型都是中性表情。系统首先建立两个模型的表情对应关系,然后根据局部表面对应关系选取合适的从源模型到目标模型的变形基。前面已经提到表情的合成是基于权值的混合。表情重定向处理过程有四个步骤,如下:
运动向量插值:给出源模型表面关键点的变形向量,系统生成基于源模型上的运动捕捉标记的3D位置生成的网格模型,计算出每个点所在的表面及其对应的重心坐标,然后使用重心坐标从关键点的运动进行线性插值得到其他点的运动向量。
密集表面对应关系:已知两个面部模型手工建立的稀疏对应关系,系统通过带有径向基函数(Radial Basis Functions RBF)的体积变形然后圆柱投影得到密集对应关系。这是一个双射。然后再次使用RBF学习从源模型的中性表情xs=(xs,ys,zs)到目标模型的中性表情xt=(xt,yt,zt)的连续双射函数f(xs)=(f1(xs),f2(xs),f3(xs)),使得xt=f(xs)。
运动向量转换:每个运动向量必须经过调整方向和缩放才能应用于目标模型中,首先根据映射函数得到点xt,对于源点xs的变形δxs=(δxs,δys,δzs),目标点的变形δxt应该通过雅可比矩阵Jf(xs)=(Jf1(xs),Jf2(xs),Jf3(xs))T计算得到:
雅可比矩阵式计算公式如下:
由于源模型的变形是基于变形基的线性插值,实际上的变形δxt可以这样计算:
δxs,i是第i个变形基的变形,λi是对应的权值。我们可以预计算δxt,i使得。
目标运动合成:在根据基于视觉接口的运动捕捉数据库合成运动数据后,系统将数据投影到源模型的变形基空间S1,...,SL,用以计算权值λ1,…,λL。然后根据目标模型的变形基δxt,i和权值λi混合得到目标表面的变形δxt。
结果展示
详情请看论文
本文原创,转载请注明出处