APP下载

基于Kinect骨骼识别的动画快速制作技术应用

2017-06-02刘振姚翠莉汤镇宁韩宁赵亮

数字技术与应用 2017年4期

刘振 姚翠莉 汤镇宁 韩宁 赵亮

摘要:依据基于kinect骨骼识别方法的动画制作技术,对kinect获取人体骨骼的技术原理、人体骨骼识别方法、目前基于骨骼的动画技术方法做简要介绍,为Kinect学习者提供参考。

关键词:Kinect;骨骼识别;动画快速制作技术;骨骼动画;人体识别

中图分类号:TP39 文献标识码:A 文章编号:1007-9416(2017)04-0089-02

1 Kinect获取人体骨骼的技术原理

骨架追踪技术的核心在于利用红外线传感器通过黑白光谱的方式来识别环境内容。黑与白分别对应着无穷远和无穷近。传感器以极快的速度来生成图像,实时的表达环境。然后,Kinect的任务就是利用分割策略将人从环境中分离出来,对于正在运动中的物体进行像素的分析,找出人体的各个部位。利用前面的结果,Kinect在输出之前会追踪人体的20个关节点来形成一副人体骨架系统,然后拿每个像素中的关节点与其相比较,这个方式可以十分准确的来确定,这个是人体的哪个部位。

1.1 骨架空间

Kinect通过20个关节点表示一个骨架,如图2。当人体走进Kinect的视野范围时,Kinect就可以把人体的20个关节点的位置找到,位置通过(x, y, z)坐标来表示。因为人体的动作与这些关节点的位置的变化紧密相关,所以通过Kinect对节点数据的获取可可以帮助电脑理解人体的动作。如图1所示。

人体的各关节点位置用(x, y, z)坐标表示。坐标是右手螺旋的单位是米。Kinect感应器处于原点上,z坐标轴则与Kinect感应的朝向一致。y轴正半轴向上延伸,x轴正半轴(从Kinect感应器的视角来看)向左延伸,这些坐标的表述为骨架空间。

1.2 骨骼跟踪

Kinect最多可以跟踪两个骨骼,可以最多检测六个人。站立模式可以跟踪20个关节点,坐着的模式的话,可以跟踪10个关节点。

NUI骨骼跟踪分主动和被动两种模式,提供最多两副完整的骨骼跟踪数据。主动模式下需要调用相关帧读取函数获得用户骨骼数据,而被动模式下还支持额外最多四人的骨骼跟踪,但是在该模式下仅包含了用户的位置信息,不包括详细的骨骼数据。

1.3 关于骨骼识别编程处理过程

骨骼数据来自Skeleton Stream。要使用骨架数据,应用程序必须在初始化NUI的时候声明,并且要启用骨架追踪。访问骨骼数据有事件模式和查询模式两种方式。基于事件的方式简单,代码量少,并且是一种很普通基本的方法,所以下面简要介绍一下基于事件的方式。当Skeleton Stream中有新的骨骼数据产生时就会触发该事件。

初始化并打开骨骼跟踪后,就可以从Skeleton Stream中拿骨骼数据。Skeleton Stream产生的每一帧数据skeleton Frame都是一个骨骼对象集合。包含了一个骨架数据结构的数组,其中每一个元素代表着一个被骨架追踪系统所识别的一个骨架信息。每一个骨架信息包含有描述骨骼位置以及骨骼关节的数据。每一个关节有一个唯一标示符如头(head)、肩(shoulder)、肘(elbow)等信息和对应的三维坐标数据。

Kinect能够追踪到的骨骼数量是一个常量。遂可使其在整个应用程序中能够一次性的为数组分配内存。循环便利skeleton Frame,每一次处理一个骨骼之前都需要判断一下是否是一个追踪好的骨骼。对于此可以使用Skeleton对象的Tracking State属性来判断,其会忽略不是使用者的骨骼信息即过滤掉那些Tracking State不等于Skeleton Tracking State. Tracked的骨骼数据,从而只对骨骼追踪引擎追踪到的骨骼进行处理。

2 目前人体骨骼识别方法概述

