一种基于Kinect的骨骼重定向方法及装置与流程

文档序号:14009137阅读:877来源:国知局
一种基于Kinect的骨骼重定向方法及装置与流程

本发明属于人机交互领域,具体涉及一种基于kinect的骨骼重定向方法及装置。



背景技术:

随着科学技术的发展,骨骼重定向技术被广泛应用于影视、游戏、军事训练以及虚拟现实等领域。骨骼重定向技术是指将运动捕捉采集到的运动数据,映射到虚拟场景中的人体模型上,同时保持虚拟场景中人体模型动作的逼真、以及人体模型与实际人体动作一致同步。运动捕捉采集的数据作为骨骼重定向技术的输入数据,其对骨骼重定向技术具有重大影响。

运动捕捉也被称为动作捕捉,通过在运动物体的关键部位设置传感器,由运动捕捉系统实时捕捉传感器的位置,然后将传感器的三维坐标传给计算机。现有的运动捕捉技术主要分为机械式、声学式、电磁式、主动光学式以及被动光学式,但采用上述运动捕捉技术的设备普遍存在穿戴复杂、实时性差、设备笨拙、安装环境要求高、成本高等缺陷。kinect是一种3d体感摄像机,能够在不接触人体的情况下,实现对人体骨骼数据的采集,kinect依靠复杂而又精密的硬件和领先的机器学习算法,可以有效地解决上述问题。

在实际应用中,可以利用kinect采集的人体骨骼数据,通过骨骼重定向技术驱动带骨骼的三维人体模型运动。但是由于虚拟人体模型的大小比例与真实人物比例不一致,甚至骨架结构也不相同,因此,kinect采集到的骨骼数据无法直接应用在虚拟人体模型上,此外,将kinect采集到的骨骼数据应用在虚拟人体模型上,会由于物体的遮挡导致骨骼数据失真、在模型结算过程中,出现滑步现象。

因此,如何提出一种解决上述问题的方案是本领域技术人员目前需要解决的问题。



技术实现要素:

为了解决现有技术中的上述问题,即为了解决现有重定向方法的动作失真和滑步的问题,本发明一方面提供一种基于kinect的骨骼重定向方法,所述方法包括:

获取kinect采集的骨骼数据,将所述骨骼数据转换为人体模型中对应关节点的旋转数据,其中,所述骨骼数据与人体模型中的关节点一一对应;

计算所述旋转数据与在t-pose状态下预先获取的人体姿态数据的数据偏移量;

将所述数据偏移量作用于所述人体模型,控制所述人体模型运动,以实现人体模型的重定位。

在上述方法的优选技术方案中,所述“将所述骨骼数据转换为人体模型关节的旋转数据”,其方法为:

选择所述人体模型中的臀部关节点作为原点,以人体左右水平方向为x轴,人体上下竖直方向为y轴,人体正前方为z轴,构建坐标系;

为所述人体模型中的关节点创建坐标,计算所述人体模型中相邻关节点的空间向量差值,通过欧拉公式将所述空间向量差值转换为旋转数据,具体公式为:

vi(t)=kj(t)-ki(t),

v(t)=[p(t),f(k1(t)),f(k2(t)),...,f(kn(t))]t

其中,p(t)为臀部的空间坐标,f(ki(t))为将kinect空间中关节点的坐标转换为欧拉角表示的函数;

所述臀部关节点作为根关节点,所述根关节点包含所述人体模型的位移信息和旋转信息,所述位移信息包括3个平移参数,所述旋转信息包括3个旋转参数。

在上述方法的优选技术方案中,所述人体模型具体表示为:

m(t)=[p(t),q1(t),q2(t),...,qn(t)]t

其中,p(t)=(x,y,z),表示根节点的位移信息,qi(t)=(θ,ψ,φ),表示第i个除根节点以外的节点的旋转信息。

在上述方法的优选技术方案中,在“将所述骨骼数据转换为人体模型关节的旋转数据”之前,该方法还包括:

