APP下载

一种基于Kinect 的角色骨骼动画方法

2014-12-14李红波冉光勇丁林建

关键词:关节点骨骼坐标系

李红波,冉光勇,吴 渝,丁林建

(重庆邮电大学计算机科学与技术学院网络智能研究所,重庆400065)

0 引言

虚拟人骨骼动画是角色动画领域的主要研究内容[1],其制作技术除人工调整关键帧形成骨骼动画外,还有基于视觉与运动捕获数据的方法。

基于视觉方法[2]的一般流程是:通过对包含人体运动序列的视觉素材进行跟踪分析,提取运动序列,接着对运动序列进行条件约束等处理,以此得到骨骼动画。该方法成本低、运动类型较丰富,但存在以下3方面不足:1)利用二维数据生成三维运动数据存在信息缺失的问题[3];2)人体运动序列的获取过程易受关照强度影响,抗光照干扰能力弱[4];3)提前准备视觉素材的做法不能满足交互式环境对实时性的要求。

基于运动捕获数据的方法通常需要价格昂贵的运动捕捉设备,并且需要捕捉对象在关节点处佩戴光、电学设备,致使人体运动灵活性低,动作获取成本高[5]。Park等[6]提出了一种基于光学标记点的方法,密集的标记点集合提高了运动真实性,但降低了计算效率,无法满足实时性需求。Casas等[7]通过使用4D运动图,将不同部分捕获数据进行分块匹配与连接,以此生成骨骼动画。该方法能够满足较多运动类型需求,但是容易出现裂缝现象。Boboc等[8]提出了一种基于前向运动学的骨骼动画方法,该方法以Kinect提取到的捕捉对象骨骼数据为基础,使用前向运动学求解角色模型关节点坐标数据,并对坐标数据进行平滑处理,使用处理后的数据调整模型,得到骨骼动画,此方法实时性强,但角色模型的运动与真实运动之间存在较大差别,同时,固定运动参数的做法降低了模型适用性。

针对上述问题,本文提出了一种新的解决方法,通过在Kinect骨骼模型的每个关节点处建立虚拟坐标系,对捕捉对象的单帧姿态进行抽象空间位形描述,利用位形数据求解关节点骨骼旋转矩阵,使用骨骼旋转矩阵对角色模型进行从端到根的关节方向与位置调节。实验结果表明,本文提出方法的实时性能与抗光照能力强,角色模型运动与真实运动相似度高。

1 相关技术基础

1.1 KINECT虚拟人骨骼模型

Kinect人体骨骼简化模型,如图1所示,包含了人体主要的20个关节节点,由19个骨骼段组成。按照人体构造结构,任意2个关节之间建立Kinect关节点父子关系,形成一个简化的最小人体骨骼模型。其中,臀部中心关节点是整个人体骨骼模型的根节点,它的三维坐标数据完全决定了整个人体的移动轨迹。臀部中心关节点有6个自由度,分别为3个平移自由度与3个旋转自由度,其他节点仅仅包括3个旋转自由度。

图1 Kinect骨骼模型Fig.1 Kinect skeleton model

1.2 骨骼动画基本原理

为了对骨骼动画原理进行描述,设p(j)代表关节点j的父节点,R(j)代表从父节点p(j)的局部坐标系到子节点j的局部坐标系的变化矩阵,则对于任意的骨骼关节点j,从根节点局部坐标系转化到j的局部坐标系可以用矩阵F(j)表示[9]为

当人体姿态发生变化时,我们用T(j)表示某一帧关节点j的骨骼旋转矩阵,则j在这一帧的变化矩阵为

假设网格节点v附着于骨骼关节点j,v'为人体姿态发生变化后v在骨骼关节点j下的新位置,则新位置的计算公式为

在帧渲染时,通过(3)式便可求得皮肤顶点的新位置。

2 Kinect骨骼动画方法

2.1 问题提出和总体思路

基于视觉生成骨骼动画的方法虽然与实际运动情况较符合,但缺乏实时性且需要较为严格的光照条件。基于运动捕获数据的方法需要价格高昂的设备,且运动灵活性低。Boboc等提出的基于前向运动学的方法,虽然克服了此问题且具备较强实时性,但角色模型骨骼运动与实际运动之间存在较大偏差。针对以上问题,本文提出了一种新的骨骼动画方法。具体思路如下:首先利用Kinect设备捕获的骨骼数据,建模描述人体任意时刻的运动姿态,然后根据人体前后帧运动之间的联系,确定角色模型关节点骨骼旋转矩阵,最后对捕获对象空间位移变化进行处理,实时调整模型空间位置形成骨骼动画。