2.1 目前的几种人体骨骼识别方法

以姿态描述向量序列作为行为表示特征量构建人体结构信息,进行为识别[1]。

基于Kinect的数据特点,在一个假设的实验情景上设计了综合使用Kinect人体关节点、深度和视觉信息的行为识别研究方法,为行为识别研究中提供了更丰富的环境信息和物品属性信息,同时进行实验测试以证明该方法的可行性。

针对Kinect坐标空间下的人体结构特点构造人体结构向量是关节点数据规则化处理的基础。这种方法共构造了22组人体结构向量,依据所属身体部位的不同分为四部分:上肢部分、下肢部分、躯干部分和连接部分。

2.2 骨骼识别方法分析与比较

骨骼识别方法的本质是用数学方法处理Kinect接收到的图像信号,以达到对人体骨骼进行识别与跟踪的目的。

在上面提到的三种方法中,以姿态描述向量序列作为行为表示特征量构建人体结构信息,进行行为识别的方法由于各个向量之间相对关系恒定,只需要处理少数位置变动信息,所以可以快速高效处理数据;用改进后的图聚集算法自动提取3D模型的线性骨架。对图像的整体性有较好保护;用自适应分层处理、水平投影的方法分割提取出每一个人体目标3D模型的线性骨架的方法则侧重于对多人物情况下处理遮挡问题有较好解决。

3 目前基于骨骼的动画技术方法概述

3.1 基于骨骼动画技术的几种主要方法

目前,基于Kinect骨骼识别的动画制作技术主要有以下几种方法,分别为算法还原法、平面贴图法、Unity3D插件法。

算法还原法具体的实现方式为首先将设备识别的骨骼点进行组合,合成为一个完整的人体骨骼系统。第二步则是在已有骨骼的基础上利用蒙皮算法、包围盒算法、骨骼旋转向量等技术手段将骨骼还原为立体人物,实现动画的制作。这一技术手段已经在“立体试衣镜”中得到了应用,收效良好。

在利用该方法实现动画制作时需要解决的问题有蒙皮旋转失真与碰撞检测等。针对蒙皮算法存在的旋转失真等问题,现有的方法为对线性蒙皮算法进行改进。Kavan[4]等提出了在不改变线性蒙皮输入数据的前提下,建立以骨骼节点为旋转中心的球面蒙皮技术,利用双四元数来表示骨骼旋转矩阵。实践证明,该算法取得了较好的蒙皮效果。如图2所示。

3.2 动画制作技术中的优化问题

Kinect的出现在一定程度上解决了传统动作捕捉方法存在的设备昂贵、难以捕捉复杂人体运动等缺点,但是Kinect还无法呈现高维人体动画。目前,构建高维人体动画的方法主要有三种:构建人体运动模型,利用运动图重排运动和插值法。[6]这三种方法的算法都较为复杂,往往对硬件的要求过高,从而无法实现动画的实时制作,因此,寻求行之有效的优化算法成为了Kinect研究中的一个热门研究领域。

4 结语

目前,Kinect应用技术的开发还只是初见端倪,但已经表现出强大的生命力和多样性发展趋势。随着Kinect 技术的进一步成熟和充分挖掘,相信下一代Kinect将会配备更强大的处理芯片, 具有更高的分辨率和传输速率,能够实时捕捉人体细节,能够更加简单快捷的制作出动作自然流畅的3D动画。Kinect的出现是动画制作领域的一大重大革新。

参考文献

[1]Han Xu.The Human Behavior Recognition Research and System Design using Kinect[D].Shandong University,2013(韩旭,应用Kinect的人体行为识别方法研究与系统设计[D].山东大学,2013.

[2]Ma Qing, Research on Real-time Human Animation Synthesis and Motion Retargeting Based on Kinect[D].Zhejiang University of Technology,2012(马庆,基于Kinect的实时人体动画合成及重定向技术研究[D].浙江工业大学,2012.

[3]Yang Lin. Detection and Tracking of Human Target based on Kinect[D]. Dalian Maritime University,2013(楊林.基于Kinect的人体目标检测与跟踪[D].大连海事大学,2013.