基于Kinect深度相机的实时三维人体动画*

2014-09-13 12:35梁文章
计算机工程与科学 2014年8期
关键词:骨架姿态坐标系

陈 姝,梁文章,伍 靓

(1.湘潭大学信息工程学院,湖南 湘潭 411105;2.广西卡斯特动漫有限公司,广西 南宁 530003)

基于Kinect深度相机的实时三维人体动画*

陈 姝1,梁文章2,伍 靓1

(1.湘潭大学信息工程学院,湖南 湘潭 411105;2.广西卡斯特动漫有限公司,广西 南宁 530003)

研究了一种基于H-Anim标准的实时人体三维动画方法,首先对H-Anim中人体肢体层次结构进行研究和分析,给出了进行人体动画的坐标变换方法;其次,基于OpenNI对Kinect获取的数据进行重新处理,采用逆运动学计算非根关节旋转矩阵;最后给出了系统流程及具体实验方法,采用OpenGL由实时获取的关节旋转矩阵驱动虚拟人实现了人体动画。实验结果表明,该算法可以较精确地提取人体三维姿态,实时重构人体运动。

人体动画;Kinect;逆运动学;H-Anim

1 引言

三维动画是计算机图形学中的一个研究领域,它涉及到心理学、运动学等学科。计算机三维动画本质上是一系列连续的图像按一定的速率显示后,给人以动画的感觉[1]。人体由于结构和运动过程都较为复杂,因此也成为了三维动画制作当中的一个难点。但是因为人体的姿态能够表达较为丰富的含义,所以对于人体动画的研究制作具有较强的实际意义。

人体动画根据角色控制方式不同可以分为两种:基于传统计算机动画技术的方法[2, 3]和基于动作捕获系统进行数据驱动的方法。传统计算机动画技术方法通过对人体运动进行数学建模来产生各种人体动作的动画效果,从本质上而言是一种基于模型的动画制作方法,包括关键帧动画方法、运动学方法、动力学方法、刺激响应法以及行为规则方法等[4]。运动捕捉技术是一种新的动画制作方法,是通过分析人体运动序列图像来提取人体关节点的三维坐标,从而得到人体的运动参数,因此能够获得完全真实的人体动画。

现有商用运动捕获设备(如光学运动捕获系统)具有成本较高、操作过程专业性强等不足,研究者致力于研究成本较低、操作简单的基于视觉方法的三维人体运动捕获技术[5~7]与角色动画控制技术。但是,实际上由于人体关节的高维性以及人体运动的随机性,目前基于RGB视频处理的人体运动跟踪方法难以实时生成逼真的人体动画。为了可以实时生成逼真的人体运动动画,我们提出了一种基于Kinect深度相机数据基础的实时人体三维动画制作方法。该方法在跟踪到的二维关节的基础上采用逆运动学方法获得人体三维姿态,并重定向到符合H-Anim标准的虚拟人上,形成连续的人体动画。

2 虚拟人模型

虚拟人的几何模型建立常采用以下三种方法:棒模型、表面模型和体模型[8]。目前国际标准VRML和MPEG4都制定了自己的虚拟人标准。本文采用VRML中的虚拟人标准H-Anim进行虚拟人几何建模,该标准将人体分成骨架层与部位层,部位层位于骨架层之上。这一分层建模方法符合人体拓扑结构,可以更精确地表达人体的信息。同时,通过调节骨架层各关节点的位置可以驱动上层的部位层作相应的变化,可以比较方便地实现虚拟人的运动控制[9]。

2.1 H-Anim标准中的人体层次结构分析

H-Anim 标准通过Joint节点将整个人体组织成树型结构,如图1所示[10]。人体由一定数量的肢体段(Segments)构成,比如前臂、手或脚,这些段再由关节(Joints)连接在一起,比如肘、手腕或踝关节。除了根节点HumanoidRoot,每个Joint节点是另外一个Joint节点的子节点。作为Joint原型的典型实现,可以是一个Translation节点,这样,可以对Joint通过平移和转动等操作来改变作为身体段的Segment节点以及该Joint节点的Joint子节点,实现人物动画。

Figure 1 Topology of H-Anim model图1 H-Anim模型拓扑结构

2.2 虚拟人动画的坐标变换

根据H-Anim标准,节点分为两类:一类是关节点,另一类是骨骼段。通过各关节点可以对各骨骼段进行旋转,骨骼段再通过平移完成相应的肢体动作,最后依附于骨骼段来绘制相应的几何模型[11],并显示出来。