按照上述描述,本文提出的骨骼动画方法可概括为以下4个阶段:1)初始姿态假定:对角色模型初始姿态进行固定;2)单帧姿态建模描述:利用Kinect SDK应用程序接口,获取骨骼状态、提取骨骼关节点三维坐标数据,利用骨骼数据对关节点位形进行数学描述,将人体运动姿态变化问题转化为旋转平移问题;3)骨骼旋转矩阵求解:以关节点单位方向基向量为基础求解骨骼旋转矩阵T(j),利用骨骼旋转矩阵对关节点方向进行调节;4)根节点位移:更新根节点位置,体现角色模型空间位移变化,得到最终结果。

2.2 初始姿态假定

由于不同美工制作的角色模型形态各不相同,因此,模型间必定存在骨骼长短不一致,关节点旋转角度不相等,各个关节点在父节点空间中相对位置不同等差异。这些差异将导致即使对不同角色模型应用相同骨骼数据也无法生成一致的骨骼动画。因此,为了生成符合特定角色模型的骨骼动画,需统一角色模型初始姿态。本文中角色模型的初始姿态设定为直立。

2.3 单帧姿态建模描述

Kinect骨骼数据是非层次、非树形的三维数据,由于各数据之间不存在任何的相关联系,因此,无法直接利用Kinect骨骼数据来对角色模型运动姿态进行调整。为了提取蕴含于骨骼数据中运动者的旋转平移信息,本文运用刚体运动学中关于刚体方位的定义来对单帧图形中人体运动姿态进行描述。

为了规定空间中某个关节点的方位,建立一直角坐标系{B}与关节点固接。用坐标系{B}的3个单位主矢量[x y z]相对于参考坐标系{S}的方向余弦组成的三维矩阵来对关节点方位进行描述,记三维矩阵为OBS。

由迪纳维特-哈坦伯格提出的D-H坐标系描述法是目前常用的坐标系建立方法,D-H坐标系描述法规定:在各个主要部位上固定坐标系,坐标系的Z轴与关节点的轴线重合,而X轴则是沿着相邻2个Z轴的公垂线,Y轴可由右手坐标系来确定。本文在D-H描述法的基础上,结合人体结构特征,提出了一种新的关节点坐标系建立方法,具体步骤如下。

1)选择在垂直切面上与离待建立坐标系关节点最近的关节点为向量末端,待建立坐标系关节点为首端,建立Y轴,若垂直切面无最近关节点,则选正Y轴方向作为关节点Y轴方向;

2)在水平切面上选择与待建立坐标系关节点最近的关节点为向量末端,待建立坐标系关节点为首端,建立向量AB,若无,则设:AB=(100);

3)根据空间解析几何相关知识可知,X轴垂直于Y轴和AB,那么X轴的方向可由(4)式求得。

(4)式中:X=m11m21m31);Y=(m12m22m32)。

4)因为Z轴垂直于以X和Y轴为方向的平面,故Z轴方向可按(5)式求得

方向为从X轴逆时针绕到Y轴。

按照上述步骤即可得到每个关节点的方位矩阵,设方位矩阵为OB,表示为

(6)式中,Z=(m13m23m33)。

设参考坐标系{S}的3个单位向量分别为e1,e2,e3,坐标系{B}的3个单位向量分别为x1,x2,x3,则{S}与{B}之间的方向余弦aij为

由于世界坐标系为标准单位基向量,表示为

依据(7)式可知,任意关节点的方向矩阵即为坐标系基向量

2.4 骨骼旋转矩阵求解

考虑捕捉对象姿态发生变化后的情形,以左臂肘关节向上微微抬起,其他关节相对位置无变化为例,其他运动同理。

图2 肘关节向上抬起Fig.2 Lifting up the left wrist

图2中,实线为后一帧手部位置,虚线为前一帧手部位置。其中,坐标系{B}描述了前一帧左手肘的方位,坐标系{A}描述了后一帧左手肘的方位,{B}与{A}有共同的坐标原点,但是方位不同,记{B}为 PB=(iBjBkB),{A}为 PA=(iAjAkA)。其中 iB,jB,kB,iA,jA,kA分别为 {B}与{A}的单位主矢量。在关节对应皮肤上取一点,假设为P,设P在两坐标系中的坐标分量分别为(APxAPyAPz)与(BPxBPyBzP),根据坐标旋y转原理可以得到