对所述骨骼数据进行滤波处理,得到第一骨骼数据,对所述第一骨骼数据进行从0-19的数学标注。

在上述方法的优选技术方案中,所述“对所述骨骼数据进行滤波处理”之前,该方法还包括:

步骤s1:在无遮挡的情况下,控制kinect采集人体腿部上下骨骼长度lu、ll以及腿部总长度l;

步骤s2:计算人体腿部骨骼的实际长度,若所述实际长度大于预设阈值,则对kinect采集的数据进行滤波处理;

步骤s3:判断实际骨骼长度与腿部总长度是否满足三角约束,若满足,则将髋关节和踝关节位置和的二分之一处作为膝关节的位置。

在上述方法的优选技术方案中,所述“计算所述旋转数据与在t-pose状态下预先获取的人体姿态数据的数据偏移量”,其方法为:

获取在t-pose状态下人体姿态的初始数据;

计算所述旋转数据中的根节点的位移信息与所述旋转数据中除根节点以外的节点的旋转信息,相对所述初始数据的数据偏移量具体表示为:

v(tj)=[p(t0)+t(tj),r1(tj)v1(t0),r2(tj)v2(t0),...,rn(tj)vn(t0)]t

其中,p(t0)表示在t-pose状态下预先获取人体姿态的初始数据,t(tj)表示根节点的位移,rn(tj)表示除根节点以外的节点的旋转信息,vn(t0)表示人体姿态的初始节点信息。

在上述方法的优选技术方案中,所述“将所述数据偏移量作用于所述人体模型,控制所述人体模型运动”,其方法为:

将所述数据偏移量映射到所述人体模型的节点数据中,所述人体模型根据所述数据偏移量进行动作的改变,其中,将所述数据偏移量映射到所述人体模型的节点数据中的具体公式为:

m(tj)=[p(t0)+t(tj),r1(tj)q1(t0),r2(tj)q2(t0),...,rn(tj)qn(t0)],

其中,p(t0)表示在t-pose状态下预先获取的人体姿态的初始数据,t(tj)表示根节点的位移,qn(t0)表示t-pose状态下人体模型的初始数据,rn(tj)表示节点的旋转信息。

在上述方法的优选技术方案中,所述“将所述数据偏移量作用于所述人体模型,控制所述人体模型运动”之前,该方法还包括:

计算kinect当前获取的数据与上一时刻获取的数据中对应的骨骼节点的距离disframe;

若所述距离disframe大于预设阈值,则保持所述人体模型中对应的骨骼节点不动,否则,将所述数据偏移量作用于所述人体模型,控制所述人体模型运动。

在上述方法的优选技术方案中,所述“将所述数据偏移量作用于所述人体模型,控制所述人体模型运动”之后,该方法还包括:

检测所述人体模型中足部四个关节点与地面的距离,分别计算所述四个关节点与地面的距离,保留其中最短的距离;

将所述最短的距离作为位置偏移量控制所述人体模型的根节点的位置偏移,对所述人体模型进行失真修正。

在上述方法的优选技术方案中,所述“将所述最短的距离作为位置偏移量控制所述人体模型的根节点的位置偏移,对所述人体模型进行失真修正”,其方法为:

将所述四个关节点与地面最近的关节点作为末端效应器,记录所述末端效应器的状态;

判断所述人体模型足部关节点着地情况:若所述人体模型的左脚关节点着地,则保存右脚第一次着地点水平面的坐标值为(x,z),若所述人体模型的右脚关节点着地,则保存左脚第一次着地点水平面的坐标值为(x,z);

计算实际末端效应器位置与着地点坐标值的偏移量,根据所述偏移量调整所述人体模型根关节的位置,对所述人体模型进行失真修正。

本发明另一方面提供一种存储装置,其中存储有多条程序,所述程序适于由处理器加载并执行如上述所述的基于kinect的骨骼重定向方法。

本发明第三方面提供一种处理装置,包括处理器、存储设备;处理器,适于执行各条程序;存储设备,适于存储多条程序;所述程序适于由处理器加载并执行如上述所述的基于kinect的骨骼重定向方法。

