手势识别算法 - Kinect

时间:2012-01-28 13:40:02

标签: c# kinect gesture-recognition

我正在为我的最后一年大学项目开发​​一个Kinect应用程序,我需要开发一些手势识别算法。我对此有一些建议。

我的初始算法是检测用户手在特定时间范围内向kinect靠近移动。现在我会说这是一个任意的500毫秒。

我的想法如下:

  • 每隔100ms记录z轴位置并存储在List中。
  • 每次记录新位置时,请检查列表中前4个位置的每个位置的z位置。
  • 如果z位置因个人或集体之间的任何距离而变化,则触发手势识别事件。
  • 如果识别出手势,请清除列表,然后重新开始。

这是我第一次尝试这样的事情,并希望对我最初的天真实施提出一些建议。

感谢。

2 个答案:

答案 0 :(得分:4)

您打算使用官方Kinect SDK或开源驱动程序(libfreenect还是OpenNI)?

如果您使用的是Kinect SDK,可以先看一下:

DTW lib preview

Candescent NUI lib preview

(Candescent NUI更专注于手指检测)

如果您打算使用开源驱动程序,请尝试OpenNI and NITE。 NITE带有手动跟踪和手势(滑动,圆形控制,2d滑块等)。

这个想法至少要有手检测并从那里继续进行。如果你有这个,你可以实现像Unistroke Gesture Recognizer的改编,或者看看其他技术,比如运动模板/ MotionHistory等......让它们适应你可以玩的新数据现在。

古德勒克!

答案 1 :(得分:2)

如果您只是想要识别用户向您挥手,您的方法应该有效(尽管由于数据噪音很容易导致失火)。您正在尝试做的事情在模式识别领域非常顺利。对于这个以及非常类似的任务,人们经常使用隐藏的马尔可夫模型并取得巨大成功。您可能想查看维基百科文章。我不是C#人,但据我所知,微软有非常好的C#统计推断库,他们肯定会包含HMM实现。