则关节点骨骼旋转矩阵为

则可得关节点骨骼旋转矩阵,结合(2)式可知最终关节点变化矩阵为

2.5 根节点调整

由于在运动数据处理阶段忽略了角色模型根节点在世界坐标系下的平移与纵向运动,因此,需要对根节点做额外的位移处理。由于Kinect坐标系与游戏引擎坐标系在基本度量单位长度的定义上存在不同,导致直接应用捕捉对象根节点数据到游戏引擎中会产生失真现象,故需对根节点数据进行处理。设Kinect与游戏引擎基本度量单位长度差距为n,若在Kinect世界坐标系中,运动捕捉对象根节点在前后帧之间的位移为 Moffset=(mx,my,mz),则在游戏引擎中角色模型根节点的位移为

2.6 方法描述

假设角色模型关节点总数为n。根据前文描述,本文方法可归纳为以下步骤。

1)检测Kinect骨骼状态,若检测到骨骼则进入2),否则继续检测;

2)置i为0,如果i<n,则进入3),否则转到6);

3)依据改进的D-H坐标系描述法求解OB,依据(9)式得到OBS;

4)使用前后帧方位矩阵,利用(11)式求解关节点骨骼旋转矩阵;

5)i=i+1,返回2);

6)利用骨骼旋转矩阵调节关节点;

7)利用(13)式调整根节点;

8)结束,重新进入1)。

从上述描述可知,求解各个关节点的骨骼关节矩阵是本文方法的基本操作。根据系统运行步骤可知,本文方法在一次完整的执行过程中的基本操作执行次数为O(n)。

3 实验验证

鉴于公开的视频数据库数据量较大,且一般进行了数据压缩存储,存在信息缺失的问题,这会对本文的后续特征点提取产生干扰。因此,本文实验部分以Kinect设备检测到的捕获对象骨骼数据作为实验数据来源。为了说明本文方法的有效性,确保对比实验的公平性,共设计了3组试验方案,分别为光照对比试验、运动实时性试验和模型运动精度对比试验。

Boboc等提出的基于前向运动学的方法与本文方法都基于Kinect平台且该方法具有较强实时性,同属于国外较新研究成果,故选择该方法作为模型运动精度试验对比对象。光照对比实验主要是在弱光照条件下进行特征点提取对比,基于视觉的方法特征点提取采用的是目前主流的surf算法。

本文硬件实验环境为:Intel Core i3 3.30 GHz CPU,内存4 GByte,操作系统为 Windows 7,开发环境为Visual Studio 2010,OGRE和Kinect SDK。

3.1 强弱光照条件下运动对比实验

图3、图4分别展示了本文方法在正常光照条件下(320 lux)及弱光照条件下(10 lux)的模型运动情况。图5给出了二者的关节点识别效果。

浙江大学庄越挺指出:基于视觉的方法在人体运动捕获中,常用的特征点跟踪提取算法对光照条件非常敏感。从图5可以看出,鲁棒性较强的特征点跟踪提取算法surf在光照强度为10 lux时失效,而本文方法在10 lux时仍能准确获取人体各关节点的三维坐标,求解骨骼旋转矩阵,实现骨骼动画。从图5还可知,本文方法相对于基于视觉的方法,对捕捉对象所穿衣物与背景之间的颜色差别要求更低,色差敏感度较弱,能更佳地应对复杂工作环境。

3.2 实时性实验

实时性的实验结果如图3所示,每一幅图中右下角方框用于显示人体运动情况,左上方为角色模型实时运动情况。本文方法从提取骨骼数据到角色模型做出相应动作只需0.007 s,远小于Kinect提供的数据时间间隔0.033 s和人类视觉停留时间0.042 s。因此,本文方法能够实时处理Kinect提取到的骨骼数据,克服视觉类方法缺乏实时性的问题,且生成的骨骼动画平滑性高,连续性强。

3.3 模型运动精度对比实验

