首页> 中国专利> 一种关节运动感知的稀疏局部分解及重构算法

一种关节运动感知的稀疏局部分解及重构算法

摘要

本发明公开了一种关节运动感知的稀疏局部分解及重构算法,包括:1)计算三角网格中边的长度和边对应的二面角大小(这两个值记为LA);2)计算各个三角网格模型LA向量的残差;3)对LA向量残差做稀疏局部分解得到LA基;4)线性混合LA基获得新的LA向量;5)恢复连接映射;6)估计局部正交标价;7)重构三角网格。本发明主要解决的问题是如何对给定的运动网格序列进行稀疏局部分解,从而捕捉出运动序列的局部区域的变形,并以此为基础,构建一个能够捕获运动区域和进行三角网格模型姿态编辑的集合处理框架。本发明具有更好的局部性、适用于大范围旋转运动变形、适用于全局旋转、具有良好的鲁棒性等优点。

著录项

  • 公开/公告号CN106683169A

    专利类型发明专利

  • 公开/公告日2017-05-17

    原文格式PDF

  • 申请/专利权人 华南理工大学;

    申请/专利号CN201611125996.4

  • 发明设计人 曾志超;李桂清;王宇攀;

    申请日2016-12-09

  • 分类号G06T17/00(20060101);

  • 代理机构44245 广州市华学知识产权代理有限公司;

  • 代理人罗观祥

  • 地址 511458 广东省广州市南沙区环市大道南路25号华工大广州产研院

  • 入库时间 2023-06-19 02:08:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-18

    授权

    授权

  • 2017-06-09

    实质审查的生效 IPC(主分类):G06T17/00 申请日:20161209

    实质审查的生效

  • 2017-05-17

    公开

    公开

说明书

技术领域

本发明涉及计算机图形学和三维网格编辑领域,尤其是指一种关节运动感知的稀疏局部分解及重构算法。

背景技术

动态几何或者动画网格序列是具有相同连接关系的三角形网格,通常这些三角形网格记录了一个对象在一个时间序列上的不同姿态。这种几何体在动画和3D游戏中都是非常普遍的。得到一个对这种三角形网格序列的简洁表示方式,并且支持对几何体的编辑在动态几何处理中是一个非常重要的课题。

传统的方式通常采用诸如骨架或者笼子(Cage)这样的简洁结构来捕捉给定三角形网格序列的运行信息,并通过使用蒙皮技术或者广义质地坐标来进行三角形网格重构。尽管这些方法都可以很好地压缩三角形网格序列,但是要想通过操作这些骨架或者笼子来构建具有新姿态的三角形网格却非常困难。

稀疏局部形状基方法将三角形网格序列的每个帧视为平均形状三角形网格的变形,并且提取出一组可以捕获姿态变形的局部形状基。通过编辑控制这组形状基的参数值来构成不同形状基组合,从而重构出具有不同姿态的三角形网格模型。这种方法在抬高眉毛,提高嘴角等面部表示方面表现了强大的能力。然而,由于这组形状基利用的是非局域性坐标变化,这种方法在重构大范围旋转运行时,容易差生伪影。Huang等人试图通过在三角形网格面片的变形梯度(DG)空间上进行稀疏局部分解来填充局部线性表示和关节运动的非线性特性的缺口。尽管这种方式可以在一定程度上表示旋转运动,但是由于DG变化的非局部性,它的编辑能力受到了很大的限制。DG的变化具有非局部性,因为当三角形网格的刚性部分绕着关节旋转时,刚性部分上所有的DG都会有相类似的变化。此外,作为非本质特征,DG的变换依赖于全局旋转变换。因此,这个方法不能处理具有全局旋转的动画序列。最后,每个变形梯度都由9个参数来定义,当一个三角形网格有NF个面时就需要9NF个参数来表示一个姿态。这就极大地增加了局部稀疏分解的处理时间。

以上这些方法主要缺点有:(1)可以比较简洁的方式来表示运动序列三角形网格模型,但是却无法提供比较简洁的方式来编辑三角形网格的姿态;(2)可以进行编辑,但是无法处理旋转范围比较大的运动姿态;(3)表示网格序列的数据量大,计算复杂。