描述一个肢体绕关节旋转后的坐标位置可以根据以下变换方程得到:

(1)

其中,x是该肢体中某一像素点在模型中的初始局部坐标(以该肢体所依附的关节为局部坐标系的原点),x′为旋转后在局部坐标系中的三维坐标,R为旋转矩阵。

由于整个人体以树型结构表示,因而非根关节点依附的肢体在进行动画时,式(1)的R为一个旋转矩阵链(根据树的拓扑结构从该关节到根关节的旋转矩阵乘积),即R=R1R2…Rn,其中Rn为该肢体依附关节的旋转矩阵,R1为根关节的旋转矩阵。例如,对于右前臂的旋转矩阵计算为:Rre=Rv l1Rrs,其中Rv l1和Rrs分别为关节vl_1和r-shoulder关节的旋转矩阵。虽然H-Anim在上半身定义了很多关节以便进行灵活的上半身运动显示,但是在实际上大部分虚拟人只采用了一到两个关节。

3 基于Kinect的关节三维姿态提取

3.1 关节三维坐标获取

我们采用微软的Kinect作为系统的输入设备,Kinect是一款深度摄像机,共有三个镜头,可以获得RGB图像及深度图像。Kinect的数据信息可以采用OpenNI开发包获取,另外,OpenNI还具有骨架跟踪功能,可以实时跟踪每帧中人体关节。在OpenNI中共定义了24个关节,但是进行骨架分析时,NITE部件只能识别15个关节,如图2所示,其中坐标系方向符合右手坐标系准则。

Figure 2 Recognizable joints in OpenNI图2 OpenNI中可识别关节模型

OpenNI按照图3所示流程进行人体骨架跟踪,即先进行人体检测,然后进行特定姿态检测(双手上举的投降姿势),再进行姿态标定,标定正确就进行人体骨架跟踪。以上任一过程发生都会产生相应的事件,并通过回调函数来响应。在利用VS2008进行开发时,需设置相应的回调函数,在上一过程回调函数中启动下一过程,所有的回调函数都通过节点提供的成员函数RegisterXXXCallbacks()来注册。OpenNI跟踪到的关节信息包括位置及方向,即关节的三维坐标及变换矩阵。

Figure 3 Diagram of tracking human body skeleton in OpenNI图3 OpenNI进行人体骨架跟踪流程图

3.2 肢体旋转矩阵计算

OpenNI提取的关节姿态通过函数GetSkeletonJointOrientation()可以得到,该变换矩阵为当前帧关节坐标系相对于世界坐标系的旋转矩阵。由2.1节可知,要动态显示人体运动姿态需要得到相邻两关节坐标系之间的旋转矩阵,可采用以下方法得到,以计算右肘关节与右肩关节之间的旋转矩阵为例。根据多刚体运动学知识可得:

(2)

实验中发现OpenNI得到的旋转矩阵除了根关节外,别的关节旋转姿态并不太准确,因此我们采用文献[7]所述逆运动学方法来提取非根关节坐标系间的相对旋转角度。

我们将关节按照Z-Y-X顺序旋转欧拉角,绕Z轴旋转的角度以α表示,绕Y轴旋转的角度以β表示,绕X轴旋转的角度以γ表示。由于三维数据没有考虑扭矩的作用,可认为在Y轴上旋转分量为零,因此相邻两关节间的旋转矩阵为:

根据多关节的级连变换原理,建立待求关节中某一像素局部坐标与世界坐标之间的变换方程为:

P′=RfRP

(3)

其中,P为OpenNI检测到特定姿态时得到该像素在关节局部坐标系中的坐标,在这里以运动链中该关节的孩子关节来代表。例如计算右肩关节旋转欧拉角,则P为检测到特定姿态时右肘关节在右肩关节坐标系中的坐标,按照下式计算:

(4)

其中,Pre和Prs分别为OpenNI获得的右肘关节及右肩关节的三维坐标。

P′为当前帧下右肘关节在右肩关节坐标系中的坐标,计算同式(4)。Rf为在运动链中该关节的父关节坐标系相对于世界坐标系的旋转矩阵,在这里则为torse关节(见图2)。解式(3)则可以得到待求关节的旋转欧拉角及旋转矩阵。

4 人体动画实现

系统的整体执行过程如图4所示,系统首先进行OpenNI的初始化,包括节点m_Context的初始化,回调函数User_NewUser、User_LostUser、UserPose_PoseDetected、UserCalibration_CalibrationStart、UserCalibration_CalibrationEnd的设置。