Boboc等以前向运动学为基础,通过前向运动学求解关节点坐标数据,并对坐标数据进行平滑处理,然后使用处理后的数据调整模型,从而产生连贯且平滑的角色运动。图6展示了2种方法在复杂运动与简单运动2种模式下的角色运动效果。其中,简单运动包括双手向上伸直,头部低垂2种;复杂运动包括双手叉腰、腿后踢加腰前倾,以及左右手并拢加腰后倾、腿部斜踢2种。通过比较可以发现,本文方法中角色模型与捕捉对象的运动更加接近,运动精度更高。

本文以关节点实际位置与计算位置之间的欧拉距离来衡量姿态误差,相应的计算公式为

(15)式中:avg_error表示平均误差;n代表关节点总数;ts表示关节点真实位置;cs表示计算出的位置;md表示最大欧拉距离。利用(14)-(15)式对每帧结果计算关节点平均误差,而后对所有帧平均误差取均值,通过实验测试可知,本文方法的模型运动误差为4.2%,而Boboc等提出的方法为7.4%。因此,本文方法得到的骨骼动画和实际情况更加相符合。

图3 正常光照条件下实验及实时性效果Fig.3 Experimental results under normal light conditions and the real-time effects

图4 弱光照条件下实验Fig.4 Experimental results under weak light conditions

图5 关节点识别Fig.5 Joints identification

4 结束语

本文利用Kinect设备获取的骨骼数据,提出了一种新的骨骼动画方法。实验表明,此方法相比现有解决方法有更强的实时性,更好的抗光照干扰能力和更佳的运动精度。目前Kinect设备提供的骨骼数据容易出现剧烈抖动现象,下一步将重点研究如何对Kinect设备捕获的数据进行滤波处理,降低数据抖动带来的误差。

图6 模型运动精度对比Fig.6 Comparison of model motion accuracy

[1]ISMAIL I,SUNAR M S,BASORI A H.Dynamic Motion Control Editor for Virtual Human[J].International Journal of Interactive Digital Media,2013,1(1):14-17.

[2]ISMAIL I,KOLIVAND H,SUNAR M S,et al.An Overview on Dynamic 3D Character Motion Techniques in Virtual Environments[J].Life Science Journal,2013,10(3):846-890.

[3]尚华强.基于Kinect的虚拟人物动作仿真研究[D].杭州电子科技大学,2013.SHANG Huaqiang.Simulation study of virtual movement based on Kinect[D].Hangzhou:Hangzhou Dianzi University,2013.

[4]罗忠祥,庄越挺,潘云鹤,等.视频中不完全运动特征的跟踪算法[J].计算机辅助设计与图形学学报,2003,15(6):730-735.LUO Zhongxiang,ZHUANG Tingyue,PAN Yunhe,et al.Incomplete motion feature tracking algorithm in video sequences[J].Journal of Computer-aided Design & Computer Graphics,2003,15(6):730-735.

[5]TONG X,XU P,YAN X.Research on skeleton animation motion data based on Kinect[C]//IEEE.Computational Intelligence and Design(ISCID),2012 Fifth International Symposium.New York:IEEE Press,2012,2:347-350.

[6]PARK S I,HODGINS J K.Data-driven modeling of skin and muscle deformation[J].ACM Transactions on Graphics(TOG),2008,27(3):96.

[7]CASAS D,TEJERA M,GUILLEMAUT J Y,et al.4D parametric motion graphs for interactive animation[C]//ACM.Proceedings of the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games.New York,USA:ACM,2012:103-110.

[8]BOBOC R G,TOMA M I,PANFIR A N,et al.Learning new skills by a humanoid robot through imitation[C]//IEEE.Computational Intelligence and Informatics(CINTI),2013 IEEE 14th International Symposium.New York:IEEE Press,2013:515-519.

[9]况鹰.基于Kinect运动捕获的三维虚拟试衣[D].广东:华南理工大学,2012.KUANG Ying.3D virtual try-on based on Kinect motion capture[D].Guangdong:South China University of Technology,2012.

猜你喜欢

关节点骨骼坐标系
做家务的女性骨骼更强壮
三减三健全民行动——健康骨骼
基于深度学习和视觉检测的地铁违规行为预警系统研究与应用
关节点连接历史图与卷积神经网络结合的双人交互动作识别
解密坐标系中的平移变换
坐标系背后的故事
骨骼和肌肉
搞好新形势下军营美术活动需把握的关节点
基于重心坐标系的平面几何证明的探讨
RGBD人体行为识别中的自适应特征选择方法