发明内容

本发明的目的在于克服现有技术的缺点与不足,提供了一种关节运动感知的稀疏局部分解及重构算法,可以准确地捕捉到发生旋转运动的部位并重构出具有大范围旋转运动的三角形网格姿态模型,可以方便地进行姿态编辑且具有更好的效果以及计算效率。

为实现上述目的,本发明所提供的技术方案为:一种关节运动感知的稀疏局部分解及重构算法,包括以下步骤:

1)计算三角网格中边的长度和边对应的二面角大小

给定一系列具有不同姿态的动态三角形网格序列这些模型都具有相同的拓扑结构,先分别计算各个三角网格模型上各条边的长度以及边所对应的二面角大小(这两个值记为LA);

2)计算各个三角网格模型LA向量的残差

对步骤1)中得到的一个三角网格模型上各条边对应的LA按照边的顺序排列构成一个LA向量,计算出各个三角网格模型的LA向量,分别与参考三角网格模型的LA向量做差,等到对应的LA向量残差;

3)提取LA基

对步骤2)中得到的各个模型的LA向量残差进行稀疏局部分解,得到一组可以捕捉到关节局部运动的LA基,每一个LA基控制着着三角网格模型上的一块区域形状;

4)线性混合LA基获得新的LA向量

对步骤3)中得到的可以捕捉到关节局部运动的LA基,编辑对应的参数,获得新的LA向量残差,再与参考三角网格模型的LA向量作和计算,获得新的LA向量;

5)恢复连接映射

对步骤4)中得到的新的LA向量进行各个三角面片上顶点的局部坐标值计算,获得局部坐标系下面片上各个顶点的局部坐标值,进而恢复三角网格模型上各个三角面片的连接映射;

6)估计局部正交标价

对步骤5)中得到的三角形面片的连接映射关系,再利用最小化标价重构函数来估算出三角网格模型的局部正交标架;

7)重构三角网格

对步骤6)中得到的局正交标价,利用最小化重构函数来估计三角网格模型中各个顶点的位置,会后获得具有新的姿态的三角网格模型。

在步骤1)中,所述的计算三角网格中边的长度和边对应的二面角大小(这两个值记为LA),具体如下:

假设为给定的具有不同姿态的三角网格模型数据集,NP表示数据集中三角网格模型的个数,表示第k个三角网格模型。每个三角网格模型表面都是由紧密相连的三角形构成。E和F分别表示三角网格模型中的边集合和三角面片集合,并且边的个数为NE,三角面片的个数为NF。这些三角网格模型具有相同的连接关系,即所有的三角网格模型具有相同的边集合和三角面片集合。在遍历三角面片上的顶点时,我们是以逆时针的方向进行。

假设上的一条边e=(i,j)∈E,共用这条边的三角面片为τ=(j,h,i)和υ=(g,j,i),括号内的字母为构成这个三角面片顶点标号,顺序为逆时针顺序。当从这条公共边的顶点vi走到vj时,三角形面片τ位于左手边,三角面片υ位于右手边,所以τ和υ分别称为边(i,j)的左三角面片和右三角面片。计算e的长度时,使用的是两个顶点间的欧几里德距离,即lij=||vj-vi||2。θ表示三角面片τ和υ向外方向的法线的夹角,即θ=acos(nτ·nυ),其中nτ和nυ分别为三角面片τ和υ上方向向外方向的法线,则公共边对应的二面角定义为

以上获得了一个LA值(lijij)。

对于数据集上所有的三角网格模型计算其各个条边上的LA值,并按照边的编号顺序排列可以构成一个2NE列的向量即LA向量。

在步骤2)中,所述的计算各个三角网格模型的LA向量残差,具体方法为:在步骤1)中获得了各个三角网格模型的LA向量后,分别与第一个网格模型的LA向量作差,得出LA向量的残差,即{Dk=Xk-X1,k=1,2,...,Np}。

在步骤3)中,所述的提取LA基,具体方式如下:

利用步骤2)中得到的LA向量残差,构建出一个2NE×Np的矩阵D=(D1,...,DNp)。将矩阵D分解成D=C×W。其中矩阵C是一个2NE×K的LA基矩阵,矩阵中的每一列都表示一个LA基,即矩阵中的每一列都控制着三角网格模型中的一个区域的形状。这里的K表示LA基的个数,可以根据需要设定大小,设定K值即是将三角网格模型大致分成K个区域。而矩阵W是一个K×NP的权重矩阵,矩阵中的每一行表示一个混合权重序列。为了便于对三角网格的姿态进行编辑,需要尽可能地保持LA基的局部性,即各个LA基控制的区域之间混合部分尽可能地少,并且需要归一化混合权重来消除由于缩放对姿态的影响。这里通过最小化函数(1)来进行矩阵分解。

其中第一个能量项用来约束矩阵分解的误差,而第二个能量项用于调整矩阵C中LA基的局部性,即各个LA基控制的区域的大小范围。

第二个能量项具体如下:

其中Λik表示三角网格模型上的第i条边与第k条作为形状基中的边中点间的测地线距离,具体定义如下:

其具体过程为:首先在三角网格模型上选择K条边作为K个形状基的中心,称为中心边,这里用Edge表示,edgek表示第k条中心边。用ei表示三角网格模型上的编号为i的边,则上式中的dik表示ei和edgek中点的测地线距离归一化之后的结果,这里的归一化实际上就是计算三角网格上边的中点与各个中心边中点的测地线距离,取出其中的最大值记为dmax,然后将三角网格模型上的边计算出来的测地线距离处于这个最大值最后得到的值作为归一化之后的测地线距离。因此有dik≤1。rmin和rmax为支持的半径取值范围为[0,1),其具体值根据需求设定。

在整个分解过程中,ci,k表示矩阵C第i行第k列的数据,wkj表示矩阵W第k行第j列的值;且有max{wk,j,k=1,...,K;j=1,...,NP}=1,即矩阵W中的所有元素,最大值为1。在实验中,η的值设为200。

在步骤4)中,所述的线性混合LA基获取新的LA向量,其具体方法为:在步骤3)中获取的LA基矩阵之后,修改W矩阵中任意一列的数值,得到向量wk,然后矩阵C再与wk相乘,得到一个新的LA向量残差,最后与第一个三角网格模型(即参考三角网格模型)的LA向量相加即可获得具有新的姿态的三角网格模型的LA向量。即通过计算即可获取新的LA向量。

在步骤5)中,所述的恢复连接映射,其过程主要包括建立一个新的局部坐标系,通过边的LA值计算得到一这条边为公共边的两个三角面片各个顶点的坐标,然后再计算各个面片的在新的局部坐标系下的局部正交标价,最后通过两个面片的局部正交标架恢复其连接映射关系具体过程如下所述:

在从步骤4)中获取LA向量之后,我们可以对每一条边恢复其连接关系。假设边e=(i,j)是左三角面片τ和右三角面片υ的公共边,且h,g分别为左右三角面片的第三个顶点,即公共边e=(i,j)的左右三角面片分别为τ=(j,h,i),υ=(g,j,i)。首先创建一个坐标系(r,s,t),然后计算出两个三角面片各个顶点在这个坐标系下的坐标值。坐标系以顶点vi作为坐标原点且顶点vj的坐标值为(lij,0,0),坐标系的t轴与三角面片υ向外方向的法线同向。由于三角面片υ为公共边e=(i,j)的右三角面片,所以顶点vg的r坐标必定小于0。所以可以计算vg的坐标分别为:

为了计算顶点vh的坐标值,我们首先假设顶点vh绕着公共边旋转展平后跟三角面片υ共面的顶点vh',则类似的可以计算顶点vh'的坐标值为:

将顶点vh'绕着r坐标轴旋转φij-π后即可获得顶点vh的坐标轴。

在获得两个三角面片各个顶点的坐标轴之后,计算在上述过程中新建的局部坐标系下的局部正交标价。局部正交标价的具体过程如下:

以三角面片τ为例,我们定义这个三角面片上的局部正交标价为ζτ=(uτ,vτ,nτ)其中表示三角面片τ上从第一个顶点vi指向第二个顶点vj的单位向量;nτ为三角面片向外的单位法线;vτ=nτ×uτ。以上三个单位向量就构成了ζτ3×3的矩阵结构。

同理可以求出三角面片υ上的局部正交标价ζυ。那么即为将其他坐标系下其他坐标系下的坐标值转变成υ局部坐标系下表示的转换矩阵。

在计算出以边e=(i,j)为公共边的两个三角面片的局部正交标价之后就可以计算这公共边的连接映射Qij。Qij的定义如下:

至此,计算出了边e=(i,j)的连接映射,用类似的方式就可恢复所有边的连接映射。

因为在进行LA基的编辑时,直接改变的是LA值,即直接改变了三角网格中的边长度和边对应的三角形的二面角大小。这就有可能导致修改后的边长不满足三角形边长不等式,即修改后的边有可能没办法构成三角面片。面对这些情况需要进行特殊处理:当lgj≥lji+lig时,我们统一将边的长度lji和lig放大lgj/(lji+lig)倍,这样就有lgj=lji+lig,这时候因为边(i,j)的方向跟边(g,j)的方向一致,所以边(g,j)的方向为(1,0,0);同理,当lji≥lgj+lig时,边(g,j)的方向为(1,0,0),当lig≥lgj+lji时,边(g,j)的方向为(-1,0,0)。

在步骤6)中,所述的估计局部正交标价,其主要方法如下:

假设为三角形网格中的边的集合,通过如下最小化函数(2)来估计出每个三角面片的局部正交标架:

其中左边项为:

表示连接映射能量。

而函数(2)中的ζ1分别表示需要估计的第一个三角面片的正交标价和给定的第一个三角面片的正交标价,为了保证重构出来的刚性变换的三角网格具有唯一性,我们需要给定第一个三角面片的局部正交标价;下标‘F’表示Frobenius范数;Qij为步骤5)中恢复的链接映射。

步骤7)中,所述的重构三角网格主要就是计算新的三角网格模型各个顶点的位置,具体过程如下:

在步骤6)中获取到局部正交标价之后,通过优化函数(3)来计算出三角网格中各个顶点的位置。

εER({vi,i∈I})=εEV({vi,i∈I})+εVC({vi,i∈I})(3)

其中右边的项用于约束给定的固定点的位置,其具体为:

其中I*为给定固定的顶点的编号,为给定的固定顶点的位置。为了保证重构出来的刚性变换的三角网格模型具有唯一性,我们需要固定一些点的位置不变,固定点的数量根据需要进行调整。

函数(3)中的第一个想用于约束估计的顶点位置跟步骤6)中得到的局部正交标价里面向量的偏差,具体为:

其中egj=-lgju,eji=lji(cosβu-sinβv),eig=lig(cosαu+sinαv),α为三角面片上边(g,j)和边(i,g)的夹角,而β为边(g,j)和边(j,i)的夹角;式中的u,v表示由步骤6)估计的对应三角面片上的局部正交标价ζ=(u,v,n)上对应的向量。

优化函数(3)之后就可以获得三角网格模型的所有点的位置,即重构出编辑过后具有新的姿态的三角网格模型。

本发明与现有技术相比,具有如下优点与有益效果:

1、更好的局部性,这主要体现在对三角网格刚性变形区域的定位。相对于Huang等人提出的在变形梯度空间上进行稀疏局部分解来获取形状基的方法(这里称为DG方法),本发明在处理发生旋转运动区域的定位上具有更好的局部性。当网格模型绕着一个关节点进行刚性旋转运动时,由于临近关节区域的边对应的LA值才会发生大的变化,而其他不在关节点附近区域的边的LA值变化不大,所以本发明很很好地捕捉到这个变化的区域,这也可以更好的生成对应的LA基,从而使通过编辑生成的新的三角网格模型更准确,更能应对绕着关节运动的变形。而这一点DG方法却不能很好地处理。

