操作者在屏幕注视操作中的手势识别方法研究
2020-10-23陈国良岳正伟
陈国良,岳正伟
(武汉理工大学 机电工程学院,湖北 武汉 430070)
手势识别是众多新型交互方式之一,手势交互有着通用性强,操作直观简单等优点。近年来,基于计算机视觉方法的非接触式手势识别方法得到了迅速发展,其通过摄像装置拍摄手势,然后在计算机上运用图像处理等相关技术来分割和识别手势。Raheja[1]和Panwar[2]提取手势几何特征作为参考,对手势进行识别,取得较高的识别率。王凯等[3]基于AdaBoost算法和光流模板匹配的方法进行手势识别,采用光流矢量统计和模板匹配相结合的方法来识别动态手势。高辉光[4]提出基于Hu不变矩和支持向量机的静态手势识别算法,并在OpenCV的开发平台进行手势识别的实验仿真。李思敏[5]对手势进行HOG(histogram of oriented gradient)特征提取,通过SVM(support vector machine)训练出对应不同手势的分类器,取得了较高识别率。同时,研究人员也尝试使用卷积神经网络对不同手势进行识别,并取得了91%以上的正确率[6-7]。上述方法都可以在某单一方面满足手势识别的要求,但是鉴于手势识别的实时性,鲁棒性及其识别环境的复杂性,同时需要满足实用性,需要提出更好的方案。
笔者旨在通过建立两种手势识别模型,将特征点的分布作为模型选择依据,针对性的对手势进行识别。首先对手势集中的手势进行HOG特征提取,利用SVM分类算法进行手势分类,并统计手势识别率。之后将Hu矩思想引入到手势识别方法中,分别对4种基础手势(手掌张开,食指伸直,五指弯曲成爪状,拳头握紧)提取Hu矩,将提取的Hu矩与4类聚类中心点进行标准化欧式距离计算,引入FCM(fuzzyc-means)算法对各类手势进行识别,并统计此模型的识别率。对两模型统计的手势识别率进行归一化,作为模型评分的加权值,将两模型对待测手势的打分乘以对应权值即为手势的加权分数,最高得分者即为识别的类型。对于识别模型的选择是根据欧式距离分布情况,对于欧式距离位于某一手势特征点标准差圆内的点,引入Hu+FCM分类模型,而位于圆外的特征点,采用加权识别模型进行手势识别,最后在保证基础手势识别率的基础上对变形手势(手掌旋转,手势爪上下左右移动)进行识别。加权识别机制流程图如图1所示。
图1 加权识别机制流程图
1 HOG+SVM手势识别
1.1 手势的定义
操作者在注视屏幕操作过程中,因为手势具有多样性和灵活性以及操作场景的复杂性,需要定义一套专门的手势,来满足操作者对机器人的控制。为满足工程实际应用和人体生理习惯,文中主要研究两类手势,一种为动作手势,另一种为指令手势。动作手势是对机器人空间动作控制的指令,而指令手势则是针对机器人执行末端的控制指令。动作手势的基础手势为五指张开(hand)和食指伸直(index),而指令手势分别为五指弯曲呈爪状(claw)和拳头握紧(fist)。为了能够实现手势识别向着工程实际应用方向,对4种基本手势进行变形,并赋予实际应用指令。食指的上下指向表明机器人在单自由度方向上进行移动;而手掌的旋转,空间移动对应为机器人在三维空间上的自由动作(旋转,移动)。手势claw映射为机器人的抓取,释放动作,而手势fist则为中止作业命令。各手势与映射命令如图2所示。
图2 手势命令映射图
为满足手势识别训练要求,提高手势识别算法鲁棒性,对于每种手势,采用深度摄像头Leap-Motion,在不同的光照强度和不同拍摄角度条件下,采集每种手势正样本700张,图3为部分用Leap-Motion摄像头提取的正样本手势图。负样本则是在网上下载的10 000张图片,图片中都不含手势部分,且都是在可能出现手势的场所采集的。
图3 4种基础手势图
1.2 手势分割
笔者采用的是Leap-Motion体感摄像头,它可以提取图像中的深度信息,即图像中各物体与摄像头的距离数据。首先对提取的图像进行均衡化处理,以减小光照影响,同时进行高斯滤波,然后利用人脸Harr特征和AdaBoost算法对人脸区域进行剔除。同时利用图像深度信息和手部的面积和周长,对背景与肤色相近的干扰杂质部分进行剔除,最后采用开闭形态学操作进一步对手部进行精提取,如此可以有效地提取出手势部分。图4为手势分割的流程图,图5为利用Leap-Motion得到的手势分割图。
图4 手势分割流程图
1.3 HOG+SVM模型
在手势识别过程中,因为手势参与者的不同,光照不同,甚至同一参与者对同一手势的摆放也不尽相同,所以需要对手势识别具有很强的鲁棒性。HOG特征对环境有着强适应能力,对图像的光线变化和小幅度旋转方面有较强的鲁棒性[8-9],同时HOG特征可以检测图像中边缘信息并描述边缘内部灰度级的分布状态。手势识别特征的提取正需要手势部分边缘特征的提取,同时手势识别过程中,特征提取过程中需要对于环境(光照,角度等)有一定的适应性,以保证识别特征的准确提取,而SVM模型的训练不需要非常庞大的样本支撑,少量样本就可以获得较好的分类效果[10]。文献[5]利用HOG特征和SVM的特性对手势识别进行了研究。笔者借鉴其手势识别方法,并对提取的手势HOG特征进行PCA(principal component analysis)降维处理,以保证算法的实时性。文中将85%的手势样本特征导入到SVM模型中进行训练,将15%的手势集作为测试集导入到训练好的SVM模型中进行测试,统计其分类准确率如表1所示。
表1 HOG+SVM手势识别准确率统计表
通过统计SVM+HOG模型识别准确率,其准确率无法达到90%,不能满足实际应用要求。从统计数据发现,hand与fist手势的识别率较高,约为82.5%左右,同时claw与index手势的识别率也刚接近80%左右,不能很好实现准确地识别手势类型。为提高手势识别率,需要对手势识别的算法进行进一步优化。
2 Hu+FCM手势识别
2.1 Hu矩
Hu矩即几何不变矩,是不随图像平移、旋转、缩放而变化的特征量,因此,该特征可以很好地反映物体形状信息,可用于对图像特征进行分类识别[11]。Hu矩有7个不变矩(h1,h2,h3,h4,h5,h6,h7),它是由x方向上二阶中心矩h1;y方向上二阶中心矩h2;xy混合二阶中心矩h3;x方向上三阶中心矩h4;y方向上三阶中心矩h5;xy混合三阶中心矩h6,h7的线性组合构成。为了验证Hu矩特征能够反映不同手势具有不同特征,分别选择二阶矩h1,h2和三阶矩h4来直观地表现各手势Hu矩在二维和三维空间的分布,如图6所示。
图6 手势Hu矩二维、三维数据分布图
从图6可知,在二维空间中4种手势的二阶矩数据相交部分较多,而在三维空间中,4种手势相交部分明显减少,因此当把七维数据映射到高维空间中时,可以很好地将4种手势区分开来。
2.2 FCM聚类
FCM算法是一种基于目标函数的模糊聚类算法,主要用于数据的聚类分析[12]。FCM在分类过程中,会对样本点进行距离计算,不断迭代更新隶属度,直到类型中心点到各样本之间的隶属度不变。整个分类过程见式(1)~式(4),其中式(1)为价值函数,是考量手势特征向量与聚类点c的欧几里德距离指标;式(2)为约束条件,为满足价值函数最小化;式(3)为聚类中心点求解方程;式(4)为某一待测手势特征向量j与某一聚类点i间的隶属度函数。式中计算类型隶属度时充分利用了中心点到各类型样本点的距离实时更新隶属度。
(1)
(2)
(3)
(4)
式中:m为一个可以控制聚类结果的模糊程度的常数;uij为每个样本j属于某一类i的隶属度;xj分别为待测手势特征向量;ci,ck分别为第i,k个中心点。图7为FCM算法中手势中心点的更新过程示意图。如图7中手势中心点c1的坐标更新计算为:
图7 手势中心点更新示意图
式中:X1,X1,…,Xn为同种手势集中对应的手势中心点坐标。
对所有标准化手势Hu矩利用FCM聚类成4类,鉴于聚类对于初始值有一定的敏感性,因此开始设定4种手势隶属度为1/4。在迭代结束,隶属度不再发生改变,得到4种手势的Hu矩中心特征点后,分别计算每一中心点距离所有手势特征点的欧式距离。
2.3 Hu+FCM模型
对于一个未知样本,利用欧式距离思想和FCM模糊分类算法对其进行分类识别。根据计算的欧式距离的大小对手势进行隶属度评估,进而确定手势类型,分数最高者对应的聚类点类型即为相应的手势类型。由Hu+FCM模型方法进行手势识别的准确率如表2所示。
表2 Hu+FCM手势识别率统计表
由表2可知,利用Hu矩欧式距离和FCM分类算法的手势识别方法对index和claw识别率较高,可达到83%,而hand与fist的识别率相对较低。通过实现证明,通过Hu矩+FCM识别方法也可以一定程度上实现手势的识别分类,但要在工程实际上运用,还需要有更高的识别率。
3 加权识别机制
3.1 加权打分
图8 加权识别算法流程图
3.2 加权识别
为了更明确各手势Hu矩分布情况,将hand手势的中心点作为4种手势的参考点,虚线圆表示hand与其他3种手势的中心点距离,实心圆分别对应各手势Hu矩点的分布,半径为各手势的标准差,各圆圆心之间的距离为各种手势中心点的距离。各手势Hu矩分布关系图如图9所示。
图9 各手势Hu矩点分布示意图
图9中反映了各手势特征点的大体分布情况,各手势之间均有部分交集,为提高手势识别率,需对交集部分进行算法的优化,引入加权识别机制。加权模型中,对于待测手势点位于某一手势的特征点标准差圆内的点,采用Hu+FCM模型进行分类,而对于在标准差圆外的特征点或位于标准差圆重叠部分的特征点,则引入加权识别模型对手势进行打分识别。手势识别的整个手势的识别思想为:Ai,Aj(i,j=1,2,3,4)分别对应手势hand,fist,claw,index标准差圆区域;
ifx∈Aiandx∉Ajandi≠j
FCM+Hu;
elseAi∩Aj≠Ø andi≠j
加权识别模型。
3.3 加权识别机制验证
将先前采集好的各手势的20%总样本分别导入到先前训练好的SVM模型中,结合前面统计的各手势识别准确率,对样本手势进行加权评分,得分最高者即为对应的类别。统计测试样本识别准确率如图10所示。
图10 手势识别算法准确率统计
3.4 实验验证
3.4.1 手势识别验证
为验证算法的可行性,将手势集中的测试集分别导入本文优化算法和文献[3]~文献[5]中的手势识别方法中,统计各方法对于手势集的识别率,结果如表3所示。由表3可知,本文算法在手势识别中识别率接近89%,比起单独特征提取方法的识别率更高。
表3 手势识别算法识别率
3.4.2 实时性验证
为验证算法的实时性,将手势集中85%手势作为测试集,分别导入本文优化算法和文献[3]~文献[5]中的手势识别方法中,统计各方法单个手势识别的平均耗费时间。文中对分类模糊的手势进行特征提取时,利用多线程处理,以提高手势识别的实时性。表4为本文算法与其他分类算法手势识别所需时间的对比。
表4 手势识别算法实时性对比
由表4可知,文中算法在保证识别率高于其他方法的同时,还能实现较短的耗费时间。通过对文中识别方法准确性和实时性的实验验证可知,该识别方法对手势识别有着比较好的识别效果。同时,在手势识别中需要一定时间进行手势识别处理,因此在实际应用中对手势视频进行间隔帧识别处理。
3.5 动作手势识别验证
为实现手势识别实际应用,对4种基础手势进行了部分改进,以更适应工程实际应用和人体操作习惯。对于index动作手势识别,考虑其二值图像的特点是上下长度不同来区分手指指向,而对于hand则通过计算二值图面积来确定翻转手势,同时需要保证翻转手势在一定帧数范围内进行识别,文中设置为60帧,即为2 s左右动作实施时间。图11为index识别过程图,图11表明index手势轮廓图平均长度,通过遍寻二值图,找出最小长度,与平均长度位置比较判断手指指向,图11中直线段表示的是手势的平均长度。图12为统计15名志愿者翻转动作中,手势hand在旋转过程平均面积变化图。
图11 index识别图
图12 hand面积变化图
由实验可知,index指向手势演变于index手势,在手势集中可以比较准确地寻找到手势的平均长度位置,根据遍历index手势最短距离可以明确手势的指向。而对于翻转动作,在统计手势轮廓面积时有着明显的下降趋势,并且手势在终止时刻点的面积是初始时hand面积的2/5~2/3之间。通过实验统计,在保证可以准确识别基础手势的基础上,动作手势的识别率可以达到84%以上,结果如表5所示。
表5 动作手势识别率统计
4 结论
为实现手势识别的较高准确率,在实现对HOG+SVM算法优化的基础上,引入与形状有关的特征量Hu矩,实现了手势识别准确率的进一步提高。本文主要的工作与成果如下:
(1)在HOG+SVM手势识别算法基础上,引入Hu矩对手势特征点进行初步判断,选择合适的模型进行手势识别。
(2)对手势特征点与中心点距离在单个标准差圆内的特征点,引入FCM算法对待测手势进行分类。
(3)对分类模糊的手势,采用FCM+Hu模型和HOG+SVM模型的加权模型进行加权打分,提高手势的识别率。
(4)在保证基础手势识别率的基础上,对基础手势进行改进,以更适用于工程实际,根据基础手势的几何特征对改进手势进行识别。