基于kineck的人体动画研究剖析.docx
- 文档编号:30829052
- 上传时间:2024-01-30
- 格式:DOCX
- 页数:15
- 大小:1.81MB
基于kineck的人体动画研究剖析.docx
《基于kineck的人体动画研究剖析.docx》由会员分享,可在线阅读,更多相关《基于kineck的人体动画研究剖析.docx(15页珍藏版)》请在冰豆网上搜索。
基于kineck的人体动画研究剖析
基于kineck的人体动画研究
摘要
随着角色动画在电影游戏等行业的大量应用,人体动画合成研究已经成为计算机图形学中一个重要的研究领域。
三维人体动画合成技术从传统的依赖动画师经验的手工制作到结合运动捕获设备合成的三维动画,均无法解决人体动画合成的实时低成本获取问题,直到微软推出Kinect设备。
针对Kinect设备的特点,本文在基于Kinect的实时人体运动合成方面开展了一系列的工作。
主要内容如下:
1)在将Kinect捕获的低维控制信号重建为一个高维人体运动数据过程中,针对搜索时间的问题,提出了基于邻居图的搜索算法查找最近合成的两个运动,再通过K-D树的加速匹配算法查找k个相似数据。
2)本文在上述工作基础上,实现了一个基于Kinect的人体动画合成系统。
其可以使用Kinect设备来合成实时的、高维度的人体运动数据,实验结果表明,利用本文所提的算法合成的人体动画具有实时性、逼真性且保持了原有的运动特征。
关键词:
Kinect,低维控制信号,基于邻居图的搜索算法,K-D树,人体运动合成
引言
计算机动画技术对于现代人而言,已经不是什么神秘的事物,《骇客帝国》
中基奴李维斯的精彩特技,《特洛伊》中如诗史般恢弘的战斗场面,计算机游戏中以假乱真的动画片段,无一不归功于现代计算机动画技术。
近年来,计算机动画一直是计算机图形学研究中一个非常活跃的领域。
随着计算机软硬件技术及图形学技术的高速发展,计算机动画已经成为一种重要的数字媒体形式。
通过计算机生成的许多现实世界中不能拍摄到、但是人们可以想象到且能自行设计出丰富多彩的计算机动画在计算机游戏、影视特技、商业广告、运动仿真及虚拟现实等领域有着非常广泛且深入的应用。
目前国外企业对计算机动画技术及其应用的投入很大,并由此获得了极大的经济收益,如《侏罗纪公园》、《海底总动员》、《指环王》等大片中给人印象极深的特技效果都采用计算机动画技术制作;视频游戏中活灵活现的游戏角色离不开计算机动画技术:
虚拟现实及体育仿真等应用也离不开计算机动画技术的支持。
Microsoft在2010年推出的kinect体感游戏设备利用即时动作识别让玩家摆脱传统游戏手柄的束缚,通过自己的肢体来控制虚拟人。
在此之前,电脑和视频游戏为控制人体运动提供了大量的接口,例如:
鼠标、操作杆和按钮等等。
但是,这些接口只是提供了少量的自由度上的控制并且必须自动计算运动细节。
索尼的EyeToy是一个基于视觉的系统,该系统不需要任何的标记,就能够提取出一个拳击或者挥手的简单2D动作。
文献[2]建立了一个视觉的接口来把从单个视频摄像机上获得的噪音轮廓数据转换成约有2秒延迟的全身运动。
文献[3]提出了基于视频跟踪来捕获用户运动的方法,但是这个方法并不能够实时并且精确地重建复杂人体运动。
同时,文献[3]最早提出了利用PCA来减少人体运动维数的方法。
磁性、机械和基于外骨骼的运动捕获系统虽然能完成一个人体的捕获,但是这些技术往往存在以下缺点:
设备昂贵;难以满足普通用户的需求;难以捕获复杂的人体运动。
kinect基本上克服了上述的缺点,但是还无法呈现高维人体动画川。
大量的研究者已经研究出了利用运动捕获数据合成人体动画的技术。
目前最常使用的方法有三种:
构建人体运动模型,利用运动图重排运动和插值。
文献[9]提出了基于低维信号来生成表演动画的方法。
他们从附着少量反光标记的用户的动作中获取低维控制信号,通过在线局部建模和在线运动两个过程,重建出一个完整的人体动画。
本文利用Kinect从表演者的动作中获取低维控制信号,通过在线局部建模和在线运动合成两个过程,使低维信号被重建为一个完整的人体动画,以实现从低维到高维的实时运动重建效果。
基于Kinect的高维运动数据合成研究。
主要介绍利用Kinect捕获用户动作的低维控制信号,然后采用双级结构来合成人体动画,以实现从低维控制信号到高维控制信号的实时合成。
其中第一级首先通过构造一个邻居图缩小搜索空间,再利用K-D树搜索算法搜索数据库得到K个相似数据,最后利用PCA学习一个简单的线性局部模型,每一个新的局部模型都会被用于合成一个动作,第二级是利用平滑、控制、人体姿势优先等参数对线性模型进行优化。
1.1基于Kinect的低维运动数据捕获
本文研究的重点是利用低维运动数据实时驱动人体动画的合成。
其中使用的实时低维运动数据是由Kinect捕获所得,捕获所得的实时运动数据范围覆盖人体各个部位的运动,包括手腕、手臂、脚和小腿等。
而且Kinect会依据捕获的深度信息构建人体骨豁。
当玩家进行表演(左右移动或者跳跃)时,Kinect会实时捕获到其运动数据,同时使程序做出反应。
Microsoft在2011年6月发布的KinectForWindowsSDKbeta版本使得研究人员可以在Window7操作系统下进行学术研究。
Kinectbeta为研究人员增加了以下功能:
1)追踪视野范围内的1-2个骨架图像;2)利用Kinect捕获所得深度信息和XYZ标准颜色,可以利用捕获到的深度数据计算出传感器与人之间、人与Kinect之间的距离,以便三维重建。
接下来讨论如何利用OR操作获取指定数据,例如:
视频数据、游戏玩家的序列号、骨豁数据、图像深度信息。
一个Kinect捕获设备在同一时间只能被一个应用程序使用,但是同一时刻一个应用程序可以同时使用多个Kinect捕获设备。
应用程序先通过Runtime启用一个Kinect设备;接着利用Nuilnitialize设置程序需要的参数,Nuilnitialize是一个枚举函数,其中包含四个值且每个值代表不同数据类型的数据(NUIJNITIALIZE—FLAG—USES_DEPTH—AND—PLAYERJNDEX表示玩家的序列号和获得深度数据,NUI—INITIALIZE—FLAG—USES—COLOR表示视频数据,NUI—INITIALIZE_FLAG—USES_SKELETON表示骨豁数据,NUIJNITIALIZE—FLAG_USES_DEPTH表示深度信息)。
例如:
Runtimerun=newRuntime(index);run.Initialize(parameters)。
再利用捕获视野范围内每个像素点离Kinect的距离可以求得该点的深度信息,单位为毫米。
Kinect捕获的是人体运动过程中低维运动数据(7维)。
虽然Kinect可以捕获到20个关节点的运动数据,但是由于Kinect在PC机上的运动不稳定性以及数据的冗余性,若直接使用这些数据会导致合成的人体运动具有极大地失真现象。
Kinect在每帧下捕获人体的root、Itoes、rtoes、Iclavicle、lhand、rclavicle以及rhand的局部坐标,如图1-1所示。
图1-1Kinect捕获的低维运动数据
其中,1,2,3...表示人体运动的巾贞数;root表示人体的根关节;Itoes、rtoes表示人体的左右脚趾;Iclavicle、rclavicle表不人体的左右锁骨;Hiand、rhand表不人体的左右手;关节点后面跟的三个浮点数分别代表了各个关节点的局部三维坐标。
1.2基于Kinect的高维运动数据合成研究
因为第一节的运动捕获过程只是获得了用户的低维运动信号,所以合成高维的、准确的人体动画还需要经过以下几个步骤:
1)根据标记位置和最近合成的两个运动在运动捕获数据库中进行局部运动选择;
2)根据选择出的运动构建局部线性模型,并对模型进行平滑处理来实现在线运动合成;
3)根据根位置和朝向对在线合成的运动进行处理以合成新运动,使得能在动画中使用;
4)将合成的新运动连接至前面合成的运动上。
图1-2低维信号合成高维人体动画数据
2.1数据处理
首先,搭建人体运动数据库,在脱机的模式下捕获一个庞大的,包含各种动作种类的人体动作数据(长达一个小时),其中包含十种动作:
拳击(71597帧)、行走(105963帧)、双脚跳跃(40303帧)等等。
这些数据都是来自于CMU大学和中国传媒大学在网上公开的数据。
数据库中的每个动作都是由标定捕获系统自动计算得到的该动作关节活动范围的一套骨架模型。
每个动作序列包含中心点(骨盆)和18个关节点的绝对位置,这18个关节点分别为:
头部、胸腔、上颈、下颈、背部上方、背部下方等等。
本文用
表示存放在运动捕获数据库中的高维数据,为87维向量,这些数据包括走、跑、跳跃等等。
表示完整的人体运动数据,
记录了一帧中人体动画中所有的关联角度。
通过这些关联角度,计算出人体骨架点的三维空间位置。
表示数据库中的低维特征数据。
Kincet在t时刻从表演者身上获得的低维信号,记为
。
表演者在t时刻的绝对位置和朝向记为
。
当前需要合成的运动姿势记为
。
2.2在线局部建模
利用低维控制信号不能充分约束全身人体模型的关节点角度,本文采用一个即时学习算法来构造一系列简单局部模型,利用这个简单局部模型充分约束解决方案的空间。
在数据库中搜索与当前标记位置以及最近合成的两个运动相似的运动姿势,然后利用主成分分析算法(PrincipalComponentAnalysis,PCA)训练运动数据形成一个简单线性模型。
2.2.1基于邻居图的搜索算法
为了合成当前运动姿势
,我们需要在运动捕获数据库中搜索与当前控制信号
和该帧之前的运动姿势
相似的运动姿势。
为了提高计算效率,我们建立一个邻居图来描述不同姿势的关系。
邻居图中的每个点表示运动捕获数据库中的一个高维姿势
。
本文通过下式来描述两个姿势之间的相关性。
如果第i个节点和第j个节点满足以下式子,
定义为1,否则为0。
(2-1)
表示
的距离(曼哈顿距离)。
和
表示在运动捕获数据库的不同巾贞。
表示在一个特定的搜索中,最近邻居的搜索范围半径,这用于判定两个姿势是否具有相关性。
通过实验,我们取
为5。
在系统运行之前,需要将邻居图加载到系统之中。
这样当系统需要选择训练样本时,系统只需要搜索最近合成的两个人体运动,而不需要遍历整个数据库。
这个方法不仅缩小了检索空间,提高了计算效率,而且使得运动合成更加有效。
2.2.2基于K-d树的加速匹配算法.
K-d树CK-dimensiontree),是对数据点在K维空间中划分的一种数据结构。
其实,K-d树是二叉搜索树,它的每个节点表示一个空间范围,例如{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},数据点位于二维空间中。
K-d树的决策机制(前提条件,K-d树的每一层上具有一个分辨器):
先根据顶层顶点的Discrimninator决定一个的维数划分;再由它的下层的Discrimninator进行划分依此类推;当一个节点中的点数小于所给的最大点时,结束划分[55],例如3-2所示。
随着树的深度增加,循环选取坐标轴。
在图2-1中,以根节点选取X轴,根节点的孩子选取y轴,依次循环。
本章引入K-D的目的是为了能有效找到最邻近的人体运动姿势。
图2-1左图为2DK-d树,右图为K-d树对应的平面切割
本文使用的K-d树所采用的分辨器为:
nmodK。
该K-d树所具有的性质描述如下:
对于K-d树中的一个节点,若其左(右)子树为非空,则位于左(右)子树上的节点的第i维值皆小于(大于)当前节点的第j维值,并且左右子树的子树也为K-d树。
和
位于同一个超平面内。
当系统从Kinect中获得一帧
,它必须在数据库选择中选择接近
的作为训练样本。
所以,本文采用18-D树来提高
与
进行匹配速度。
18-D树是一个二叉树,它的每一个节点有18维点。
这个树状模型将父节点空间分成了两个邻接的空间,而且每个空间有一半的之前的节点。
这两个空间的距离为欧氏距离,算法为:
(2-2)
本文中的18-D树是利用迭代的方式构造的。
在每一个内部节点,父节点的值是两个子节点的中间值,左节点小于根节点,根节点小于右节点。
因此,当系统搜索一个点时,它的平均搜索时间复杂度为0(log2n),从而提高搜索效率。
2.2.3建立局部模型
本文为当前姿势建立一个线性模型:
(2-3)
表示样本q的第i个属性。
样本q表示通过搜索算法从运动捕获数据库中查询到与当前姿势最相似的高维样本数据。
表示i维的单位向量。
然后,本文采用了一个梯度下降查找
的系数的方法,并利用这个方法来查找具有线性功能的训练样本。
为了得到一个可以接受的权重向量,我们先选择一个随机权重,再将这个训练值反复应用到每个训练样本中。
当这个训练值不适合训练样本时,改变这个值。
这个过程是迭代的,直到这个训练值适合每一个训练样本。
权重会随着每一步训练规则的变化而不断的变化,并根据输入
修改权重
的值。
(2-4)
(2-5)
实例q的作用就是为了不断更新权重值。
它乘以K(cKqo.q))后,运动合成的错误只会受k个相似数据的影响。
表示一个称为学习率的常数,它决定梯度下降搜索的步长。
根据上面的模型,我们首先利用搜索算法选择训练样本
。
每一个训练样本都是高维向量。
这里需要注意的是q是在每个维度的适当区域内选择出来的随机数,而不是采用这个区域的平均值。
这样做的目的是为了缩短计算时间。
这种方法能够满足每秒合成几个实时动作的要求,并充分体现出实时性。
假设在训练样本中,
与当前姿势最相似,系统会选择
作为训练样本,并使用q来计算接着就可以使用线性模型来合成当前运动。
2.3在线高维运动合成
在线运动合成的重点是通过Kinect获得的低维控制信号
数据库中动作捕获数据
以及之前t-1顿{
}生成t时刻的运动姿势
。
本文使用局部线性模型作为一个强制性的约束,再利用平滑项优化处于低维空间
的当前动作
。
局部线性模型是用于重建用户姿势。
系统再通过人体姿势优先(Humapposeprior)、平滑(Smoothnessterm)、控制(Controlterm)对局部线性模型进行优化。
平滑项测量了如何将
排在{
}之后,保证了合成的人体运动的连续性。
我们假设在t时刻的动作只和t-1,t-2时刻的动作有关,算法为:
(3-8)
其中
和
为前两帧生成的动作。
控制项测量当前巾贞计算出来标记位置与当前巾贞捕获的标记位置的偏差:
(3-10)
人体姿势优先术通过利用运动捕获数据库的数据测量当前姿势的先验可能性。
从而保证了人体合成的运动在数据库中的概率分配。
我们假定在局部区域内的运动是一个多元正态分布的。
3实验结果
在线局部模型和以前的即时学习方法是不同的,因为前者是从最近实例的集合而不是从直接插值局部实例中构建一个低维空间来合成运动的。
图2-2中,我们将本文的方法和两个流行的局部学习方法进行了比较:
近邻(Nearestneighbor,NN)和局部加权回归(Locallyweightedregression,LWR)。
近邻合成简单选择了最近的实例。
局部加权回归通过他们到查询点的距离回归插入邻接点。
图2-3展示本文的方法比近邻合成和局部加权回归更为准确。
图3-1行走的平均合成错误:
对NN的每顿7.56度/关节
为了验证算法的正确性和有效性,本文采用Kinect捕获设备采集行走、跑步和跳跃这三组视频。
在实验中,我们的主要工作是让系统读入Kinect已经提取好的低维控制信号,然后将它还原成高维人体动画,如图3-2至3-4所示。
图3-2Kinect捕获行走姿势和相应的高维人体动画
图3-3Kinect捕获跑步姿势和相应的高维人体动画
图3-4Kinect捕获跳跃姿势和相应的高维人体动画
通过实验表明,即使在场景受到严重干扰的情况下,本文方法仍然可以重建出高质量的人体动画,且系统性能良好,平均合成时间为每秒30帧,没有明显的延迟。
4结语
本文描述了如何利用Kinect获取人体运动的低维信号,并利用低维信号来重建高维人体动画的方法。
本文在数据处理、搜索算法以及在线局部建模中使用了一些新的算法,使得人体动画合成更加准确。
本文利用邻居图缩短数据处理的时间:
利用K一D树缩短数据搜索的时间:
利用局部模型来实现人体运动的实时合成。
在运动合成的过程,巧妙地使用之前合成的人体运动来保证当前运动的流畅性。
最后,利用实验充分验证了本文方法的有效性。
由于Kinect本身能跟踪两个人的运动,本文后续工作主要集中于如何利用儿nect来实现两个人之间的交互运动合成。
另外,如何使用多个Kinect,来完成一群人之间的交互式运动合成,也是下一步的工作重点之一。
由于Kinect本身能跟踪两个人的运动,本文后续工作主要集中于如何利用儿nect来实现两个人之间的交互运动合成。
另外,如何使用多个Kinect,来完成一群人之间的交互式运动合成,也是下一步的工作重点之一。
参考文献
[1]王鑫数据驱动的人群动画仿真技术研究[D].浙江大学计算机科学与技术学院,2009.
[2]万齐亮.基于学习的逆向运动学人体运动合成[D].武汉,华中科技大学,2011.
[3]宗丹,李淳芄,夏时洪基于关键姿势分析的运动图G动构建[J].计算机研究与发展,2010,8:
1321-1328.
[4]KatsuY,YukaA,JessicaH.Animatingnon-humanoidcharacterswithhumanmotiondata[J].Eurographics/ACMSIGGRAPHsymposiumoncomputeranimation,2010:
169-178.
[5]瞿师.吴玲达,于荣欢等.人体运动的非线性降维及新运动生成[J].计算机辅助设计与图形学学报,2011.9:
1533-1544.
[6]马建晓,贺毅辉,夏凯等.虚拟人建模中的逆向运动学方法研究[J].计算机科学均发展.2011,9:
88-91.
[7]张鑫,王章野,王作省等.人体込动建模的实时逆运动学算法[J].计筧机辅助设计与图形'学报,2009,6(21):
853-860.
[8]EdmondSL.Ho,TakuKomura.Chiew-LanTai.Spatialrelationshippreservingcharactermotionadaptation[J].ACMTransactionsonGraphics(TOG).2010.29(4).
[9]陈国栋,李建微,潘林等.基于人体特征三维人体模型的骨架提取算法[J].计算机科学,2007,36(7):
295-297.
[10]GongF,KangC.3DMeshskeletonextractionbasedonfeaturepoints[C].ICCET'09Proceedingsofthe2009InternationalConferenceonComputerEngineeringandTechnology,2009:
326-329.
[11]李艳,王兆其,毛天露.三维虚拟皮肤变形技术分类及方法研究[J].计算机技术与发展,2005,42(5):
888-896.
[12]马振国.利HJkd-tree索引实现曲率自适应点云简化算法[J].测绘科学,2010,35(6):
67-69.
[13]GongF,KangC.3DMeshskeletonextractionbasedonfeaturepoints[C].ICCET'09Proceedingsofthe2009InternationalConferenceonComputerEngineeringandTechnology,2009:
326-329.
[14]KatzS,TalA.Hierarchicalmeshesdecompositionusingfuzzyclusteringandcuts[J].ACMTransonGraphics,2003'22(3):
954-961.
[15]JinxiangChai,JessicaK.Hodgins.Performanceanimationfromlow-dimensionalcontrolsignals[J].ACMTransactionsonGraphics(SIGGRAPH2005).2005.
[16]KatsuY,YukaA,JessicaH.Animatingnon-humanoidcharacterswithhumanmotiondata[J].Eurographics/ACMSIGGRAPHsymposiumoncomputeranimation,2010:
169-178
[17]杨长水,王兆其,高文等.个性化虚拟人体模型骨架生成方法[J].计算机辅助设计与图形学学报,2004,〗6
(1):
67,72,78.
[18]王鑫,孙守迁,柴春雷.3维人体运动编辑和合成技术综述[J].中国图象图形学报,2009,14
(2):
233-241.
[19]陈志华,马利庄,李众等.人体运动路径的编辑算法[J].计算机辅助设计与图形学学报,2006,18(5):
651-655.
[20]王万良马庆王鑫汪晓.基于Kinect的高维人体动画实时合成研究.2011中国计算机大会论文,:
2011.09
[21]马庆。
基于Kinect的实时人体动画合成及重定向技术研究.2012年,浙江工业大学硕士论文.
[22]刘丰,基于运动捕获数据的若干动画技术研究,浙江大学硕士学位论文,
2004年
[23]Zordan,VB.,Majkowsk礼A.,Chiu,B.,andFast,M.DynamieResPonsefor
MotionC即tureAnimation,hiproeeedingsofACMSIGGRA卫H2005,24(3):
697一701,2005
[24]肖俊,庄越挺,陈成,吴飞,“风格化人体运动数据的自动生成与编辑”,
CIDE2006
[25]刘更代,潘志庚,程熙,等.结合低维运动模型和逆运动学的风格化人体运动合成[J].计算机辅助设计与图形学学报,2010,22
(1):
145一151.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 kineck 人体 动画 研究 剖析