2、适用于大范围旋转运动变形。由于变形梯度的计算是相互独立的,而且变形梯度所所适应的旋转运动的角度只能是在[0,π)之间,所以当运动三角网格模型中的三角面片绕着关节点旋转运动,旋转的角度大于π时,DG方法将无法进行具有较大旋转角度变形中形状基的提取。而本发明中是用的LA值表示的是相邻三角形间的相对旋转角度,而这个旋转角度总是小于2π,因此,本发明可以很好地从具有大范围旋转运动的三角网格序列中捕捉到发生运动的区域(即提取LA基)。

3、适用于全局旋转。虽然全局旋转运动跟姿态变形不是很相关,但是,一个稀疏局部分解也应该可以处理这种情况。由于本发明中是对LA值残差的稀疏局部分解,而LA具有局部性,因此,当三角网格模型发生全局旋转运动时,例如,马的整个网格模型绕着一条轴做全局旋转运动而非自身姿态发生变形时,马的三角网格模型在姿态上基本不会发生变化,而三角网格模型中所对应的LA向量也不会发生太大变化,因此可以重构出合理的模型。而其他方法,比如DG方法,由于变形梯度(DG)依赖于全局旋转变化,因此在模型发生全局旋转变化时,DG的变化非常大,这将导致不合理的变形。

4、具有很好的鲁棒性。这主要包括三角网格模型中个顶点的连接关系具有鲁邦性和对LA基对应的区域大小的选择具有鲁棒性。本发明在处理三角面片中顶点的连接关系时,设计了一个连接映射算法,这个算法可以很好地保持顶点间的连接关系。因此,在重构经过大范围编辑后的三角网格模型姿态时,在顶点的连接关系上具有很好的鲁棒性。在本发明的实验结果中,对LA基对应的区域大小的选择都能很好地定位到变形的区域,且具有很好的局部性。

附图说明

图1为本发明的算法流程图。

图2为本发明中三角网格模型里三角面片的结构,其中的局部正交标价以及二面角。

图3为本发明对做局部旋转运动三角网格模型进行LA基提取后,LA基所控制的区域可视化示意图。其中的图(a)是对进行弯曲变形的铁杆模型提取LA基的结果,提取的LA基很好的定位到了弯曲的部位,而其他为变形的刚性部位则不需要进行额外的处理;图(b)在对尾部发生旋转变形的马的三角网格模型提取LA基的结果,提取的LA基定位到了尾巴根部发生旋转的区域;图(c) 是对运动的机器人进行LA基提取的结果,提取的结果定位到了发生旋转运动的手边的肘部;图(d)是对面部表情发生变化的脸部模型进行LA基提取的结果,提取的结果也能很好地定位到发生变形的部位。

图4为本发明在进行连接关系的恢复过程中的结构示意图,图(a)建立的局部坐标系以及三角面片上各个顶点的分布情况示意图,图(b)、(c)、(d)是LA值经过编辑之后,三边长度不符合三角形不等式的情况示意图,其中图(b)表示lgj≥lji+lig的情况,图(c)表示lji≥lgj+lig的情况,图(d)表示lig≥lgj+lji的情况。

图5为本发明在估算三角面片的顶点坐标时的示例。

图6为本发明对运动序列LA基提取的结果以及对姿态的编辑结果。

图7为本发明对脸部三角网格模型LA基的提取结果以及表情的编辑结果

图8位本发明对全局旋转运动的处理结果以及DG方法的处理结果。其中右边的两行中,每一列表示的是对大约相似的区域形状基的处理结果,第一个行为DG方法的结果,第二行为本发明结果。

具体实施方式

下面结合具体实施例对本发明作进一步说明。

如图1所示,本实施例所述的关节运动感知的稀疏局部分解及重构算法,包括以下步骤:

1)计算三角网格中边的长度和边对应的二面角大小(这两个值记为LA)

给定一系列具有不同姿态的动态三角形网格序列这些模型都具有相同的拓扑结构,先分别计算各个三角网格模型上各条边的长度以及边所对应的二面角大小;

2)计算各个三角网格模型LA向量的残差

对步骤1)中得到的一个三角网格模型上各条边对应的LA按照边的顺序排列构成一个LA向量,计算出各个三角网格模型的LA向量,分别与参考三角网格模型的LA向量做差,等到对应的LA向量残差;

3)提取LA基

