kinect2.0骨骼数据

来源:互联网 发布:shell编程可以做什么 编辑:程序博客网 时间:2024/04/30 00:57

       过kinect2.0可以获得人体的25个关节点在3D坐标系下的空间位置以及各骨骼的方位。

       3D坐标系以红外传感器的中心作为原点,传感器左方为X轴正方向,传感器上方为Y轴正方向,传感器的前方为Z轴正方向,所测数据以米(m)为单位,数据格式为(float x, float y, float z)比如(0.0581612  -0.478016  1.96193)

       3D坐标系图如下:

      

       在Kinect中,骨骼图是以Hip Center(即下图中的SPINE_BASE)作为根节点,然后以此扩展到头上、手上以及脚上的节点上,如下图所示:(注意:下图中第二幅图是Kinect一代的骨骼图,不过我们能够以此来说明问题)

       从上面的图中可以看出,除了Hip Center,每一节点都有一父节点。而每一骨骼都是由父节点和子节点"围"起来的。比如下图中的Hip Left Bone就是由父节点Hip Center和子节点Hip Left "围"起来的,在Kinect中,骨骼的旋转便是通过该骨骼的子节点来反映的;


       Kinect中两骨骼间旋转量的多少是通过父骨骼和子骨骼上的笛卡尔坐标系的旋转量来描述的,如下图所示:笛卡尔坐标系的Y轴设在骨骼上,Z轴朝向传感器。


       Kinect使用四元数来表示该旋转量,存储的格式为(float x, float y, float z, float w),比如ShoulderRight(0.760096  0.63224 -0.0665784 -0.134512 )  HipCenter(0.00547569  0.989617  0.143306  -0.00952205)  (注:四元数用来描述两个坐标系的旋转)

       对于Hip Center ,其以传感器坐标系作为参考,Hip Center的旋转量提供了用户在传感器坐标系下的绝对方位(前提条件是:用户的坐标系以Hip Center作为原点,以竖直向上为Y轴,Z轴指向传感器,X轴位于人左手方向);

       通过以上分析可知:如果我们要得知每一骨骼的绝对方位,只需用该骨骼的旋转矩阵乘以其父骨骼的旋转矩阵即可。

       附上各骨骼节点——编号对应表:


       具体可以参考 http://msdn.microsoft.com/en-us/library/hh973073.aspx 介绍 

      

0 0