# 与计算机之间的另一种沟通方式 ——“手势识别”

- 作者：ARinChina 增强现实中国
- 发布时间：2016-10-17 11:05
- 分类：新创
- 原文：https://www.ifanr.com/732158

![maxresdefault](https://s3.ifanr.com/wp-content/uploads/2016/10/maxresdefault-11-1024x640.jpg)

> 本文由 ARinChina（[www.arinchina.com](http://www.arinchina.com/)）原创，转载请联系 ARinChina（微信 ID：arinchinaservice）。

手势是无声的语言。人们在生活中借用手势，来表达各种各样的感情。现在，人还可以与计算机之间进行手势互动。

与人之间的手势互动很容易理解，与计算机之间是怎么实现的呢？

![1945034111982](https://s3.ifanr.com/wp-content/uploads/2016/10/1945034111982.jpg)

### 手势分割

想要使计算机识别人的手势，首先得将手势从背景中分割出来。因为计算机采集手势信息的同时，也会采集到手势所处的场景信息。

手势分割通常采用以下几种方法：

1. 用黑色或白色的墙壁做背景，着深颜色服装，尽可能简化背景。要求人手戴上特殊的手套来强调手部也可，总之在环境上要突出显示手部。
2. 采集各种手势在各个时刻、不同位置、不同比例的手型图像，作为手势匹配的模板，建立一个庞大的数据库。
3. 使用边缘检测，将手与背景分离开来。

### 手势模型训练

计算机同人一样，在识别一个手势前，必须先告诉它这个手势是什么，代表什么意思。

![1945544411982](https://s3.ifanr.com/wp-content/uploads/2016/10/1945544411982.jpg)

这个过程就是手势建模。模型的选取取决于具体应用，如果要实现自然的人机交互，就必须建立一个精细有效的手势模型，使得识别系统能够对用户所做的绝大多数手势做出正确反应。

![1946267311982](https://s3.ifanr.com/wp-content/uploads/2016/10/1946267311982.png)

目前，手势建模方法可以归结为两大类：**基于表观的手势建模**和**基于 3D 模型的手势建模**。

基于表观的手势建模是：根据手势的指头数以及指间的夹角不同，对手势进行分类，实现手势在旋转缩放条件下的快速识别。

![1946574611982](https://s3.ifanr.com/wp-content/uploads/2016/10/1946574611982.jpg)

基于 3D 模型的手势建模方法是：首先合成人体的 3D 模型，然后改变模型的参数，直到模型和真实人体映射出同样的视觉图像，然后分析身体姿态。

基于表观特征的手势建模方式比较直观、适应性强、运算速度快。但实际应用中，需要考虑到光线及身体其他部位颜色的影响，这些因素都将直接影响手势区域的提取。

基于 3D 模型的手势建模识别精度比较高，避免了基于表观特征识别时因遮挡造成的错误识别。虽然 3D 建模技术已经相当成熟，但模型还是太复杂，以至于不能快速地渲染响应。

![1947299411982](https://s3.ifanr.com/wp-content/uploads/2016/10/1947299411982.png)

因此大多数产品，如 Leap Motion 和 HoloLens 等，都采用了深度图像信息和手势表观特征相结合的方式。这种方式既可以达到基于表观的识别速度，又可以实现基于 3D 的识别精度。

### 手势分析

对手势进行建模后，接下来需要对手势进行分析。手势分析就是估计选定的手势模型参数，这一步一般由特征检测和参数估计组成。在特征检测过程中，必须先确定人手位置。根据所用的线索不同，可以把定位技术分为基于颜色定位、基于运动定位以及多模式定位三种。

基于颜色定位技术的主要缺点是：在不同的光照条件下皮肤颜色变化较大，并且手和身体颜色相同，当身体其他部位出现在手势背景中，会导致识别错误。解决这一问题的简单方法，就是佩戴一副特殊的手套。

![1948146811982](https://s3.ifanr.com/wp-content/uploads/2016/10/1948146811982.jpg)

基于运动的定位技术通常跟某些假设一起使用。例如，假设通常情况下只有一个人在做手势，并且手势者相对于背景的运动量很小，也就是说图像中只有手部是运动的。

![1948453011982](https://s3.ifanr.com/wp-content/uploads/2016/10/1948453011982.gif)

基于多模式定位技术，就是运动和颜色信息的融合定位人手。这种方式效果更加准确，但是计算量会增大。

### 匹配

分析完手势就等于把手势分好了类，接下来只需要将读取到的手势信息，与这些分析结果相匹配，匹配过程就叫手势识别。

手势识别分为静态手势识别和动态手势识别。静态手势相当于我们检测视力时，对医生做的表明方向手势；动态手势相当于篮球场上裁判员做的一些列手势。

![1949265211982](https://s3.ifanr.com/wp-content/uploads/2016/10/1949265211982.jpg)

静态手势识别一般采用模板匹配方法来实现。通过一些相似准则，实时地比较手势与模板库中预定义手势的相似度，从而根据最大相似度来提取出手势模板。

与静态手势不同，动态手势涉及时间及空间上下文。绝大多数动态手势被建模为手势模型空间里的一条轨迹。不同用户做手势时存在的速率差异、熟练程度等问题，会使运动轨迹与模型轨迹产生较大偏差。

为了消除这一问题。现有的动态手势识别技术可以分为三类：基于隐马尔科夫模型（Hidden Markow Models，HMM）的识别，基于动态时间规整（Dynamic Time Warping，DTW）的识别，基于压缩时间轴的识别。

HMM 算法因具有自动分割和分类能力，被广泛应用，以下例子能很好地说明这一算法的原理。

![1950033711982](https://s3.ifanr.com/wp-content/uploads/2016/10/1950033711982.gif)

假设你有一个住得很远的朋友，他每天跟你打电话告诉你他那天做了什么。朋友仅仅对三种活动感兴趣：公园散步、购物以及清理房间。他选择做什么事情只凭天气。

尽管你对于他所住地方的天气情况并不了解，但是你可以根据他今天所做的事情，来猜测天气情况。这整个系统就是一个隐马尔可夫模型 HMM。

在这个系统里，你知道的这个地区的天气趋势以及朋友在做的事情，这些就是隐马尔可夫模型里的参数，它们是已知的。而手势可以描述为一系列由方向向量构成的系列，相近向量可以用一个符号来描述。如下图所示：

![1952013411982](https://s3.ifanr.com/wp-content/uploads/2016/10/1952013411982.jpg)

我们可以识别手指的位置，然后根据 HMM 模型去猜测轨迹，通过轨迹即可分析手势的意思。

本文配图来自 Google

题图来源：[YouTube](https://www.youtube.com/watch?v=wDmosRnEfiw)
