论文部分内容阅读
计算机已经涉入到现代人类活动中的各个方面,成为人们生活中不可替代的工具,寻求人与计算机之间自然的交互方式成为研究的热点。手势是一种使用肢体动作而非言语的沟通方式,使用手势可以在两个或多个个体间沟通信息,它在我们的社会中发挥了重要的作用。使用手势识别算法和相应的硬件能够实现终端用户以一种更自然的方式与设备进行交互。与传统的用户交互方式相比使用手势交互在任务操作上更加高效、直接和友好,更符合人类交流习惯方便人机之间的信息交流。发展基于视觉的手势识别人机交互系统将为人们带来更多的数字生活体验。但由于手的自然度高、变化多样、移动速度快等特性,使从视频序列中识别手势成为计算机视觉和行为理解的重要挑战之一。本文首先讨论了手势的应用发展方向以及国内外手势识别研究的现状,以开发实时手势识别系统为重点,研究基于视觉的手势识别算法。手势有不同的定义和分类方法,本文采用Quek的分类方式,定义系统中交互的手势是为传达简单指令,并且使用手势操作是指令式的。系统采集数据的设备是Kinect,这是一种能够同时采集当前场景信息的深度图像和可见光图像的设备,针对本系统使用的设备和开发的平台提出了相应的手势跟踪分割算法。该算法首先使用设备的SDK仅根据深度图像即可做到实时并且准确的对用户和用户各个关节的跟踪。然后结合深度图像使用阈值分割方法和可见光图像的肤色模型,对用户的手区域进行分割从图像中提取得到感兴趣区域,为进行下一步的识别工作做准备。根据识别对象的不同,本文将手势分为静态和动态手势研究,详细介绍了当前研究水平下两类手势通带使用的特征提取方法和分类识别方法。考虑到识别算法的有效性和识别速度,研究静态手势识别通过得到感兴趣区域图像,然后提取该区域的梯度方向直方图特征。梯度方向直方图描述子具有尺度和光照不变性,适用于静态手势识别。最后对提取的梯度方向直方图特征进行PCA降维处理获取特征向量用于识别比对。动态手势是从连续的视频序列中提取的,首先将每一帧追踪的用户上身关节的运动信息使用四元数表示,并将四元数信息根据关节的排列连接得到向量Xn=(X01,Xn2,…,Xn9)其中Xni为第i个关节点的四元数旋转表示,然后将每一帧的向量相连得到特征向量X=(X1,X2,…,Xt,…,XT)。最后将得到的特征向量X:(x1,X2,…,Xt,…,XT)与模版向量Yn=(y1n,y2n,…,ytn,…,yTn),其中n>2为模板的数量,使用动态时间规整算法与计算距离,选择与模板最小距离值得出识别结果输出。最后,根据系统设计需求定义本系统识别的具体手势并作详细介绍,给出系统的架构设计,系统在Visual Studio C#平台下开发,借助设备SDK、EMGU等开源代码得以实现。