1

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

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

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

现在我需要为我的HMM. 怎么做?我想找到最长的手势(及时)。例如,我有 3 个手势,第一个1,2s、第二个1,4s和第三个1,5s1,5s最长的也是如此。现在我想每 250 毫秒(一秒内 4 个样本)为每个帧应用 (*)。因为我最长的手势很1,5s长,所以NumberOfStatesForHMM = 1500ms / 250ms = 6 states- 这应该是最佳的?

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

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

4

1 回答 1

1

我从事过一个类似的动态手势识别项目(尽管使用的是更简单的网络摄像头而不是 Kinect)。就我而言,我将手势分类为左、右、循环顺时针、循环逆时针......等。由于您将考虑连续点之间的角度,这将是您的观察序列。至于状态,您的状态和观察之间可能不一定总是存在逻辑关系。我正在使用 8 个手势。现在,对于每个输入模式,我有大约 12 个观察符号,但没有。每个类的状态是不同的。例如:左:2 个状态 右:3 个状态 顺时针循环:4 个状态等。

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

链接在这里

于 2013-04-22T10:52:26.383 回答