汤哲君
摘 要:本文主要对静态手势识别的技术存在的各种方法进行了相应的分析与探讨,而在这个基础之上实现与设计了一套先进的静态手势识别系统。而该系统主要分为手势的分类、图像的预处理、分类器的设计与样本的训练以及特征的提取四个模块。而该系用在运行时,首先从文件夹中读取图像部分,其次在经过图像的预处理模块得到手势的轮廓图像以及二值图像,最后在对轮廓图像与二值图像这两幅图对手势进行相应的特征提取,并且采用贝叶斯分类器对这个手势进行分类识别。
关键词:计算机视觉 手势识别 OpenCV 静态手势识别
中图分类号:TP3 文献标识码:A 文章编号:1672-3791(2014)03(c)-0048-02
计算机从问世以来就在逐步改善我们的生活。随着计算机在各个领域使用的普及化,人机交互技术正在此时引起了世界各国专家们极大的兴趣,并对其开始进行深入的研究。近些年来,对于符合人际交流习惯的新型人机交互技术的研究变的相当的活跃。而这些研究中主要包含了人的脸部识别、面部表情变化的识别、唇读、凝视与头部运动的跟踪以及手势识别等方面。而手势识别则因为更加符合人与人之间的交流习惯,从而成为了一种以人为交互的中心的新型的人机交互技术。因此,手势识别技术已经成为人机交互领域的一大研究热点,本文主要研究基于视觉的静态手势识别技术。
1 手势识别技术的分类
近些年,手势技术已经出现了几种比较完善的理论体系,通过不同的手势输入设备可以将手势的识别主要分为基于视觉的手势识别和基于数据的手势识别这两种技术。
1.1 基于数据手套的手势识别
作为一种交互设备的数据手套,它在虚拟现实中应用广泛,有只利用几个传感器来测量手势中手指的弯曲度的简单的数据手套,也有用多个传感器来测量手势中的多个信息的复杂的数据手套。基于数据手套的手势识别技术是利用数据手套和位置跟踪器测量手势在空间运动中的轨迹和时序信息。在手势识别的过程中,被识别人佩戴数据手套后建立3D手势模型,系统可以通过所佩戴数据手套上的多个传感器来采集动态手势的运动信息,应用一系列识别算法,达到识别的效果。
1.2 基于视觉的手势识别
基于视觉的手势识别技术是通过摄像头来采集手势,这里的摄像头可以是单个或者多个。之后对所采集到的手势进行相应的特征提取后对特征进行识别,从而达到识别手势的目的。相比前者,基于视觉的手势识别技术的优势在于手势采集设备比较便宜,同时基于视觉的手势识别技术能够使人以更自然的方法与机器进行交互。缺点是这种技术实时性较差,受外界因素的影响较大,例如背景、光照等。
2 手势识别技术在人机交互中的应用
手势识别作为典型的人机交互技术,主要有以下几个方面的应用。
(1)主要用于虚拟环境上的交互。如:虚拟的装配、虚拟的制造、产品设计等等。虚拟的装配主要是通过手的动作来控制零件的装配工作,并且还可以通过语音与手势之间的合成来定义零件之间的装配关系,同时还可以将手势识别用在复杂的设计信息输入上。
(2)主要用于手语的识别。对于聋哑人来说,手语是他们的语言,也是他们依赖的对象,而手语则是由手型、动作、表情、姿势等方面所构成的一套手语交流的体系,它主要是依赖视觉与动作的交流。当手势识别与手语相互结合之后,机器就能看懂聋哑人的语言,故而,形成一套人与机器的手语翻译系统,这样就很好地便于聋哑人的交流。
(3)用于机械手的抓取。机械手的自然抓取一直是机器人研究领域的难点。手势识别,尤其是对于基于数据手套的手势识别技术的研究对克服这个问题有重要的意义,是手势识别的重要应用领域之一。
3 手势识别技术的主要识别方法
目前,无论是在基于数据手套的手势识别还是基于视觉的手势识别技术都有很多的分类识别算法,常用的主要有模板匹配法、神经网络法、隐马尔科夫模型法(HMM)和支持向量机法等等。
3.1 神经网络方法
神经网络作为一种被广泛应用的工具,在静态手势识别中也起到很大的作用。神经网络是一种大规模并行处理网络。由许多具有非线性映射能力的神经元组成,神经元之间通过权相连。神经网络作为一种静态手势识别技术,具有自组织和自学习能力,能有效抗噪声、同时具有很强的容错性和鲁棒性。经过多年发展,人工神经网络已经具有很多模型,例如模糊神经网络和BP神经网络。目前应用比较广泛的是以反向传播学习算法为基础的多层神经网络,简称为BP神经网络。
3.2 隐马尔可夫模型(HMM)方法
对于动态的手势,可以理解成一个连续区间内的手势信号。而对于分析区间内的信号,通常采取HMM方法进行模型化。HMM是在马儿可夫链的基础之上发展起来的。由于实际问题比马儿可夫链模型所描述的更为复杂,观察到的事件并不是与状态一一对应的,而是通过一组概率分布相联系,这样的模型就称为HMM。它是一个双重随机过程:一是马儿可夫链,这是基本随机过程,它描述状态的转移;另一个随机过程描述状态和观察值之间的统计对应关系。这样,站在观察者的角度,只能看到观察值,不像链马儿可夫模型中的观察值和状态一一对应,因此,不能直接看到状态,而是通过一个随机过程去感知状态的存在及其特性。因而称之为“隐”马儿可夫模型,即HMM。 然而正是由于HMM拓扑结构的一般性,导致这种模型在分析动态手势信号时过于复杂,使HMM训练和识别计算量过大,尤其是在连续的HMM中,由于需要计算大量的状态概率密度,需要估计的参数个数较多,使得训练及识别的速度相对较慢,因而以往手势识别系统所采用一般为离散HMM。
3.3 模板匹配方法
这是一种最简单的识别技术,其核心的思想就是将输入的原始数据与预先存储的模板进行匹配,通过测量两个模板之间的相似度来完成识别任务。最常用的匹配方法有加权欧氏距离法,相关系数法以及对数距离法。目前,这种方法广泛用于静态手势识别,具有计算简单、速度快的特点。endprint
4 本文研究工作
4.1 本报告的研究内容
本手势识别系统的工作原理:在已经获取的手势照片中,每个手势选取4张图片作为模板,提取三个特征值,作为贝叶斯分类器的训练样本,训练完成后,用同样的方法提取读入图片的三个特征值,用贝叶斯分类器对其分类进行预测,从而得到识别结果
系统可以实时的对本文预定义的六个手势进行识别,六个手势按照手指数分别定义为0,1,2,3,4,5。系统由三个模块所组成,分别为图像预处理、特征提取以及手势的分类识别。
(1)手势图像预处理:减少图片的像素值后通过肤色检测检测手所在区域,将图像二值化,用边缘检测方法提取手势的边缘图像。
(2)手势图像特征提取:在得到手势的边缘图像以及轮廓矩阵之后,按照本文所采用的手势特征,对手势进行特征提取,生成手势的特征向量。
(3)手势的分类识别:本文采用训练过的贝叶斯分类器计算后验概率,选择最大的后验概率的类作为该手势所属的类别,即得出系统的识别结果。
4.2 图像处理与特征提取
4.2.1 图像预处理和肤色区域提取
对读入的图像先进行预处理,将图片的像素减少以增加运行速度。肤色区域的提取算法原理如下:肤色在YCbCr空间里的Cb、Cr分量聚集成一个椭圆形状,KL变换就是将坐标轴按照训练肤色样本的分布方差经过旋转平移成一组新的正交坐标轴,然后再这新的坐标系中构建椭圆肤色检测模型,在本系统中就是把图像的Y、Cb、Cr三个通道分开,然后用指针分别对这三个通道的每一个像素进行处理。
4.2.2 手势图像特征提取
本系统主要提取了手势的三个特征,提取方法如下:
(1)手势图像内手所占面积与手区域外接矩形面积的比值,提取方法为对图像内的像素点进行扫描,得到最靠近图片四周的白色像素点,经过这几个像素点做图片边长的平行线得到该矩形并计算面积,手势面积是计算提取肤色之后的图片中白色像素点的数量来获得。
(2)手区域外接矩形的宽与长的比值,矩形的长与宽的获得方法如上。
(3)手指数量,用一根水平线对进行过边缘提取的图片进行从上到下的扫面,求出出现在该水平线上白色像素点的最大值,记为ymax,手指数量即为ymax/2。
4.2.3 贝叶斯分类器训练和识别
本程序中对bayes分类器使用步骤如下:
(1)样本的选择。
对每个手势选取较有代表性的四张图片,对其三个特征进行提取,并作为训练样本对贝叶斯分类器进行训练。
(2)手势的识别。
用训练好的贝叶斯分类器对输入图片处理后得到的特征向量进行分类,得到其所属的类别。
5 实验结果及总结
5.1 实验结果
对获得的130张手势照片中,识别正确的照片的张数为94,占总数的72.3%,对与算法比较简陋的程序来说识别率还是令人满意的。
5.2 程序可改进的技术途径
(1)手势区域的提取。
本程序采用肤色检测来识别手势区域,实际使用中效果不佳,任何类肤色区域都将被识别成手势区域,故检测程序时,采用的是深色背景的手势图片,以减少背景被检测为手势区域的可能。可见单纯的肤色检测并不能很好的检测手势区域,尤其是复杂背景下的手势区域,在肤色检测的前提下,另外可以通过提取手势图像的灰度图的直方图,确定阈值来对图像进行二值化,二者结合使用必定回避单纯使用肤色检测的准确度有所提高。
(2)分类器的设计。
本程序采用的是opencv内置的贝叶斯分类器,而且也只是用了三个特征值,如果要进行优化,可以增加有效地特征值数量,来提高识别的准确度。
(3)特征值的提取。
在手势区域较好的识别的情况下,面积比和宽长比的获得较为简单。手指数量的提取在实际操作中的效果并不如人意,因为实际检测中,犹豫肤色检测本身的缺陷,导致提取出来的手势区域存在缺陷,进而导致手指数量的不准确提取。
参考文献
[1] 戴丹.基于图像的静态手势识别及在服务机器人的应用[D].浙江大学本科生毕业论文,2007.
[2] 于洋.基于手形特征的静态手势识别[D].河北工业大学硕士毕业论文,2007.
[3] 高建坡.一种基于KL变换的椭圆模型肤色检测方法[J].电子与信息学报,2007.endprint