基于HOG特征提取和SVM的手势识别方法研究
2022-02-24李国玄马凯凯王文博
李国玄 马凯凯 王文博
商丘工学院机械工程学院,河南商丘 476000
0 前言
手势是一种自然、直接、符合用户习惯的交互方式,具有快速、非接触、容易理解等优势,因此,对手势识别的研究可以增强用户的沉浸感体验,使交互体验更为直观和舒适。随着人工智能的迅速发展,人机交互技术也越来越趋于智能化和人性化,手势识别作为人机交互领域中一个具有挑战性的问题,多年来一直是科研工作者研究的热点[1-2]。目前,国内外针对手势识别的研究主要分为基于2D摄像头的二维手型识别、二维手势识别,以及基于3D摄像头的三维手势识别,前两种完全基于二维层面,第三种包含深度信息。最初,研究者主要是利用机械设备辅助检测人手的各个关节的位置、角度信息,从而识别手势含义。传统的人机交互技术是指通过计算机输入、输出设备,以有效的方式实现人与计算机对话的技术,它包括机器通过输出或显示设备给人提供大量有关信息及提示请示等,是计算机用户界面设计中的重要内容之一[3-4]。随着科技的发展,人们逐渐不满足传统的接触型交互,手势识别作为非接触型的一种交互方式,不仅实现了便捷的操作方式,还完成了人与计算机的互动和交流。目前,手势识别在手语识别、人机交互、机器人控制、智能监控、视觉环境操作等领域均有应用,未来将在更多行业、更多方面发挥价值[5]。
1 手势图像采集
目前,手势识别在医疗服务促进与聋哑人的交流、智能机器操作的便捷、提高汽车驾驶安全度等方面得到广泛应用,根据采集手势图像的设备不同分为基于数据手套的手势识别和基于计算机视觉的手势识别。基于视觉的识别方式具有直观性、自然性和丰富性的特点,使操作者更加自然地进行人机交互,已经成为手势识别的研究重点[6-7]。本文研究对象是静态手势的识别,对于一幅图片首先分割出手势部分,其次在手部区域提取某种特征来描述手势特性,最后利用手势形态特征分类方法对手势进行识别,手势识别数据处理流程如图1所示。
本文采用笔记本自带摄像头采集图像,在视频流中每隔1 s随机抓取一幅手势图像,考虑到手势识别过程中实际情况的复杂性,如光照强度、手势的形态、背景复杂程度等,对采集的手势图像进行归一化处理,提高手势识别率。共采集6种手势,每种手势1,000张图片,手势数据集如图2所示。
2 手势图像分割
在手势识别过程中,将获取到的手势信息转换成可用计算机处理的数字图像时,图像的生成、采集、变换及传输过程中会受到各种因素的干扰。为了降低手势图像的复杂多样性对手势特征提取和训练过程中的影响,提高特征提取和识别的可靠性,需要对采集的手势图像进行预处理,即过滤掉图像中不需要的部分,增强图像中的特征信息。通过对采集的RGB图像分析,手势本身形态不一,图像背景及光照强度都会对手势形态造成影响,包括背景的变化、图像采集设备的性能、运动跟踪的灵敏度、类肤色区域等,都给手势的检测带来了困难[8-9]。
目前,基于视觉的分割方法有3类:
(1)阈值法:首先对采集的RGB图像做灰度变换,生成灰度直方图,选择直方图中的最小值作为分隔的阈值,小于阈值的区域设置为全黑,大于阈值的区域设置为全白;
(2)模板匹配:首先建立一个标准的样本库,提取样本库的特征并保存为XML格式,同样提取采集图像的特征向量与文件中的向量做对比,计算向量之间的距离,选择距离最小的作为模板匹配的结果输出;
(3)物理特征:主要根据肤色的色彩空间分割手势,肤色特征具有较好的聚类特征,利用这种特征区分手势区域,提高识别效果。
肤色作为手部区域的明显特征,在实际应用中容易受到环境变化,如位置变化、有色光源产生的色彩偏移等,这使得整个手部区域存在较大的差异,在图像处理中常用的肤色空间包括RGB、YUV和YCbCr等颜色空间。YUV是从全彩色图像中产生一个黑白图像,提取出3个主要的颜色变成两个额外的信号来描述颜色,从RGB中提取亮度值来减少颜色信息量,这些值可以重新组合来决定红、绿、蓝的混合信号。YUV和RGB的转换如式(1)所示。
其中,Y表示亮度;U表示色度;V表示密度。
YCbCr是肤色检测常用的模型空间,其中,Y代表亮度,Cr代表图像中的红色分量,Cb代表图像中的蓝色分量。人的肤色在外观上的差异是由色度引起的,YCbCr颜色空间中CbCr的颜色区间类似于椭圆形状,要判断图像中的像素是否在椭圆范围内,从而确定该点是否是待研究的像素点,遍历整个图像区域,确定肤色的范围。将图像转换到YCbCr空间并且在CbCr平面进行投影,如式(2)所示:
其中,Y表示颜色亮度成分;Cb表示蓝色浓度偏移量;Cr表示红色浓度偏移量。
在YCbCr模型下,强度Y对色彩在CbCr平面的分布作用不大,采用线性近似值的办法来找出肤色子空间的边界,肤色像素点的范围为77≤Cb≤127,并且133≤Cr≤173,假设该肤色像素点的灰度级为g(x, y),代码说 明if(77≤Cb≤118&&120≤Cr≤127),g(x,y)=0; else g(x,y)=255。YUV和YCrCb各通道的肤色检测效果图如图3所示。
由图3可以看出,YUV颜色空间相对于YCbCr空间的聚合度较低,三维的肤色空间转化为二维CbCr空间的话,肤色区域会形成一定的形状,产生很好的聚类效果,所以本章基于肤色模型的手势识别选择YCbCr肤色空间。基于YCbCr肤色转换分割的效果如图4所示。
3 手势图像预处理
随机采集的图像容易受环境的干扰,不可以作为图像处理的输入图像,在视觉图像处理前需要对原始图像做预处理,主要目的是使感兴趣区域的特征更明显,衰减其不需要的特征[10-11]。直方图均衡化的原理是通过重新分布图像的灰度值来达到增强图像对比度的效果。通过直方图均衡化之后,把在灰度区间[a, b]内原图像的像素点映射到图像变换后的 [z1,zk] 区间, [z1,zk]的范围较大,将原图像灰度区间的像素点z映射到子区间z12的函数如式(3)所示:
此函数的曲线形状如图5(a)所示,将区间[a, b]扩展到区间[z1,zk]上,增强图像的特征。如果选择的图像像素灰度值不唯一或者大部分分布在区间[a, b],如图5(b)所示,则可以使用式(4)的映射函数:
如果需要增强敏感区域的灰度细节,同时又可以保留其他灰度上的细节,可以在不同的区间上分段灰度处理,那么研究的灰度区间得以延伸,同时压缩不需要图像灰度空间,使对比效果更加明显,如图5(c)所示,也可以利用平滑函数对采集的图像进行尺度变换,如图5(d)所示。
通过函数变换得到各灰度值所对应的像素数不完全匹配,首先设定灰度值的分布,才能达到直方图均匀性的目的,假设灰度级zi上的像素点的数量为pi,qi是进行灰度变换之后要得到的数目。从图像的原点开始找到灰度值k1,使得则重新对灰度级z1,z2,…,zk1-1上的像素点转换到新的图像上,求灰度值k2,使得所以另一个子区间的像素值zk1,…,zk2-1分别被映射到灰度级z2上。循环上面的操作步骤到灰度值处理结束,如图6所示。
通过YCbCr肤色空间转换的模型检测出视频中类肤色区域,该肤色区域包含手、手臂、脸部、颈部和与肤色区域灰度值相等的噪声点。在视场中,手部和脸部是主要的肤色区域,筛选剔除面积小于200的轮廓,根据肤色区域近似矩形的特点,计算矩形的高与宽比值,满足box[i].size.height/box[i].size.width>0.7,0.9<box[i].size.height/box[i].size.width<1.2,肤 色 区 域为手部。本文采用的二维直方图Otsu的自适应阈值分割手势方法是一种图像灰度自适应的分割算法,其中一维Otsu算法有计算简单、自动选择阈值等优点,多用在图像分割中。一维Otsu算法对环境有较高的要求,而且要求像素点平均分布[12],当图像中有噪声时,会导致分割的效果不理想。本文采用二维Otsu算法,发现背景和前景的像素点主要分布在矩形区域的对角线上,边界点和噪声点分布在对角线的两侧[13]。
通过二维Otsu算法计算划分出来的有效区域B的阈值,实验结果对比如图7所示。
4 手势识别
在视觉识别领域,常用的静态手势识别方法包括3种:第1种为模板匹配技术,其原理是建立图像数据库给不同的手势做标签,提取实时采集图像的特征并与数据库图像的特征参数比较相似度,输出匹配度最高的手势结果;第2种为统计分析技术,通过概率论的统计方法把含有相同手势的图像放到一个分类器中,提取图像的特征向量信息,即维度信息,采用贝叶斯决策的算法设计分类器,根据该方法得到用于分割不同手势的距离和夹角的值,从而达到对手势识别的目的;第3种为神经网络技术,这种方法需要具有自主能力,具有分布性特点,在识别前都需要一个对神经网络的训练阶段[14-15]。本节的手势识别采用HOG特征提取+ SVM分类相结合的手势识别方法,流程图如图8所示。
提取手势图像的HOG特征,如局部图像目标的表象、形状、像素分布以及边缘方向的密度分布。HOG特征维数的计算,HOGDescriptor* hog =newHOGDescriptor(cvSize(64, 48), cvSize(8, 6), cvSize(8, 6), cvSize(4, 3), 9)。cvSize(64, 48)表示窗口的大小,cvSize(8, 6)表示块(block)的大小,cvSize(8, 6)表示块滑动增量(blockStride)大小,cvSize(4, 3)表示胞元(cell)的大小。一张尺寸为640×480的图片包含(blockSize.width/cellSize.width)*(blockSize.height / cellSize.height)个胞元(cell),所以一个块(block)含有9A个梯度直方图。按照所给出的数据,可得结果为36,按照所给出的数据,可得结果为230,400,如图9所示。
SVM是一种二分类的模型,主要思想是在数据空间找到一个超平面,该平面可以把数据分为两类,并且这两类数据到超平面的距离最短。
本节研究手势识别属于线性不可分的情况,对采集的数据点进行分类,实际上是通过f(x)=ωTx+b算出结果,然后根据正负号来进行类别划分。在超平面确定的情况下,我们就能够找出所有的支持向量,然后计算出间隔margin,找出所有margin中最大的那个值对应的超平面,用数学语言描述就是确定w、bmargin最大,这是一个优化问题,其目标函数可以写成:
(1)构建拉格朗日函数,如式(5)所示:
其中,α=(α1,α2,…,αN)T>0为拉格朗日乘子向量,优化问题就转化为求函数极大、极小问题,如式(6)所示:
例如,它的约束不等式中有一个不等式不满足约束,y2(ωx2+b)-1<0,则
(2)求解minω,b L(ω,b,α),求偏导数并令其等于0,如式(7)所示:
(3)求解minω,b L(ω,b,α)对α的极大值,如式(8)所示:
∂i>0,i =1,, 2这,…是, 原N问题的对偶最优化。
(4)超平面公式求解,如式(9)所示:
求解出b*的值,即找到分类效果最好的平面,支持向量就是此平面上的点,观察原问题的对偶问题,若(xi,yi)为非支持向量,那么yi(ωxi+b)-1>0要达到max∂最大化的目的,有使 ∂i=0,得出结论
为了提高分类器的泛化能力,针对某一手势要保持统一且不能有遮挡,可以发生轻微变化,例如旋转比较小的角度,或者使用不同的人作出手势。负样本的选择至关重要,不能包含当前要识别的手势,保证与识别的区域有一定的差异性,尽量选择背景比较复杂的图片,会加快匹配速度。对采集的图像样本进行统一裁剪,如图10所示。
实验分别采用支持向量机、模板匹配和神经网络3种方法对手势识别的效果进行比较,每种手势、每种方法采集100张,得出静态手势的识别率如表1所示。
表1 3种手势识别方法效果对比
由表1可以看出,在相同训练集数据中,基于支持向量机的识别方法比模板匹配和神经网络的识别率高。模板匹配的手势识别方法对模板的要求较高,原图像中除了包含手势之外,其他无关信息全部灰度处理,增加了计算量;神经网络作为一种以人脑结构为基础的运算模型,需要大量的节点和神经元进行策略分析,运行效率低且算法复杂;基于HOG特征提取+SVM分类相结合的手势识别方法优点在于样本集少,特征提取准确等特点,并且根据3种方法的识别率结果可知,该算法的手势识别率较高,且识别稳定性较好。
5 结束语
本文首先介绍了手势识别在人机交互领域的应用,其次分析了手势分割存在的技术难点,对比了现有手势分割和手势识别方法的特点,最后重点研究了基于YCrCb肤色空间的手势分割和基于SVM手势识别的算法流程。通过实验结果分析,验证了本文采用的HOG+SVM手势识别算法对手势形态和复杂背景等因素具有较强的鲁棒性。