一种人体单一姿态的初始校正方法与流程

文档序号:19013502发布日期:2019-11-01 19:19阅读:235来源:国知局
一种人体单一姿态的初始校正方法与流程

本发明属于人机工程领域,特别涉及一种人体单一姿态的初始校正方法。



背景技术:

分析人体的姿态是计算机视觉研究的重要问题;分析人体姿态主要用于捕捉人体动作,可应用于人机交互、电影特效以及智能监控系统等诸多领域。

mems传感器包括加速度计、陀螺仪和磁强计,结合特定算法,可以用来测量空间姿态;将其安装到人体骨骼处,可以通过mems传感器指示的姿态角,获知人体关节姿态。在进行人体姿态获取时,设mems传感器自身的坐标系为体坐标系b,人体关节对应坐标系为大地坐标系e,两个坐标系并不统一,因而在mems传感器坐标系中指示的姿态角需要一定换算关系来对应到大地坐标系统的姿态。

但mems传感器通常为便携式,安装到人体后位置并不固定,可能的安装位置、角度等都可随意放置,因此每次mems传感器安放到人体的校准矩阵都不相同,这样,每次使用前都需要经过一个校准过程,不但耗费时间,而且误差大。



技术实现要素:

针对上述问题,本发明一种人体单一姿态的初始校正方法,所述方法包括:

根据人体头部初始时刻的四元数,计算头部航向;

根据所述头部航向计算相对旋转量,得到旋转后的人体各个关节在新坐标系下的四元数;

计算所述新坐标系下的四元数相对于其初始位置的旋转量,即可得到骨骼的空间姿态。

进一步地,所述人体头部初始时刻的四元数通过人体保持静止、人体头部安装的mems传感器检测获得。

进一步地,所述计算头部航向的计算式为:

dhead=atan2(2*(p0*p3+p1*p2),1–2*(p2*p2+p3*p3))

其中,式中[p0,p1,p2,p3]为头部初始时刻四元数。

进一步地,所述相对旋转量dq0的计算式为:

dq0=[cos(-dhead/2),0,0,sin(-dhead/2)]

其中,式中dhead为头部航向。

进一步地,所述人体各个关节包括人体的手、肘、肩、腿、脚和髋,且在所述人体各个关节处均安装有mems传感器。

进一步地,所述mems传感器为9轴传感器,包括3轴加速度计、3轴陀螺仪、3轴磁传感器。

进一步地,所述新坐标系的基准是以头部当前航向为0的坐标系。

进一步地,所述人体各个关节在新坐标系下的四元数qi(t)的计算式为:

qi(t)=dq0*pi(t)

其中,式中dq0代表相对旋转量,pi(t)代表t时刻关节i处的四元数,*表示四元数相乘。

进一步地,所述新坐标系下的四元数相对于其初始位置的旋转量计算式为:

qi(t)=qi(t)*inv(qi(0))

其中,式中,qi(0)代表i处关节的初始时刻新的四元数,inv表示四元数的逆,qi(t)代表人体i处关节t时刻新的四元数;qi(t)*inv(qi(0))表示的是t时刻相当于初始位置的旋转量。

本发明的校正方法通过所有传感器均根据头部传感器提供的航向信息,确定坐标系指向;从方便使用的角度出发,不论mems传感器以何种角度、姿态安放于人体后,不需要特定的旋转等动作,即可通过mems传感器指示人体真正的骨骼姿态,快速精准。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了根据本发明实施例的校正方法操作流程图;

图2示出了根据本发明实施例的人体坐标系示意图;

图3示出了根据本发明实施例的旋转量的坐标系指示示意图。

具体实施方式

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

本发明提供一种人体单一姿态的初始校正方法,应用于动作捕捉的场景中,图1示出了根据本发明实施例的校正方法操作流程图;示例性的,如图1所示,所述初始校正方法包括以下步骤:

步骤一:根据人体头部初始时刻的四元数,计算头部航向;

