基于kineck的人体动画研究
- 格式:doc
- 大小:1.94 MB
- 文档页数:12
基于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月发布的Kinect For Windows SDK beta版本使得研究人员可以在Window 7操作系统下进行学术研究。
Kinect beta为研究人员增加了以下功能: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 表示深度信息)。
例如:Runtime run = newRuntime (index);run.Initialize (parameters)。
再利用捕获视野范围内每个像素点离Kinect的距离可以求得该点的深度信息,单位为毫米。
Kinect捕获的是人体运动过程中低维运动数据(7维)。
虽然Kinect可以捕获到20个关节点的运动数据,但是由于Kinect在PC机上的运动不稳定性以及数据的冗余性,若直接使用这些数据会导致合成的人体运动具有极大地失真现象。
Kinect在每帧下捕获人体的root、Itoes、rtoes、Iclavicle、lhand、rclavicle 以及 rhand 的局部坐标,如图 1-1 所示。
图1-1 Kinect捕获的低维运动数据其中,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个关节点分别为:头部、胸腔、上颈、下颈、背部上方、背部下方等等。
本文用12[q ,q ,q ]n 表示存放在运动捕获数据库中的高维数据,为87维向量,这些数据包括走、跑、跳跃等等。
q n 表示完整的人体运动数据,12[c ,c ,,c ]n 记录了一帧中人体动画中所有的关联角度。
通过这些关联角度,计算出人体骨架点的三维空间位置。
表示数据库中的低维特征数据。
Kincet 在t 时刻从表演者身上获得的低维信号,记为t c 。
表演者在t 时刻的绝对位置和朝向记为t z ,。
当前需要合成的运动姿势记为q t 。
2.2 在线局部建模利用低维控制信号不能充分约束全身人体模型的关节点角度,本文采用一个即时学习算法来构造一系列简单局部模型,利用这个简单局部模型充分约束解决方案的空间。
在数据库中搜索与当前标记位置以及最近合成的两个运动相似的运动姿势,然后利用主成分分析算法(Principal Component Analysis, PCA)训练运动数据形成一个简单线性模型。
2.2.1基于邻居图的搜索算法为了合成当前运动姿势q t ,,我们需要在运动捕获数据库中搜索与当前控制信号t c 和该帧之前的运动姿势121[q ,q ,q ]t - ,相似的运动姿势。
为了提高计算效率,我们建立一个邻居图来描述不同姿势的关系。
邻居图中的每个点表示运动捕获数据库中的一个高维姿势q n 。
本文通过下式来描述两个姿势之间的相关性。
如果第i 个节点和第j 个节点满足以下式子,ij a 定义为1,否则为0。
i i jL q q ε-< (2-1) l L 表示l L 的距离(曼哈顿距离)。
i q 和j q 表示在运动捕获数据库的不同巾贞。
ε表示在一个特定的搜索中,最近邻居的搜索范围半径,这用于判定两个姿势是否具有相关性。
通过实验,我们取ε为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)},数据点位于二维空间中。