2012-01-28 115 views
2

我正在为我最后一年的大学项目开发​​一个Kinect应用程序,并且我有一个需求来开发一些手势识别算法。我会很感激这方面的一些建议。手势识别算法 - Kinect

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

我的想法是:每隔100ms,并存储在列表

  • 记录Z轴位置。
  • 每次记录新位置时,检查列表中每个前4个位置的z位置。
  • 如果z位置因个体或集体之间的所需距离而异,则触发手势识别事件。
  • 如果识别到手势,清除列表,然后重新开始。

这是我第一次尝试类似这样的事情,并希望对我最初的幼稚实施提出建议。

谢谢。

回答

2

如果你只是想识别用户摆动她的手,你的方法应该工作(尽管由于嘈杂的数据很容易失火)。你想要做的事情在模式识别领域非常好。为此,以及非常类似的任务,人们经常使用隐马尔可夫模型取得巨大成功。你可能想检查维基百科文章。我不是C#的人,但据我所知,微软有很好的C#统计推断库,并且肯定会包含HMM实现。

4

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

如果您正在使用Kinect的SDK,你可以通过像在看看启动:

DTW lib preview

Candescent NUI lib preview

(炽烈的静穆NUI更侧重于手指检测虽然)

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

这个想法是至少有手检测并从那里继续。如果你有这些,你可以实现类似于Unistroke Gesture Recognizer的改编,或者查看其他技术,如运动模板/ MotionHistory等......将它们调整为现在可以使用的新数据。

Goodluck!