使用Kinect [Algo]检测跳跃手势

时间:2013-09-10 10:03:57

标签: c# c++ algorithm kinect openni

我正在尝试实现用户的跳跃和躲避手势,我正在使用Kinect进行骨骼跟踪并提取关节位置。我之前实现了一个基本算法,它记录了关节的过去10个值的历史,并检查关节是否向上/向下移动大于阈值以推断跳跃/鸭子。

但是,自用户以来,这似乎不是正确的方法:
- 在跳跃之前可能会稍微躲一下 - 当用户跳跃时,也会下降并推断出鸭子 - 当用户躲避时,也会出现跳跃,推断出 - 当用户躲避时,他可能会在空中停留的时间比他躲避或坐下时更长。

什么是适当的算法,以鲁棒的方式检测这些跳跃/鸭子手势,并立即检索Kinect关节?

1 个答案:

答案 0 :(得分:0)

我认为检测跳跃并不容易以一种简单的方式为它做出有效的算法。这是一个复杂的运动来检测为什么你必须使用强大的东西。在检测运动时有四种方法:

  • 基本手势识别 - 简单的动作,如拍手测量它们之间的距离。当距离为0时,其执行的移动
  • 算法方法 - 更复杂的移动,您必须验证初始位置,验证移动是否正确执行,然后验证最终位置
  • 权重网络方法 - 这个可以使用神经网络来检测运动
  • 基于模板的方法 - 您可以录制动作,然后使用动态时间扭曲等模板匹配算法来检查用户执行的移动和移动记录是平等的

您必须小心使用哪种方法,因为有时候这种算法是数学运算的混合物,您必须选择一种对您的情况更有效的方法。有一种使用 Weight-network 方法和神经网络检测跳跃的方法,尽管我从未见过。有一本名为 Kinect for Windows SDK Programming Guide 的书,它解释了如何使用 Weight-network 方法和神经网络检测跳转。