虚拟人文件的导入及显示采用文献[3]的VHASDK开发包实现,OpenNI检测到特定姿态进行正确标定后就进行骨架跟踪,如果跟踪结果可信度大于0.6则采用3.2节的方法进行关节旋转矩阵求解,并调用VHASDK的姿态改变函数进行旋转角度修改。最后刷新屏幕,通过调用VHASDK的Update()函数进行虚拟人重绘,这样连续进行就得到了实时可视的人体三维动画。

Figure 4 Data flow in our system图4 系统流程图

5 实验结果

演示程序采用C++ 语言在VS2008环境下编写,并使用Opencv2.0+OpenNI+OpenGL实现了上述算法。实验运行硬件环境配置如下:CPU为Inteli3-2310M,内存为4GB,显卡为GeForceGT550M。实验显示一段人体进行散打过程的实时动画,系统能够以30帧/s的速度进行人体动画演示。

Figure 6 Real time reconstructed human pose animated by an avatar图6 实时生成的动画序列

图5为实验过程中前100帧右肩关节旋转欧拉角,实验前200帧部分中间结果如图6 所示(间隔20帧),图6左边为分割出来的人体三维数据投影到图像上的结果,实线段为骨架跟踪结果,右边为提取的人体三维运动姿态重定向到虚拟人后的显示结果。实验结果表明,动画播放过程连续流畅,并且较好地跟踪到人体三维运动,能够真实模拟人体运动过程。

Figure 5 Estimated motion trajectory of left shoulder图5 右肩关节旋转欧拉角

6 结束语

本文在获取Kinect深度数据的基础上,采用OpenNI进行人体姿态获取,并驱动H-Anim虚拟人实现了实时三维人体动画。该方法既可以捕获人体三维运动数据,又可以实时直观看到跟踪后的运动数据,容易确定是否为需要的动作。实验结果表明所述方法生成的人体动画真实流畅,能够较好地模拟人的动作。在此基础上可以进行运动数据重用、人体行为分析、手势识别等研究,这也将是作者今后进一步研究的内容。

[1]WuLing,HouJin,XuFang.Therealizationof3DhumananimationbyBVH[J].JournalofShenyangLigongUniversity, 2012, 31(1):52-56.(inChinese)

[2]LüZhi-guo,LiYan,HeHan-gen.Studyonmodel-basedhandposturereconstructionofvirtualhuman[J].JournalofSystemSimulation, 2009, 21(3):665-667.(inChinese)

[3]ChenShu,ZouBei-ji,PengXiao-ning. 3Dvirtualhumananimationbasedoncapturedmotiondatainkeyvideoframes[J].JournalofSystemSimulation, 2008, 20(21):5868-5873.(inChinese)

[4]XiaoJun,ZhuangYue-ting,WuFei.Computervisionandmachinelearningin3Dhumananimation:Asurvey[J].JournalofComputer-AidedDesign&ComputerGraphics, 2008, 20(3):281-290.(inChinese)

[5]YuXue-song,TangXiang-long,LiuJia-feng,etal.Analgorithmforfasttrackingof3Darmmotionbasedonhierarchyjointmodel[J].ChineseHighTechnologyLetters, 2009, 19(6):596-602.(inChinese)

[6]ChenJia,WuXiao-jun. 3DhumanbodyshapeandmotiontrackingbyLBSandSnake[J].JournalofComputer-AidedDesign&ComputerGraphics, 2012, 24(3):357-371.(inChinese)

[7]ChenShu,ZouBei-ji,PengXiao-ning,etal.Markerless3Dhumanmotiontrackingformonocularvideosequences[J].JournalofComputer-AidedDesign&ComputerGraphics, 2008, 20(8):1047-1055.(inChinese)

[8]WangZhao-qi.Studyonsynthesisofvirtualhuman[J].JournaloftheGraduateSchoolAcademiaSinica, 2000, 17 (2):89-98.(inChinese)

[9]ShuBo,MaoTian-lu,WangZhao-qi.MotiondisplayofvirtualhumanbasedonD3D[J].JournalofComputer-AidedDesign&ComputerGraphics, 2004, 16 (11):1505-1510.(inChinese)

[10]HumanoidAnimationWorkingGroup.Specificationforastandardhumanoid[EB/OL].[2003-03-16].http://www.h-anim.org.

[11]WenGJ,WangZQ,XiaSH,etal.Frommotioncapturedatatocharacteranimation[C]∥ProcoftheACMSymposiumonVirtualRealitySoftwareandTechnology, 2006:165-168.

