为基于Kinect的手势识别构建HMM

本文关键字:手势识别 构建 HMM Kinect | 更新日期: 2023-09-27 18:09:02

我有一个概念上的问题。我正在创建一个程序,使用Kinect来进行手势识别。我有一些按类别划分的手势数据(圆圈,滑动等)。现在我只分析一只手。我记录所有帧(30fps)。

(*)为了使我的数据离散和位置无关,我计算连续点之间的角度。

现在我想为每个手势类型创建hidden Markov models

现在我需要确定HMM的一些状态。怎么做呢?我想找到最长的手势(在时间上)。例:我有三个手势,第一个是1,2s,第二个是1,4s,第三个是1,5s。所以1,5s是最长的。现在我想每250毫秒对每一帧应用(*)(一秒钟内4个样本)。因为我最长的手势是1,5s,所以NumberOfStatesForHMM = 1500ms / 250ms = 6 states -这应该是最理想的吗?

我不确定我应该如何定义HMM的状态:/如果我上面的想法是正确的,当有(例如)6个状态和一个手势在1s之后结束时,如何计算转换概率,所以我分析了4个状态(从状态4到5和5到6的转换概率等于0?)。

我读了这篇论文,但我不太确定如何解决我的问题…

为基于Kinect的手势识别构建HMM

我曾经做过一个类似的动态手势识别项目(尽管使用的是一个更简单的网络摄像头,而不是Kinect)。在我的例子中,我将我的手势分类为左、右、顺时针、逆时针等等。因为你要考虑到连续点之间的角度,这就是你的观察序列。至于状态,你的状态和观察之间不一定总是有逻辑关系。我用了8种手势。现在,我有大约12个观察符号为每个输入模式,除了no。每个类别的状态是不同的。例如:左:2个州右:3个州顺时针圈:4个州等

的优点是,从状态序列输出,我得到了从维特比算法。,我可以直接得到最大状态数,从而得到我的类。此外,在学习阶段,我的Baum-Welch实现会根据编号自动学习课程。的状态。您可以参考我的博客文章[其中描述了我在项目中使用HMM识别手势的方法]以获取更多信息。我希望这对你有所帮助。

这里是链接