使用隐马尔可夫模型的手势识别

时间:2013-08-26 09:43:19

标签: matlab k-means gesture-recognition hidden-markov-models quantization

我目前正在开发一个手势识别应用程序,使用隐马尔可夫模型作为matlab上的分类阶段(使用网络摄像头)。我已经完成了预处理部分,其中包括特征向量的提取。我已将主成分分析(PCA)应用于这些向量。

现在让我使用Kevin Murphy的HMM工具箱,我需要我的观察序列是数字(整数)形式,范围从1到M(M =观察符号的数量)。如果我是正确的那么我必须使用码本的概念并使用矢量量化来获得我的观察序列。

我的问题:

  1. 如何构建代码簿?
  2. 如何使用此密码本获取输入视频的观察符号?
  3. 注意:我使用Elliptical Fourier描述符进行形状特征提取,并且对于每个手势,PCA值存储在维度矩阵[11x220]中(视频中的帧数= 11)

    接下来我该怎么办? 有没有其他方法可以获得特征向量而不是椭圆傅里叶描述符?

1 个答案:

答案 0 :(得分:2)

HMM是一系列顺序数据的概率模型,您可以假设数据是从潜在(“隐藏”)状态空间上的离散状态马尔可夫链生成的。一般来说,所谓的“排放”来自每个州的同一系列分布,但参数不同。

我对matlab实现并不是特别熟悉,但听起来你指的是使用多项发射分布的实现,其中观察到的数据是来自预先指定的字母表的符号序列。该模型中的未知参数是隐藏状态与每个状态中每个输出符号的多项权重之间的转移概率。如果你的功能是二元和互斥的,那么这就是合适的分布 - 比如“手势向左移动”与“手势向右移动”等等。

但如果您的功能是连续的,那么使用连续排放分配可能更合适。例如,高斯HMM非常常见。在这里,您观察到的数据是一系列连续(可能的多变量)数据,并且假设在每个隐藏状态下,输出是来自高斯的i.i.d,您希望学习均值和(共)方差。

如果您不反对python,那么在scikits-learn页面上有一些相当不错的Multinomial和Gaussian HMM文档:http://scikit-learn.org/stable/modules/hmm.html

从实际角度来看,如果您在数据上使用多项HMM,我建议首先构建代码簿,然后使用状态标签作为HMM的输入。但使用高斯HMM可能更可取。