本发明提供一种基于kinect的骨骼重定向方法,包括:

获取kinect采集的骨骼数据,将所述骨骼数据转换为人体模型中对应关节点的旋转数据,其中,所述骨骼数据与人体模型中的关节点一一对应;

计算所述旋转数据与在t-pose状态下预先获取的人体姿态数据的数据偏移量;

将所述数据偏移量作用于所述人体模型,控制所述人体模型运动,以实现人体模型的重定位。

与最接近的现有技术相比,本发明至少具有如下有益效果:

本发明提供的基于kinect的骨骼重定向方法,将kinect采集的骨骼数据转化为旋转数据,计算出在世界坐标系下,kinect所采集的每一帧图像中,各个关节点的位置和朝向信息,利用基于正向运动学的方法,使用旋转数据映射到人体模型中,从而能够在人体模型的大小比例与真实人体比例不一致,甚至骨架结构也不相同的情况下,做到人体模型与人体动作的统一。此外,本发明提供的基于kinect的骨骼重定向方法还可以解决人体模型重定向过程中出现的动作失真和滑步等问题。

附图说明

图1为本发明一种实施例的基于kinect的骨骼重定向方法的流程示意图;

图2为本发明一种实施例节点构成的人体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围

下面参照附图来描述本发明的优选实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。

如图1所示,为本发明一种实施例的基于kinect的骨骼重定向方法的流程示意图,包括:

步骤s1:获取kinect采集的骨骼数据,将骨骼数据转换为人体模型中对应关节点的旋转数据,其中,骨骼数据与人体模型中的关节点一一对应;

作为新一代的体感设备,kinect依靠复杂而又精密的硬件和机器学习算法,能够主动捕捉人体的骨骼数据,其中,骨骼数据是指人体各个关节点的位置和朝向信息,骨骼数据与人体模型中的各个关节点一一对应,因此,通过kinect采集的人体的骨骼数据能够利用正向运动学解析方法,求得虚拟人体模型在世界坐标下,各个关节点的三维坐标和旋转四元数,从而可以通过kinect获取的数据驱动虚拟的人体模型。

进一步地,本实施例中,图1所示的步骤s1中,在“将骨骼数据转换为人体模型关节的旋转数据”之前,该方法还包括:

对骨骼数据进行滤波处理,得到第一骨骼数据,对第一骨骼数据进行从0-19的数学标注。

由于kinect设备本身的局限性以及外部环境的干扰等原因,kinect采集的骨骼数据中有一部分数据会影响后续重定向的精度和准确度,因此对kinect采集的骨骼数据进行滤波处理,删除不需要的关节数据,对数据进行格式化,并对滤波处理后得到的数据进行数学标注。如图2所示,图2示例性的给出了由节点构成的人体结构示意图,在实际应用中,将人体模型简化为20个关节点,由19段骨骼构成,对骨骼数据对应的关节点进行从0-19的数学标注,从而在后期进行重定向时,便于识别关节点。

作为本发明实施例中的优选方案,在“对骨骼数据进行滤波处理”之前,该方法还包括:

步骤s11:在无遮挡的情况下,控制kinect采集人体腿部上下骨骼长度lu、ll以及腿部总长度l;

步骤s12:计算人体腿部骨骼的实际长度,若实际长度大于预设阈值,则对kinect采集的数据进行滤波处理;

步骤s13:判断实际骨骼长度与腿部总长度是否满足三角约束,若满足,则将髋关节和踝关节位置和的二分之一处作为膝关节的位置。

本实施例中,kinect通常需要用户始终面向传感器,且不能拿任何物体,当人体的一部分被遮挡时,kinect则不能准确识别人体的姿势。对于人在运动的过程中,由于遮挡等原因,使得kinect在捕捉关节时,丢失关节点或者识别错误的关节点,因此需要在处理数据的过程中,对关节点进行几何约束处理。