对步骤2)中得到的各个模型的LA向量残差进行稀疏局部分解,得到一组可以捕捉到关节局部运动的LA基,每一个LA基控制着着三角网格模型上的一块区域形状;

4)线性混合LA基获得新的LA向量

对步骤3)中得到的可以捕捉到关节局部运动的LA基,编辑对应的参数,获得新的LA向量残差,再与参考三角网格模型的LA向量作和计算,获得新的LA向量;

5)恢复连接映射

对步骤4)中得到的新的LA向量进行各个三角面片上顶点的局部坐标值计算,获得局部坐标系下面片上各个顶点的局部坐标值,进而恢复三角网格模型上各个三角面片的连接映射;

6)估计局部正交标价

对步骤5)中得到的三角形面片的连接映射关系,再利用最小化标价重构函数来估算出三角网格模型的局部正交标架;

7)重构三角网格

对步骤6)中得到的局正交标价,利用最小化重构函数来估计三角网格模型中各个顶点的位置,会后获得具有新的姿态的三角网格模型。

在步骤1)中,所述的计算三角网格中边的长度和边对应的二面角大小(这两个值记为LA),具体如下:假设为给定的具有不同姿态的三角网格模型数据集,NP表示数据集中三角网格模型的个数,表示第k个三角网格模型。每个三角网格模型表面都是由紧密相连的三角形构成。E和F分别表示三角网格模型中的边集合和三角面片集合,并且边的个数为NE,三角面片的个数为NF。这些三角网格模型具有相同的连接关系,即所有的三角网格模型具有相同的边集合和三角面片集合。在遍历三角面片上的顶点时,我们是以逆时针的方向进行。

假设上的一条边e=(i,j)∈E,共用这条边的三角面片为τ=(j,h,i)和υ=(g,j,i),括号内的字母为构成这个三角面片顶点标号,顺序为逆时针顺序,如图2所示。当从这条公共边的顶点vi走到vj时,三角形面片τ位于左手边,三角面片υ位于右手边,所以τ和υ分别称为边(i,j)的左三角面片和右三角面片。计算e的长度时,使用的是两个顶点间的欧几里德距离,即lij=||vj-vi||2。θ表示三角面片τ和υ向外方向的法线的夹角,即θ=acos(nτ·nυ),其中nτ和nυ分别为三角面片τ和υ上方向向外方向的法线,则公共边对应的二面角定义为

以上获得了一个LA值(lijij)。

对于数据集上所有的三角网格模型计算其各个条边上的LA值,并按照边的编号顺序排列可以构成一个2NE列的向量即LA向量。

在步骤2)中,所述的计算各个三角网格模型的LA向量值残差,具体方法为:在步骤1)中获得了各个三角网格模型的LA向量值构成的向量后,分别与第一个网格模型的LA值向量作做差,得出LA向量值的残差向量,即。

在步骤3)中,所述的提取LA基,具体方式如下:

利用步骤2)中得到的LA向量残差,构建出一个2NE×Np的矩阵D=(D1,...,DNp)。将矩阵D分解成D=C×W。其中矩阵C是一个2NE×K的LA基矩阵,矩阵中的每一列都表示LA形状基,即矩阵中的每一列条都控制着三角网格模型中的一个区域的形状。这里的K表示LA形状基的个数,可以根据需要设定大小,设定K值即是将三角网格模型大致分成K个区域。而矩阵是一个的权重矩阵,矩阵中的每一行表示一个混合权重序列。为了便于对三角网格的姿态进行编辑,需要尽可能地保持LA形状基的局部性,即各个LA形状基控制的区域之间混合部分尽可能地少,并且需要归一化混合权重来消除由于缩放对姿态的影响。这里通过最小化函数(1)来进行矩阵分解。

其中第一个能量项用来约束矩阵分解的误差,而第二个能量项用于调整矩阵C中形状基的局部性,即各个形状基的大小范围。第二个能量项具体如下:

其中Λik表示三角网格模型上的第i条边与第k条作为形状基中的边中点间的测地线距离,具体定义如下:

