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

标签 c# c++ algorithm kinect openni

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

但是,这似乎不是正确的方法,因为用户:
- 跳跃前可能会低头
- 当用户跳跃时,也会落下并推断出一只鸭子。
- 当用户躲避时,也出现,推断出跳跃
- 用户在躲避时可能会比他躲避或坐下时在空中停留的时间更长。

什么是合适的算法来以稳健的方式检测这两种跳跃/鸭子手势,同时立即检索 Kinect 关节?

最佳答案

我认为检测跳跃并不容易,要以一种简单的方式为此制定一个高效的算法。这是一个复杂的 Action 来检测为什么你必须使用坚固的东西。检测运动时有四种方法:

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

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

关于c# - 使用Kinect [Algo]检测跳跃手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18715961/

相关文章:

c# - 无法更新 EntitySet 'ItemRankList' 因为它有一个 DefiningQuery 并且不存在 <UpdateFunction> 元素

c++ - 私有(private)联盟的 setter/getter - C++

algorithm - Big Theta Notation - 简化

c# - 静态一次性元素

c# - 在 C# 中对 URI 的字符串操作

c# - 在新的空 DataTable 上使用 "using"是一种好习惯吗?

c# - 调试混合模式应用程序(c# 和非托管 c++)时出现 "The breakpoint will not currently be hit"错误

c++ - MSVC 无法识别继承模板类的模板类的 'direct' 基类构造函数

javascript - 如何同时遍历多维数组中的每个数组

python - Richardson–Lucy 算法是如何工作的?代码示例?