在无遮挡的情况下,控制kinect采集人体腿部上下骨骼的长度,分别记为lu、ll,以及腿部的总长度l,接着判断关节点的可信度,当kinect在实际应用中获取骨骼数据后,计算实际腿部的骨骼长度,并比较实际计算的腿部骨骼长度和在无遮挡情况下计算的腿部总长度l两者的差值,若两者的差值在预设阈值范围内,则可以判定该骨骼节点不可信,对kinect实际采集的数据进行滤波处理,并重复执行步骤s11,若骨骼节点可信,则进一步判断实际的骨骼长度与腿部的总长度是否满足三角约束的条件,若满足条件,则将髋关节和踝关节位置和的二分之一处作为膝关节的位置,并将此关节点作为可用节点处理。

步骤s2:计算旋转数据与在t-pose状态下预先获取的人体姿态数据的数据偏移量;

进一步地,本实施例中,图1所示的步骤s2中,“计算旋转数据与在t-pose状态下预先获取的人体姿态数据的数据偏移量”,其方法为:

获取在t-pose状态下人体姿态的初始数据;

计算旋转数据中的根节点的位移信息与旋转数据中除根节点以外的节点的旋转信息,相对初始数据的数据偏移量具体如公式(1)所示:

v(tj)=[p(t0)+t(tj),r1(tj)v1(t0),r2(tj)v2(t0),...,rn(tj)vn(t0)]t(1)

其中,p(t0)表示在t-pose状态下预先获取人体姿态的初始数据,t(tj)表示根节点的位移,rn(tj)表示除根节点以外的节点的旋转信息,vn(t0)表示人体姿态的初始节点信息。

基于kinect原始数据构建的坐标系和人体模型关节点的基本坐标系的坐标轴不一定全部重合,而且由于不同的设置,人体模型的关节点基坐标系、坐标轴也没有标准的方向,因此不能通过转换后的数据v(t)直接控制人体模型旋转,可以采用插值驱动的方式控制人体模型运动。

初始时,保证人体模型和构建的kinect骨骼系统保持相同的t-pose姿势,记录下此时的初始数据v(t0)和m(t0)。在任意时刻tj通过kinect提供的原始数据k(tj),计算当前时刻的旋转数据,具体方法如公式(2)所示:

v(tj)=[p(tj),f(k1(tj)),f(k2(tj)),...,f(kn(tj))]t(2)

相比于姿势为t-pose时的初始时刻,用户的各个关节旋转了r(tj)=[r1(tj),r2(tj),...,rn(tj)],根关节点移动了t(tj),其中v(t0)和v(tj)之间的关系具体如公式(3)所示:

v(tj)=[p(t0)+t(tj),r1(tj)v1(t0),r2(tj)v2(t0),...,rn(tj)vn(t0)]t(3)

其中,p(t0)表示在t-pose状态下预先获取人体姿态的初始数据,t(tj)表示根节点的位移,rn(tj)表示除根节点以外的节点的旋转信息,vn(t0)表示人体姿态的初始节点信息。

步骤s3:将数据偏移量作用于人体模型,控制人体模型运动,以实现人体模型的重定位;

进一步地,本实施例中,图1所示的步骤s3中,“将数据偏移量作用于人体模型,控制人体模型运动”,其方法为:

将数据偏移量映射到人体模型的节点数据中,人体模型根据数据偏移量进行动作的改变,其中,将数据偏移量映射到人体模型的节点数据中的具体公式如公式(4)所示:

m(tj)=[p(t0)+t(tj),r1(tj)q1(t0),r2(tj)q2(t0),...,rn(tj)qn(t0)](4)

其中,p(t0)表示在t-pose状态下预先获取的人体姿态的初始数据,t(tj)表示根节点的位移,qn(t0)表示t-pose状态下人体模型的初始数据,rn(tj)表示节点的旋转信息。

通过当前时刻相对初始状态的姿态变化,可以将姿态变化对应的数据偏移量映射到人体模型的节点数据中,并且人体模型根据数据偏移量进行动作的改变。