其具体过程为:首先在三角网格模型上选择K条边作为K个形状基的中心,称为中心边,这里用Edge表示,edgek表示第k条中心边。用ei表示三角网格模型上的编号为i的边,则上式中的dik表示ei和edgek中点的测地线距离归一化之后的结果,这里的归一化实际上就是计算三角网格上边的中点与各个中心边中点的测地线距离,取出其中的最大值记为dmax,然后将三角网格模型上的边计算出来的测地线距离处于这个最大值最后得到的值作为归一化之后的测地线距离。因此有dik≤1。rmin和rmax为支持的半径取值范围为[0,1),其具体值根据需求设定。

在整个分解过程中,ci,k表示矩阵C第i行第k列的数据,wkj表示矩阵W第k行第j列的值;且有max{wk,j,k=1,...,K;j=1,...,NP}=1,即矩阵W中的所有元素,最大值为1。在实验中,η的值设为200。稀疏分解后得到的形状基的可视化结果如图3所示。

在步骤4)中,所述的线性混合LA基获取新的LA向量值,其具体方法为:在步骤3)中获取的LA形状基矩阵之后,修改W矩阵中任意一列的的数值,得到向量,然后矩阵C再与相乘,得到一个新的LA向量值残差向量,最后与第一个三角网格模型(,即参考三角网格模型)的LA向量值相加即可获得具有新的姿态的三角网格模型的LA向量值。即通过计算即可获取新的LA向量值。

在步骤5)中,所述的恢复连接映射,其过程主要包括建立一个新的局部坐标系,通过边的LA值计算得到一这条边为公共边的两个三角面片各个顶点的坐标,然后再计算各个面片的在新的局部坐标系下的局部正交标价,最后通过两个面片的局部正交标架恢复其连接映射关系具体过程如下所述:

在从步骤4)中获取LA向量之后,我们可以对每一条边恢复其连接关系。假设边e=(i,j)是左三角面片τ和右三角面片υ的公共边,且h,g分别为左右三角面片的第三个顶点,即公共边e=(i,j)的左右三角面片分别为τ=(j,h,i),υ=(g,j,i)如图4所示。首先创建一个坐标系(r,s,t),然后计算出两个三角面片各个顶点在这个坐标系下的坐标值。坐标系以顶点vi作为坐标原点且顶点vj的坐标值为(lij,0,0),坐标系的t轴与三角面片υ向外方向的法线同向。由于三角面片υ为公共边e=(i,j)的右三角面片,所以顶点vg的r坐标必定小于0。所以可以计算vg的坐标分别为:

为了计算顶点vh的坐标值,我们首先假设顶点vh绕着公共边旋转展平后跟三角面片υ共面的顶点vh',则类似的可以计算顶点vh'的坐标值为:

将顶点vh'绕着r坐标轴旋转φij-π后即可获得顶点vh的坐标轴。

在获得两个三角面片各个顶点的坐标轴之后,计算在上述过程中新建的局部坐标系下的局部正交标价。局部正交标价的具体过程如下:

以三角面片τ为例,我们定义这个三角面片上的局部正交标价为ζτ=(uτ,vτ,nτ)其中表示三角面片τ上从第一个顶点vi指向第二个顶点vj的单位向量;nτ为三角面片向外的单位法线;vτ=nτ×uτ。以上三个单位向量就构成了ζτ3×3的矩阵结构。

同理可以求出三角面片υ上的局部正交标价ζυ。那么即为将其他坐标系下其他坐标系下的坐标值转变成υ局部坐标系下表示的转换矩阵。三角面片上的局部正交标价如图2所示。

在计算出以边e=(i,j)为公共边的两个三角面片的局部正交标价之后就可以计算这公共边的连接映射Qij。Qij的定义如下:

至此,计算出了边e=(i,j)的连接映射,用类似的方式就可恢复所有边的连接映射。

