基于几何特征的桌面静态手势识别
2020-11-02邓继周周经纬朱成顺刘李明张胜文
张 辉,邓继周,周经纬,朱成顺,刘李明,张胜文
(1.江苏科技大学 机械工程学院,江苏 镇江 212003;2.江苏科技大学 江苏省船海机械装备先进制造重点实验室,江苏 镇江 212003)
0 引 言
近年来,基于视觉的手势识别由于具有操作简单、自然的优势而成为人机交互领域研究热点[1]。相比于基于模板匹配[2]、基于机器学习[3,4]等手势识别方法,基于几何特征的识别方法[5]在简单背景的桌面应用条件下具有计算简单、识别速度快的优点[6]。该方法主要利用手势中的手指数目、角度、相对位置等特征进行手势的分类与判别。但是由于个体差异等原因,上述几何特征即使在相同的手势中依然存在较大范围的变化,很难根据单一的几何特征实现手势的分类。为了提高该方法的识别率,许多学者从多角度考虑手势几何特征,将不同的几何特征进行组合来识别手势。文献[7,8]采用提取手势指尖个数结合Hu特征的方法,构建加权融合的特征距离,将待识别手势与模板进行相似度匹配来识别手势。使用多种特征结合的手势识别方法虽然可以获得较高的手势识别率,但会带来特征数据变多,计算复杂的缺点。对此本文从多方面考虑手势几何特征,研究了一种分层的手势识别算法,利用手势几何特征进行手势建模并分类,避免特征数据融合带来计算复杂的问题,提高了手势识别率。
1 算法流程
本文基于几何特征的手势识别方法主要根据手指数、指间距以及指间夹角,具体的手势识别算法流程如图1所示。首先利用肤色信息将手势区域与其它干扰区域进行分割,获得手势图像。其次对手势图像进行形态学处理[9],统计出手指数。根据手指数的不同,将手势识别拆分为两层。层1对于某些特定的手势,其仅依靠手指数目即可完全判别,此时直接输出识别结果。层2是在层1的基础上,提取指间距以及指间夹角作为特征参数,与标准模板进行匹配,实现对手势的进一步识别。
图1 手势识别算法流程
2 手势区域检测
作为手势识别的关键步骤,手势区域检测就是将场景图像进行分割,获得手势图像。与其它干扰目标相比,人手最明显的特征就是肤色,因此可以利用肤色信息进行手势分割。本文在相对简单的桌面应用背景下获取场景图像,选用HSV(hue-saturation-value)色彩空间将场景图像亮度信息分离,利用人体肤色信息,对场景进行分割,排除非肤色物体的干扰,实现手势区域的检测。在HSV色彩空间中,用色度H、饱和度S和亮度V对色彩进行量化表示,符合人眼的直观特性[10]。将图像从RGB彩色空间转换到HSV彩色空间采用如下公式
(1)
根据文献[11],在HSV颜色空间中检测肤色时,人类的肤色区域像素应满足
2≤H≤28,50≤S≤200
(2)
利用上述肤色分割获得的场景二值图像往往会存在噪声、孔洞及其它无关区域,对此需要去除无关区域的干扰。由于在肤色分割过后手部区域成为场景二值图中的主要部分,通过边缘检测算法对手势图像进行轮廓检测,将检测到的最大轮廓作为手势图像绘制输出,其过程如图2所示。
图2 手势图像检测流程
3 手势识别
手势识别方法在上述获得的手势图像中进行,包括手势几何特征的提取、建模与分类,进而实现手势的识别。其中本文几何特征主要包括手势图像中手指数目以及利用指间距和指间夹角参数,同时利用分层识别的思想实现手势结果最终判定。其中,对于可以根据手指数目进行唯一判定的手势图像可以直接输出结果。对于相同手指数目的不同手势图像来说,可根据指间距以及指间夹角的不同进行二次判定。
3.1 手指数检测
本文基于手势几何特征,实现手势图像的识别,因此对手指数的检测是实现分层策略的前提[12]。手指数的检测方法包含以下步骤:
(1)对上述步骤获得的手势图像进行开运算操作,获得手掌区域图像。其中结构元素为半径为15像素的圆;
(2)将手势图像与步骤(1)的手掌图像进行差运算,得到手指区域图像;
(3)对于步骤(2)中得到的手指区域图像进行腐蚀操作,去除小连通区域以及其它噪声干扰,此时统计出连通区域的个数即为手指数。
3.2 手势建模与识别
(1)根据统计手势图像中连通域的个数作为手指数m,当m∈{2,3,4}时,此时单凭手指数无法直接输出识别结果,仍需提取手势指间距以及指间夹角作为判定依据;
(2)构建手指区域的最小矩形包围盒,其中包围盒中心为该手指的质心位置,计算任意两个包围盒的质心距离d,以最大的质心距离作为该手势图像的指间距;
(3)以手势图像中最外侧的两个矩形包围盒最外侧的两个边所在的直线构建向量,计算两个向量之间的夹角,作为手势图像的之间夹角θ;
图3 特征提取
4 实验与分析
为了验证本文提出识别方法的有效性,本文采用如图4所示的9种静态手势作为识别对象。为了便于区分,将图4中的手势进行如下编号:图(a)、图(b)、图(i)这3种类型手势分别用0、1、5表示,图(c)~图(h)这6种类型手势分别用2-1、2-2、3-1、3-2、4-1、4-2表示。编号首位代表手指数,而第二位代表相应手指数下的手势类型号。实验中,10位实验对象在相同环境下做出9种手势图像,其中每种手势均以不同角度呈现于桌面背景中,每类手势图像采集5次,总共450幅图像。
图4 实验手势
本文借助OpenCV(open source computer vision library)视觉库进行相关的图像处理操作。OpenCV封装了多种通用算法用于实现计算机图像处理,成为视觉领域中最有力的研究工具之一。
在实验中,根据分层策略实现手势图像的识别。首先统计出手势图像中的手指数目,根据手指数目对需要进一步判断的图像使用上述提出的手势模型参数,进行最终判定。根据上节提出的手势建模方法,对需要进一步判别的手势图像进行特征提取,构建手指包围盒,计算指间距以及指间夹角,得到手势特征值。本文以图4所示的手势图作为标准手势图像,采用相同方法计算标准手势特征值Ki-j,同时考虑到个体的差异对于手势特征值提取带来的误差,对实际获得的手势特征K′i-j按照表1中设置的阈值对手势进行判定。
表1 手势特征范围划分
图5 手势特征值
首先按照本文的手指检测算法可以成功获得所有手指个数,对编号为0、1、5的手势识别率可以达到100%。然后对编号为2、3、4手势进行进一步识别。如图5所示,在第二层中,利用本文提出的分层手势识别方法将手指数目为2、3、4的6种手势分为3个小类,在每个小类下只有两种手势的存在,成功将多目标分类利用分层策略变成两项分类,降低了基于几何特征的手势识别难度。
为了对比实验结果,使用传统的基于Hu矩特征的模板匹配法[13]与本文方法进行比较。同样,模板匹配法也使用上述的手势图像组,并且取本文采集标准手势特征所用的手势图像作为标准模板。计算手势轮廓Hu矩值,取其中抗噪声干扰较好的4个值作为手势特征值,采用欧式距离作为模板匹配时的相似度评价,以最小值对应的模板手势作为识别结果,将此模板匹配法作为方法I。此外利用本文的手指数检测方法先进行手势的初步分类,对于需进一步分类的手势使用模板匹配法进行识别,将此方法作为方法II,进行比较。表2给出了3种手势识别方法对于9种手势的最终识别结果。
表2 手势识别率
从表2可以看出,在单独使用Hu特征进行模板匹配的方法I中,识别率随着手势的不同有着很大差距,总体处于一个相对较低水平。方法II利用分层的识别方法,在手指数识别的基础上进行模板匹配,只需与该数目下的两个模板进行相似度匹配,使得识别率相比较方法I得到了明显的提高。然而在同样进行分层识别的情况下,模板匹配法的识别率不如本文构建的手势模型识别率高,虽然随着手指数目的增多,每个小类下的两种手势的特征值差距会有所降低,但使用本文方法仍能够保持识别率在90%以上。
5 结束语
本文对基于几何特征的桌面静态手势识别方法进行了研究。在简单的桌面背景下,针对单一几何特征对手势识别准确率带来不利的影响,提出了分层的思想,将手势识别分成两个步骤。首先,利用肤色模型对手势图像进行分割,其次根据设置的阈值统计封闭轮廓面积作为手指数。对于某些特定的手势仅根据手指的数目多少就可以做出唯一判据,直接输出识别结果。否则,在此基础上,构建手势模型,计算出手势指间距以及指间夹角,并进行模板匹配,从而得到最终的识别结果。本文设计的识别算法能够识别预定义的9种自然手势类型,简单有效,能够满足桌面静态手势识别的需求。