当前位置:首页 > 游戏信息 > 正文

C#编程 人体关节坐标获取

C#编程 人体关节坐标获取-第1张-游戏信息-龙启网

析:身体以及各个关节点的位置定义了一个姿势。更具体的来说,是某些关节点相对于其他关节点的位置定义了一个姿势。 姿势的类型和复杂度决定了识别算法的复杂度。 通过关节点位置的交叉或者关节点之间的角度都可以进行姿势识别。

通过关节点交叉进行姿势识别就是对关节点进行命中测试。

我们可以确定某一个关节点的位置是否在 UI 界面上某一个可视化元素的有效范围内。我们可以对关节点做同样的测试。 但是需要的工作量要少的多,

因为所有的关节点都是在同一个坐标空间中, 这使得计算相对容易。 例如叉腰动作(hand-on-hip) ,

可以从骨骼追踪的数据获取左右髋关节和左右手的位置。然后计算左手和左髋关节的位置。如果这个距离小于某一个阈值,就认为这两个点相交。那么,这样就变得

简单多了。

但是,由于Kinect的精度问题,但即使通过一些平滑参数设置,从 Kinect

中获取的关节点数据要完全匹配也不太现实。另外,不可能期望用户做出一些连贯一致的动作, 或者保持一个姿势一段时间。 简而言之,

用户运动的精度以及数据的精度使得这种简单计算不适用。 因此, 计算两个点的长度, 并测试长度是否在一个阈值内是唯一的选择。角度原理也与之类似。

当两个关节点比较接近时, 会导致关节点位置精度进一步下降,

这使得使用骨骼追踪引擎判断一个关节点的开始是否是另一个关节点的结束点变得困难。比如,很难将手放在脸的前面,手放在头上,

和手捂住耳朵这几个姿势区分开来。 要摆出一个确切的姿势也很困难, 用户是否会按照程序显示的姿势来做也是一个问题。

一些姿势使用其他方法识别精度会更高。例如,用户伸开双臂和肩膀在一条线上这个姿势,称之为 T

姿势。可以使用节点相交技术,判断手、肘、以及肩膀是否在 Y

轴上处于近乎相同的位置。另一种方法是计算某些关节点连线之间的角度。骨骼追踪引擎能够识别多达20个关节点数据。任何三个关节点就可以组成一个三角形。使用三角几何就可以计算出他们之间的角度。