因为在进行LA基的编辑时,直接改变的是LA值,即直接改变了三角网格中的边长度和边对应的三角形的二面角大小。这就有可能导致修改后的边长不满足三角形边长不等式,即修改后的边有可能没办法构成三角面片。面对这些情况需要进行特殊处理:当lgj≥lji+lig时(图4(b)所示),我们统一将边的长度lji和lig放大lgj/(lji+lig)倍,这样就有lgj=lji+lig,这时候因为边(i,j)的方向跟边(g,j)的方向一致,所以边(g,j)的方向为(1,0,0);同理,当lji≥lgj+lig时(图4(c)所示),边(g,j)的方向为(1,0,0),当lig≥lgj+lji时(图4(d)所示),边(g,j)的方向为(-1,0,0)。

在步骤6)中,所述的估计局部正交标价,其主要方法如下:

假设为三角形网格中的边的集合,通过如下最小化函数(2)来估计出每个三角面片的局部正交标架:

其中左边项为:

表示连接映射能量。

而函数(2)中的ζ1分别表示需要估计的第一个三角面片的正交标价和给定的第一个三角面片的正交标价,为了保证重构出来的刚性变换的三角网格具有唯一性,我们需要给定第一个三角面片的局部正交标价;下标‘F’表示Frobenius范数;Qij为步骤5)中恢复的链接映射。

步骤7)中,所述的重构三角网格主要就是计算新的三角网格模型各个顶点的位置,具体过程如下:

在步骤6)中获取到局部正交标价之后,通过优化函数(3)来计算出三角网格中各个顶点的位置。

εER({vi,i∈I})=εEV({vi,i∈I})+εEC({vi,i∈I})(3)

其中右边的项用于约束给定的固定点的位置,其具体为:

其中I*为给定固定的顶点的编号,为给定的固定顶点的位置。为了保证重构出来的刚性变换的三角网格模型具有唯一性,我们需要固定一些点的位置不变,固定点的数量根据需要进行调整。

函数(3)中的第一个想用于约束估计的顶点位置跟步骤6)中得到的局部正交标价里面向量的偏差,具体为:

其中egj=-lgju,eji=lji(cosβu-sinβv),eig=lig(cosαu+sinαv),α为三角面片上边(g,j)和边(i,g)的夹角,而β为边(g,j)和边(j,i)的夹角(如图5所示);式中的u,v表示由步骤6)估计的对应三角面片上的局部正交标价ζ=(u,v,n)上对应的向量。

优化函数(3)之后就可以获得三角网格模型的所有点的位置,即重构出编辑过后具有新的姿态的三角网格模型。

本发明经过实验证明其可行性,能广泛应用于各种模型。图6展示的是本发明对LA基定位以及对绕着节点进行旋转运动编辑的结果。其中图(a)为编辑其中的两个LA基,通过改变控制这两个区域的LA基的混合权重参数重新构造了一个具有新的姿态的三角网格模型,直观上说就是将控制左边模型上半身区域的LA基的混合权重参数赋值跟控制中间模型下半身区域的LA基的混合权重参数组合起来,构成一个完整的混合权重参数,最后重构出右边具有新的姿态的三角网格模型。图(b)也是类似的结果。而(c)则是通过改变混合权重参数之后重构出来的具有新的姿态的三角网格模型,这些姿态在原来的三角网格数据集中是不存在的。图7展示的是对人脸三角网格模型的编辑效果,其中从左边数第一个三角网格模型展示的是通过本发明提取的控制左边眼睛区域的LA基,第二个展示的是控制右边眼睛区域的LA基,第三个展示的是控制左嘴角区域的LA基,最右边展示的是通过将控制这三个LA基的混合权重参数组合到一起构建出一个完整的混合权重参数之后重构出来的三维网格模型。从图中可以看到重构出来的三维网格模型左边眼睛的形状跟第一个模型的比较相似,右边眼睛的形状跟第二个模型的比较相似,而左边嘴角的形状跟第三个模型的比较相似。图8是以马的三角网格模型为例子展示了本发明对全局旋转运动处理的合理结果以及DG方法处理的结果。实验中马的模型绕着一个圆进行奔跑运动。图中左边为原本没有进行变形的模型,右边两行展示的是在对相同的基进行全局旋转编辑后得到的结果,第一个为头部的变形,第二个为前腿的变形,第三个后腿的变形,实验表明,本发明在处理全局旋转运动时,处理的结果更为合理。

以上所述之实施例子只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号