algorithm - 从数据构建 HMM

标签 algorithm uigesturerecognizer kinect gesture hidden-markov-models

我对隐马尔可夫模型有疑问。我正在用 C#Kinect 上编写一个用于手势识别的应用程序(简单的手势,如滑动、波浪、圆圈等)。我写了一个手势记录系统,之后我创建了一个特征提取器来计算点之间的速度,我还计算方向(点对之间的角度)——我认为这是一种简单的矢量量化方法,因为我创建了一个带有代码字的代码本1-18。码字是每 20 度的角度间隔(例如角度 12dg 是码字 1,45dg = 码字 3 等)。

现在我想我需要创建一个HMM 并使用一些Forward-Backward 算法来学习。然后一些Bayes分类方法并完成。

我的问题:

  1. 我的步骤错了吗?
  2. 如何创建 HMM?谁能以编程方式描述它应该是什么样子?
  3. 如何为测试执行实时手势匹配?

最佳答案

免责声明:我是我将要列出的一些教程/软件的作者。

  1. 您的步骤看起来不错。它们非常相似,例如,Lee and Kim 使用的方法。 (减去阈值模型部分)。

  2. 也许你可以关注this guide on HMMs in C# .它是我写的,有一些关于如何执行手势识别的例子。但是,该指南创建连续密度 HMM 而不是离散 HMM。您的矢量量化使您的特征离散,所以我想您会对使用离散密度 HMM 更感兴趣。要使其适用于离散模型,您唯一需要做的更改是删除模型创建/学习中的通用参数。

  3. 要执行实时手势,您可以使用某种特定标记来指示手势的开始和结束,或者您可以使用类似于 Lee 和 Kim 的阈值模型的技术。上述指南中描述的框架支持这些。

我曾使用相同的技术从事过一个类似的项目,我可以说 HMM 非常适合这项任务。

关于algorithm - 从数据构建 HMM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15875221/

相关文章:

objective-c - 用 2 根手指捏合时禁用 UIScrollView 中的平移

c++ - VideoStream::setVideoMode() 函数不起作用

matrix - 点相对于引用坐标系的坐标

c# - 试图在c#中获取链表的特定节点的地址

算法设计与分析分离

c - 逻辑挑战 : sorting arrays alphabetically in C

ios - 在 UIView 代码中创建的 UIGestureRecognizer 不起作用

ios - UISwipeGestureRecognizer 应用于窗口

algorithm - 总和是一个巨大的 float 的子集总和

python - 如何在一维数组中找到峰