我正在开发一个Windows应用程序,允许用户使用Kinect传感器与他的计算机完全交互.用户应该能够向应用程序讲授他自己的手势,并为每个人分配一些Windows事件.在学习过程之后,应用程序应该检测用户的移动,并且当它识别出已知的手势时,应该触发分配的事件.
关键部分是自定义手势识别器.由于手势是用户定义的,因此无法通过将所有手势直接硬编码到应用程序中来解决问题.我已经阅读了许多讨论这个问题的文章,但是没有一篇文章给出了我的问题的答案:哪种算法最适合学习和识别用户定义的手势?
我正在寻找的算法是:
高度灵活(手势可以从简单的手势到全身运动)
快速有效(该应用程序可能与视频游戏一起使用,因此我们无法消耗所有CPU容量)
学习新手势时不需要超过10次重复(重复手势超过10次教授应用程序在我看来不是非常用户友好)
易于实现(最好,我想避免与两页方程式挣扎等)
请注意,结果不一定是完美的.如果算法不时识别出错误的手势,则比算法运行缓慢更可接受.
我目前正在决定3种方法:
隐马尔可夫模型 - 这些在手势识别时似乎非常受欢迎,但似乎也很难理解和实现.此外,我不确定HMM是否适合我想要完成的任务.
动态时间扭曲 - 发现这个网站使用DTW提供手势识别,但许多用户抱怨性能.
我正在考虑将$ 1识别器调整为3D空间,并将每个关节的运动用作单个笔划.然后我会简单地比较笔画并从已知手势集中选择最相似的手势.但是,在这种情况下,我不确定这个算法的性能,因为有许多关节要比较,识别必须实时运行.
您认为哪种方法最适合我正在尝试的方法?或者这个问题有其他解决方案吗?我很感激能够推动我前进的任何建议.谢谢.
(我正在使用Kinect SDK.)