附中文参考文献:

[1] 吴玲, 侯进, 徐芳.BVH文件驱动三维人体动画的实现[J]. 沈阳理工大学学报, 2012, 31(1):52-56.

[2] 吕治国, 李焱, 贺汉根. 基于模型的虚拟人手势重构方法研究[J]. 系统仿真学报, 2009, 21(3):665-667.

[3] 陈姝, 邹北骥, 彭小宁. 基于关键视频帧跟踪数据的三维虚拟人动画[J]. 系统仿真学报, 2008, 20(21):5868-5873.

[4] 肖俊, 庄越挺, 吴飞. 计算机视觉与机器学习技术在三维人体动画中的应用综述[J]. 计算机辅助设计与图形学学报, 2008, 20(3):281-290.

[5] 于雪松, 唐降龙, 刘家峰, 等. 基于关节层次模型的3D手臂运动快速跟踪算法[J]. 高技术通讯, 2009, 19(6):596-602.

[6] 陈加, 吴晓军. 联合LBS和Snake的3D人体外形和运动跟踪方法[J]. 计算机辅助设计与图形学学报, 2012, 24(3):357-371.

[7] 邹北骥, 陈姝, 彭小宁, 等. 适用于单目视频的无标记三维人体运动跟踪[J]. 计算机辅助设计与图形学学报, 2008, 20(8):1047-1055.

[8] 王兆其. 虚拟人合成研究综述[J]. 中国科学院研究生院学报, 2000, 17 (2):89-98.

[9] 束搏, 毛天露, 王兆其. 基于D3D的三维虚拟人运动显示[J]. 计算机辅助设计与图形学学报, 2004, 16(11):1505-1510.

CHENShu,born in 1976,PhD,associate professor,CCF member(E200016567M),his research interests include virtual reality, and computer vision.

梁文章(1964-),男,广西南宁人,工程师,研究方向为虚拟现实和计算机视觉。E-mail:ad-new@vip.163.com

LIANGWen-zhang,born in 1964,engineer,his research interests include virtual reality, and computer vision.

伍靓(1990-),男,湖南涟源人,硕士生,研究方向为虚拟现实和计算机视觉。E-mail:lsjwuliang@msn.com

WULiang,born in 1990,MS candidate,his research interests include virtual reality, and computer vision.

Real-time3DhumanmotionanimationbasedonKinect

CHEN Shu1,LIANG Wen-zhang2,WU Liang1

(1.College of Information Engineering,Xiangtan University,Xiangtan 411105;2.Guangxi Cast Animation Co.,Ltd.,Nanning 530003,China)

An approach to animating 3D human motion based on H-Anim standard is proposed. Firstly, the human body hierarchical structure in H-Anim is studied and analyzed, and a coordinate transform strategy is given based on the analysis. Secondly, based on OpenNI, the data

from the Kinect is re-processed, and the rotational matrix of non-root joint is obtained by inverse kinematics. Finally, the entire data flow and the concrete implementation are described, and the human body animation is achieved by using OpenGL to retarget the real-time human pose to the virtual human model. The experimental results show that the proposed approach can accurately extract the human pose, and reconstructs real-time human body movement.

human motion animation;Kinect;inverse kinematics;H-Anim

1007-130X(2014)08-1544-05

2012-11-26;

:2013-03-12

国家自然科学基金资助项目(61100139,61040009);科技部科技型中小企业技术创新基金资助项目(国科发计[2011]242号);广西千亿元产业重点攻关工程资助项目(桂科攻11107006-13号)

TP391.41

:A

10.3969/j.issn.1007-130X.2014.08.021

陈姝(1976-),男,湖南祁东人,博士,副教授,CCF会员(E200016567M),研究方向为虚拟现实和计算机视觉。E-mail:csu_cs@163.com

通信地址:411105 湖南省湘潭市湘潭大学工科楼北栋302

Address:Room 302,North Wing,Engineering Building,Xiangtan University,Xiangtan 411105,Hunan,P.R.China

猜你喜欢
骨架姿态坐标系
浅谈管状骨架喷涂方法
攀爬的姿态
骨架密度对炭/炭多孔骨架压力浸渗铜的影响
全新一代宋的新姿态
跑与走的姿态
解密坐标系中的平移变换
坐标系背后的故事
基于重心坐标系的平面几何证明的探讨
内支撑骨架封抽技术在突出煤层瓦斯抽采中的应用
极坐标系下移动机器人的点镇定