具体的,进行人体动作捕捉时,首先根据需求,在人体的主要关节处安装mems传感器,示例性的,在人体的手、肘、肩、腿、脚、髋、头部等关节处安装mems传感器,本发明中各个关节均安装一个传感器;其中的mems传感器称为9轴传感器,包括:3轴加速度计、3轴陀螺仪、3轴磁传感器,通过mems传感器获取人体实时姿态信息。本发明中利用四元数表示实时获取的姿态信息,即在人体的手、肘、肩、腿、脚、髋、头部等关节处安装mems传感器,通过mems传感器测得的数值得到相应关节的四元数;其中的四元数为一个四维向量,示例性的,四元数p=[p0,p1,p2,p3],其中的[p1,p2,p3]为空间的一个旋转轴,如空间坐标系的x、y、z轴;其中的p0与绕此轴旋转的角度θ有关,即同时本发明中的四元数均定义为单位四元数,即||p||=1。

具体的,本发明中进行的人体动作捕捉时,使用的各个mems传感器统一以头部为基准进行示例说明,即根据头部mems传感器提供的航向信息,确定坐标系指向。其中头部四元数是利用安装于人体头部的mems传感器进行获取。

示例性的,在进行人体姿态初始校正时,首先在人体的各个关节处安装mems传感器,使人体保持静止,图2示出了本发明人体静止时的人体坐标系示意图,如图2所示,根据头部初始时刻的四元数,计算头部航向;具体的,通过头部安装的mems传感器获得头部的初始时刻四元数为p0(0),其中p0代表头部四元数,(0)代表初始时刻,而后根据p0(0)计算的头部航向为dhead。

示例性的,所述头部初始时刻四元数为p0(0)=[p0,p1,p2,p3],则头部航向为:dhead=atan2(2*(p0*p3+p1*p2),1–2*(p2*p2+p3*p3))。

步骤二:根据所述头部航向计算相对旋转量,得到旋转后的人体各个关节在新坐标系下的四元数;

具体的,在人体的关节发生旋转时,该部位的四元数即会立即出现变化;本发明以头部航向计算相对旋转量,其中的所述相对旋转量定义为dq0,且dq0的计算式为:

dq0=[cos(-dhead/2),0,0,sin(-dhead/2)](1)

式(1)中dhead为头部航向,身体各个传感器经此旋转后得到新坐标系下的四元数,新坐标系下的四元数的基准是以头部当前航向为0的新坐标系。通过新的坐标系得到身体各个关节在新坐标下的四元数qi(t),其中qi(t)的计算式为:

qi(t)=dq0*pi(t)(2)

式(2)中dq0表示的是相对旋转量,其他关节(初头部以外)的mems传感器测得的四元数用pi代表;pi(t)代表t时刻关节i处的四元数,示例性的,人体手部的关节的mems传感器用p1表示,人体肘部的关节的mems传感器用p2表示,人体肩部的关节的mems传感器用p3表示;t代表的是时间,其中t=0代表的是初始时刻,*表示四元数相乘。

实施案例1,以人体手部关节的姿态捕捉为例,人体手部的四元数利用p1表示,初始时刻(即t=0)手部的四元数通过手部的mems传感器即可获得,记录为p1(0),示例性的,将p1(0)得到的数值定义为p1(0)=[θ0,x0,y0,z0];则在新的坐标下手部的初始时刻(t=0)四元数定义为q1(0),且q1(0)数值定义为q1(0)=[γ0,x0,y0,z0],其中γ0、x0、y0、z0的计算式为:

γ0=[cos(-dhead/2)*θ0-0*x0-0*y0-sin(-dhead/2)*z0];

x0=[cos(-dhead/2)*x0+0*θ0+0*z0-sin(-dhead/2)*y0];

y0=[cos(-dhead/2)*y0+0*θ0+sin(-dhead/2)*x0-0*z0];

z0=[cos(-dhead/2)*z0+sin(-dhead/2)*θ0+0*y0-0*x0];

其中的dhead为头部航向,通过计算γ0、x0、y0、z0的数值,即可得到新的坐标下手部初始时刻(t=0)的四元数的数值q1(0)。

t(其中的t>0)时刻时,手部的四元数可通过t时刻时mems传感器获得,并记录为p1(t),示例性的,将p1(t)得到的数值定义为p1(t)=[θ1,x1,y1,z1];

将新坐标下手部t时刻的四元数定义为q1(t)=[γ1,x1,y1,z1],其中γ1、x1、y1、z1的计算式为:

γ1=[cos(-dhead/2)*θ1-0*x1-0*y1-sin(-dhead/2)*z1];

x1=[cos(-dhead/2)*x1+0*θ1+0*z1-sin(-dhead/2)*y1];