本发明提供的基于kinect的骨骼重定向方法,将kinect采集的骨骼数据转化为旋转数据,计算出在世界坐标系下,kinect所采集的每一帧图像中,各个关节点的位置和朝向信息,利用基于正向运动学的方法,使用旋转数据映射到人体模型中,从而能够在人体模型的大小比例与真实人体比例不一致,甚至骨架结构也不相同的情况下,做到人体模型与人体动作的统一。此外,本发明提供的基于kinect的骨骼重定向方法还可以解决人体模型重定向过程中出现的动作失真和滑步等问题。

作为一种优选的实施例,“将骨骼数据转换为人体模型关节的旋转数据”,其方法为:

选择人体模型中的臀部关节点作为原点,以人体左右水平方向为x轴,人体上下竖直方向为y轴,人体正前方为z轴,构建坐标系;

为人体模型中的关节点创建坐标,计算人体模型中相邻关节点的空间向量差值,通过欧拉公式将空间向量差值转换为旋转数据,具体公式如公式(5)和公式(6)所示:

vi(t)=kj(t)-ki(t)(5)

v(t)=[p(t),f(k1(t)),f(k2(t)),...,f(kn(t))]t(6)

其中,p(t)为臀部的空间坐标,f(ki(t))为将kinect空间中关节点的坐标转换为欧拉角表示的函数;

臀部关节点作为根关节点,根关节点包含人体模型的位移信息和旋转信息,位移信息包括3个平移参数,旋转信息包括3个旋转参数。

人体模型运动,是通过模型蒙皮上绑定好的骨架驱动的。骨架是由一系列节点组成,按照人体构造关系,在相邻两个关节点之间建立父子关系,所有节点呈树状结构,骨架中的每个节点代表人体骨骼的一个关节。骨骼拓扑结构是由关节点构成的,关节与关节之间构成关节链,因此,骨骼的定义就是关节链的定义,骨骼的运动就是关节链的运动控制。每个关节同其父关节组成一段骨骼,由于该骨骼是一段刚体,由于骨骼之间为锚接,所以每段骨骼存在三个自由度。为每段骨骼建立一个坐标系,该坐标系原点为该骨骼的节点,关节的空间角度可以通过骨骼坐标系在模型空间中的欧拉角表示j(i)=(θ,ψ,φ)。

骨架是由一系列的关节点组成,关节点之间由骨骼段相连,并且具有父子继承关系,每一个父关节点的空间位置变化都会影响其子关节点的空间位置。一般人体模型将人体骨骼简化为20个关节节点,由19段骨骼组成,以其臀部的关节作为骨架结构的根关节点,根关节点不受任何约束,可以旋转和平移,旋转和平移根关节点可以控制整个模型旋转和移动。根关节点记录了人体模型在世界坐标中的位移信息和旋转信息,存在6个自由度,分别为3个平移参数和3个旋转参数,其他关节点记录着该关节点相对于其父节点的旋转信息,为3个自由度的3个旋转参数。

将kinect提供的原始数据记为:

k(t)=[k1(t),k2(t),...,kn(t)]t(7)

其中ki(t)=[xi,yi,zi]为第i个非根节点的关节点在kinect坐标系下的三维坐标数据。由于kinect提供的骨骼数据是非层次的、独立的数据,各个关节之间不存在任何联系,因此无法直接用kinect提供的数据驱动人体模型运动,需要先将原始数据k(t)转换为能够驱动人体模型运动的旋转数据,具体公式如公式(8)所示:

v(t)=[p(t),f(k1(t)),f(k2(t)),...,f(kn(t))]t(8)

其中,p(t)为臀部的空间坐标,f(ki(t))为将kinect空间中关节点的坐标转换为欧拉角表示的函数。

作为一种优选的实施例,人体模型具体表示如公式(9)所示:

m(t)=[p(t),q1(t),q2(t),...,qn(t)]t(9)

