分析完手势就等于把手势分好了类,接下来只需要将读取到的手势信息,与这些分析结果相匹配,匹配过程就叫手势识别。
手势识别分为静态手势识别和动态手势识别。静态手势相当于我们检测视力时,对医生做的表明方向手势;动态手势相当于篮球场上裁判员做的一些列手势。
静态手势识别一般采用模板匹配方法来实现。通过一些相似准则,实时地比较手势与模板库中预定义手势的相似度,从而根据最大相似度来提取出手势模板。
与静态手势不同,动态手势涉及时间及空间上下文。绝大多数动态手势被建模为手势模型空间里的一条轨迹。不同用户做手势时存在的速率差异、熟练程度等问题,会使运动轨迹与模型轨迹产生较大偏差。
为了消除这一问题。现有的动态手势识别技术可以分为三类:基于隐马尔科夫模型(Hidden Markow Models,HMM)的识别,基于动态时间规整(Dynamic Time Warping,DTW)的识别,基于压缩时间轴的识别。
HMM 算法因具有自动分割和分类能力,被广泛应用,以下例子能很好地说明这一算法的原理。
假设你有一个住得很远的朋友,他每天跟你打电话告诉你他那天做了什么。朋友仅仅对三种活动感兴趣:公园散步、购物以及清理房间。他选择做什么事情只凭天气。
尽管你对于他所住地方的天气情况并不了解,但是你可以根据他今天所做的事情,来猜测天气情况。这整个系统就是一个隐马尔可夫模型 HMM。
在这个系统里,你知道的这个地区的天气趋势以及朋友在做的事情,这些就是隐马尔可夫模型里的参数,它们是已知的。而手势可以描述为一系列由方向向量构成的系列,相近向量可以用一个符号来描述。如下图所示:
我们可以识别手指的位置,然后根据 HMM 模型去猜测轨迹,通过轨迹即可分析手势的意思。
本文配图来自 Google