y1=[cos(-dhead/2)*y1+0*θ1+sin(-dhead/2)*x1-0*z1];

z1=[cos(-dhead/2)*z1+sin(-dhead/2)*θ1+0*y1-0*x1];

其中的dhead为头部航向;通过计算γ1、x1、y1、z1的数值,即可得到新的坐标下手部t时刻的四元数的数值q1(t)。

实施案例2,以人体肘部关节的姿态捕捉为例,人体肘部的四元数利用p2表示,初始时刻(即t=0)人体肘部的四元数通过肘部的mems传感器即可获得,并记录为p2(0),示例性的,将p2(0)得到的数值定义为p2(0)=[θ2,x2,y2,z2];则在新的坐标下人体肘部的初始(t=0)四元数为q2(0),且定于q2(0)=[γ2,x2,y2,z2],其中γ2、x2、y2、z2的计算式为:

γ2=[cos(-dhead/2)*θ2-0*x2-0*y2-sin(-dhead/2)*z2];

x2=[cos(-dhead/2)*x2+0*θ2+0*z2-sin(-dhead/2)*y2];

y2=[cos(-dhead/2)*y2+0*θ2+sin(-dhead/2)*x2-0*z2];

z2=[cos(-dhead/2)*z2+sin(-dhead/2)*θ2+0*y2-0*x2];

其中的dhead为头部航向;通过γ2、x2、y2、z2的数值,即可得到新的坐标下人体肘部的初始(t=0)四元数q2(0)。

t(其中的t>0)时刻时,肘部的四元数可通过t时刻时mems传感器获得,并记录为p2(t),示例性的,将p2(t)得到的数值定义为p2(t)=[θ3,x3,y3,z3];

将新的坐标下肘部t时刻的四元数定义为q2(t)=[γ3,x3,y3,z3],其中γ3、x3、y3、z3的计算式为:

γ3=[cos(-dhead/2)*θ3-0*x3-0*y3-sin(-dhead/2)*z3];

x3=[cos(-dhead/2)*x3+0*θ3+0*z3-sin(-dhead/2)*y3];

y3=[cos(-dhead/2)*y3+0*θ3+sin(-dhead/2)*x3-0*z3];

z3=[cos(-dhead/2)*z3+sin(-dhead/2)*θ3+0*y3-0*x3];

其中的dhead为头部航向;通过上式求出γ3、x3、y3、z3的数值,即可得到新的坐标下肘部t时刻的四元数的数值q2(t)。

补充说明的是,本发明以单位四元数为例进行四元数旋转的说明,当单位四元数表示旋转时,单位旋转轴定义为(x,y,z),旋转角度为θ,则四元数为

示例性的,如图3所示,定义[0,1,0,0]为指向x轴的向量,[0,0,1,0]为指向y轴的向量,[0,0,0,1]为指向z轴的向量,则[0.5,0.5,0.5,0.5]为绕向量op旋转120deg(120°)后的向量。

当四元数[p0,p1,p2,p3]表示相对旋转时,p1,p2,p3分别对应x、y、z轴,p0对应旋转的角度。因此当人体在水平面旋转一个角度时,相当于绕z轴旋转,因而对应的四元数p1和p2分量为零,p0代表旋转的角度,即此时四元数应为[p0,0,0,p3]。同理,绕x轴旋转时,因而对应的四元数p2和p3分量为零,p0代表旋转的角度,对应的四元数应为[p0,p1,0,0];绕y轴旋转时,因而对应的四元数p1和p3分量为零,p0代表旋转的角度,对应的四元数为[p0,0,p2,0]。

另外四元数也可以表示刚体的姿态角度;若给定一个欧拉旋转(x,y,z),其中x,y,z分别为横滚、俯仰、航向角度,则其对应的四元数为:

p0=cos(x/2)*cos(y/2)cos(z/2)+sin(x/2)sin(y/2)*sin(z/2);

p1=cos(x/2)*sin(y/2)*sin(z/2)-sin(x/2)*cos(y/2)*cos(z/2);

p2=cos(x/2)*sin(y/2)*cos(z/2)+sin(x/2)*cos(y/2)*sin(z/2);

p3=cos(x/2)*cos(y/2)*sin(z/2)-sin(x/2)*sin*y/2)*cos(z/2)。

给定一个四元数[p0,p1,p2,p3],对应的欧拉旋转(x,y,z)的计算式为:

x=atan2(2*(p0*p1+p2*p3),1-2*(p1*p1+p2*p2))横滚

y=arcsin(2*(p0*p2-p3*p1))俯仰

z=atan2(2*(p0*p3+p1*p2),1–2*(p2*p2+p3*p3))航向

步骤三,计算所述新的坐标系的四元数相对于其初始位置的旋转量,即可得到骨骼的空间姿态。

具体的,所求的骨骼的空间姿态即为新坐标系的四元数相对于其初始位置的旋转;示例性的,所述初始时刻的四元数为qi(0),骨骼的空间姿态定义为qi(t);其中qi(t)的计算式为:

qi(t)=qi(t)*inv(qi(0))(3)

式(3)中,inv表示四元数的逆,qi(t)*inv(qi(0))表示的是t时刻相当于初始时刻的旋转量。

实施案例3,以人体手部关节的姿态捕捉为例,t时刻(其中的t>0)人体手部骨骼的空间姿态为q1(t),其中q1(t)的计算式为q1(t)=q1(t)*inv(q1(0));定义q1(t)=[β1,q1,q2,q3];通过已知其中q1(t)和q1(0)即可得到q1(t)的数值;其中由实施例一可以获得q1(0)和q1(t)的数值,具体的q1(t)=[γ1,x1,y1,z1],q1(0)=[γ0,x0,y0,z0],inv(q1(0))=[γ0,-x0,-y0,-z0];

其中β1、q1、q2、q3的计算式为:β1=γ1γ0+x0x1+y0y1+z0z1;

q1=–x0γ1+x1γ0–z0y1+y0z1;

q2=–y0γ1+y1γ0–x0z1+x1z0;

q3=–z0γ1+γ0z1–y0x1–y1γ0;

通过上式求出的β1、q1、q2、q3的数值,即可得出人体手部骨骼的空间姿态q1(t)的数值。

实施案例4,以人体肘部关节的姿态捕捉为例,t时刻(其中的t>0)人体肘部骨骼的空间姿态为q2(t),其中q2(t)=q2(t)*inv(q2(0));定义q2(t)=[β2,q4,q5,q6],通过已知其中q2(t)和q2(0)即可得到q2(t)的数值;其中由实施例二可以获得q2(0)和q2(t)的数值,具体的,q2(t)=[γ3,x3,y3,z3],q1(0)=[γ2,x2,y2,z2],inv(q1(0))=[γ2,-x2,-y2,-z2]

其中q2(t)的计算式为:β2=γ3γ2+x2x3+y2y3+z2z3;

q4=–x2γ3+x3γ2–z2y3+y2z3;

q5=–y2γ3+y3γ2–x2z3+x3z2;

q6=–z2γ3+γ2z3–y2x3–y3γ2;

通过上式求出的β2、q4、q5、q6的数值,即可得出人体肘部骨骼的空间姿态q2(t)的数值。

补充说明的是:若已知两个四元数p、q,则q相对于p的旋转可表示为inv(p)*q。四元数既可以代表一个旋转,同时,由于它与空间的欧拉角(俯仰、横滚、航向)对应,因而也可以代表一个刚体的空间姿态。刚体从一个姿态变到另一个姿态,需要进行某种转动,这个转动就可以用四元数的相对旋转来计算。其中,*代表四元数相乘,其结果同样是一个四元数

如p=[p0,p1,p2,p3],q=[q0,q1,q2,q3];

则p*q=[p0q0–p1q1–p2q2–p3q3,

p0q1+p1q0+p2q3–p3q2,

p0q2+p2q0+p3q1–p1q3,

p0q3+q0p3+p1q2–p2q1]。

本发明应用于动作捕捉到场景中,通过所有传感器统一以头部为基准,即根据头部传感器提供的航向信息,确定坐标系指向;从方便使用的角度出发,不论mems传感器以何种角度、姿态安放于人体后,不需要特定的旋转等动作,即可通过mems传感器指示人体真正的骨骼姿态;有效的解决了由于在mems传感器安装时,各个mems传感器的安装方向、姿态不尽相同,在使用前必须将mems传感器调整到一个统一的坐标框架下,并且进行初始位置修正,这样所有传感器都有一个统一的坐标框架,并且都以初始校准时的姿态为零姿态,以相对于各自传感器的“零姿态”的旋转来定义各个关节的四元数。

尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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