其中,p(t)=(x,y,z),表示根节点的位移信息,qi(t)=(θ,ψ,φ),表示第i个除根节点以外的节点的旋转信息。

为了描述任意时刻人体模型的姿态,运用刚体运动学定义人体模型的状态。在任意时刻t,模型的姿态m(m)(t)由骨架中n个关节的状态来定义,其中,p(t)=(x,y,z),表示根节点的位移信息,qi(t)=(θ,ψ,φ),表示第i个除根节点以外的节点的旋转信息。

作为一种优选的实施例,“将数据偏移量作用于人体模型,控制人体模型运动”之前,该方法还包括:

计算kinect当前获取的数据与上一时刻获取的数据中对应的骨骼节点的距离disframe;

若距离disframe大于预设阈值,则保持人体模型中对应的骨骼节点不动,否则,将数据偏移量作用于人体模型,控制人体模型运动。

通过kinect获取骨骼数据后,判断骨骼数据对应的节点数是否可信,通过计算kinect获取的前后相邻两帧的数据中,相同的节点之间的距离是否在阈值范围内,若是,则说明节点可信,则将数据偏移量作用于人体模型,控制人体模型运动;若否,则保持人体模型中对应的骨骼节点不动。

作为一种优选的实施例,“将数据偏移量作用于人体模型,控制人体模型运动”之后,该方法还包括:

检测人体模型中足部四个关节点与地面的距离,分别计算四个关节点与地面的距离,保留其中最短的距离;

将最短的距离作为位置偏移量控制人体模型的根节点的位置偏移,对人体模型进行失真修正。

通过kinect采集的数据驱动人体模型运动的过程中,会出现的模型滑步以及模型悬空等失真现象,会明显破坏原始运动的逼真性,因此需要对失真的地方进行修正。根据人体的树状层次结构,足部末端效应器共有4个关节点,分别为:左脚脚后跟(ankleleft)、右脚脚后跟(ankleright)、左脚脚趾(footleft)、右脚脚趾(footright),四个关节点均可以与地面相接触,取其中一个为约束关节点,约束关节点的选取原则如下:将与地面距离最小的关节点作为约束关节点。具体方法的流程如下:

检测足部四个关节与地面的距离,比较四个距离的大小;

将距离最小的关节作为末端效应器并保留最小距离,记录末端效应器的状态;

根据最小距离的偏移量在竖直方向移动模型,使模型脚部着地;

当单脚着地时,保存末端效应器第一次着地点水平面的坐标值(x,z);

若左脚着地,保存右脚末端效应器第一次着地点水平面的坐标值(x,z),反之取左脚坐标值;

计算实际末端效应器的位置与着地点坐标值的偏移量,根据该偏移量调整模型根关节的位置。

最右边骨骼链代表kinect采集的上一数据的位置与姿态,最左边的关节链代表kinect采集的当前数据的姿态与位置信息,为消除滑步需要将当前数据右移,通过用脚部的位置偏移量来控制根节点的位置偏移,即模型整体的位置偏移。

本发明还提供一种存储装置,其中存储有多条程序,程序适于由处理器加载并执行如上述的基于kinect的骨骼重定向方法。

所属技术领域的技术人员可以清楚地了解到,为了描述的方便和简洁,本发明实施例的存储装置的具体工作过程以及相关说明,可以参考前述基于kinect的骨骼重定向方法实施例中的对应过程,且与上述方法具有相同的有益效果,在此不再赘述。

本发明还提供一种处理装置,包括处理器、存储设备;处理器,适于执行各条程序;存储设备,适于存储多条程序;程序适于由处理器加载并执行如上述的基于kinect的骨骼重定向方法。

所属技术领域的技术人员可以清楚地了解到,为了描述的方便和简洁,本发明实施例的处理装置的具体工作过程以及相关说明,可以参考前述基于kinect的骨骼重定向方法实施例中的对应过程,且与上述方法具有相同的有益效果,在此不再赘述。

本领域技术人员应该能够意识到,结合本文中所公开的实施例描述的各示例的方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明电子硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以电子硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1