《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于轮廓PCA的字母手势识别算法研究
基于轮廓PCA的字母手势识别算法研究
2014年电子技术应用第11期
王景中,李 萌
(北方工业大学 信息工程学院,北京100144)
摘要: 提出了一种改进的手势检测识别算法。首先对采集的手势图像综合运用Krisch算子的背景差分与肤色分割等算法进行预处理,然后根据手势的方向去除胳膊等非目标,截取手型区域。最后对手型图像进行轮廓检测,根据手型轮廓的二值图像进行PCA降维,并与投影降维后的样本计算空间距离,从而进行手势分类。通过此方法可以快速、准确地检测到手型区域,识别手型含义,且具有实时性。
中图分类号: TP391.4
文献标识码: A
文章编号: 0258-7998(2014)11-0126-03
Method of gesture recognition based on contour PCA
Wang Jingzhong,Li Meng
College of Information Engineering, North China University of Technology, Beijing 100144,China
Abstract: This paper gives an improved gesture recognition algorithm. First, the gesture images are processed through a combination of background subtraction method with Krisch and color segmentation to get the hand area. Then the non-target region such as arm which depending on the direction of the gesture is removed. Finally, the images are processed through contour detection and the dimension is reduced by PCA, the spatial distance with the sample after the projection is calculated for classification. The method can detect hand region and identify the meaning of gestures quickly and accurately, and can be used in real-time recognition.
Key words : gesture recognition;background subtraction;complexion detection;PCA;feature extraction

0 引言

  手势识别是一个包含多学科多领域的课题,随着人机交互技术的发展,未来的手势识别技术会趋于基于视觉。对于基于视觉的手势检测存在着光线、复杂背景、人脸胳膊等干扰因素,通常会有附加的限制条件,比如要求背景颜色、穿着长袖衣服等。这些问题短期内不能得到完善的解决办法,因此良好地检测到手型区域是手势识别系统的一个主要研究内容[1]。

  手势检测常用的方法是肤色分割、背景差分、灰度直方图检测。单一的方法对手势检测无法得到良好的效果,因此要结合多种方法。边缘与轮廓检测是手势识别中常见的特征提取方法[2-3],其中Canny算子很适用于手势的边缘检测[4-5]。对于实际的图形,内部边缘检测效果不尽相同,因此在不需要图形内部信息时,轮廓可以更直观地反应图像特征。

  手势识别的核心技术是目标分类。一种常用的分类方法是利用神经网络[6],它是应用分类规则的常用方法。另一种是支持向量机的方法[7],它在数学建模和分类方面非常受欢迎。还有一些方法是通过去除那些对分类决定不起作用的数据来提高分类能力,例如PCA(主成分分析法)[8]。

  本文研究视觉手势的实时检测分割算法。根据我国“汉语拼音手指字母图”中30个不同指式,综合运用Krisch算子等多种方法进行手势检测,然后基于手势轮廓和PCA算法对字母手势进行识别。

1 关键技术

  1.1 PCA技术

  PCA(Principal Components Analysis)即主成分分析技术,旨在利用降维的思想,将高维数据投影到较低维空间,间接地对数据进行了压缩处理,同时很大程度上保留了原数据的信息。因此在机器学习和模式识别及计算机视觉领域,PCA方法被广泛运用。

  1.1.1 基本步骤

  (1)设m个样本数据{xm},每个样本数据是n维,构建一个大小为m×n的样本矩阵M。

  (2)对矩阵M按行求均值。原始m个样本数据均值向量为x:

  1.png

  (3)计算样本数据的协方差矩阵S,公式如下:

  2.png

  (4)对协方差矩阵做SVD(奇异值分解),即可得到特征值和特征向量。

  (5)选出前k个特征向量用于对样本的表示,达到降低数据维度和压缩的目的。

  (6)将数据投影到特征向量的空间之中[9]。

  1.1.2 基于PCA技术的图像识别

  高维的图像空间经过PCA变换后得到一组新的正交基,保留其中重要的正交基,可变成低维线性空间。假设图像在这些低维线性空间的投影具有可分性,就可将这些投影用作识别的特征矢量。

  在图像识别中,可以用PCA变换对图像的原始空间进行转换,即构造图像数据集的协方差矩阵,对之进行正交变换,求出协方差矩阵的特征向量,继而构成投影矩阵。选出前k个特征向量(主成分),计算投影的系数,对每一类求出平均系数。分类时,将需要分类的图像数据进行投影,得到系数,再与先前计算出的每一类的平均系数进行比较,可判为最接近的一类。

  1.2 Krisch算子

  Krisch算子是由8个模板组成的方向算子,图像中的每个像素在模板代表的8个方向上进行模板卷积计算。它具有良好的边缘定位能力与抑制噪声能力,虽然提取出的边缘和细节较多,导致虚假边缘多且边缘较粗,但是能够提取出对比度较弱的边缘,因此应用效果较为理想。

  1.3 改进的图像背景差分法

  背景差分法是基于图像序列和参考背景模型相减实现的目标检测方法。该方法位置精确且速度较快,因此在实时系统检测中经常应用背景差分法来获得检测结果。然而该方法对光照敏感,且在背景灰度变化很大的情况下检测效果不理想。所以常用的背景差分法会受到背景颜色的影响。

  本文提出将目标图像与背景图像经过Krisch算子边缘检测后再进行差分,以便得到目标的区域位置,流程如图1所示。

001.jpg

  通过边缘算子的背景差分后,可得到手势边缘的一些信息。该方法对背景没有特殊限制,比直接进行灰度图像的背景目标结果明显完整。在光照的影响下,肤色分割后的图像手型轮廓变得不平滑,因此通过逻辑运算使Krisch算子的背景差分方法与肤色检测方法相结合,共同进行手势检测,可以得到较为理想的肤色分割结果。

2 手势识别系统设计

  手势识别系统实现框架流程如图2所示。

002.jpg

  如图2所示,手势识别系统设计主要分为两大部分:(1)首先是创建手势样本集,对样本集图像进行预处理、特征提取,最后构建手势向量特征库;(2)建立在第一部分基础之上,针对的是单张手势图像。手势图像经过相同的预处理与特征提取过程,将得到的手势特征向量与手势库进行对比,根据欧氏距离计算向量距离,从而得到识别结果。

  2.1 图像预处理

  首先将捕捉到的手势图像与背景图像进行Krisch算子图像背景差分,然后把原图像RGB空间转换为HSV空间进行肤色检测[10],得到肤色分割后的二值图像。应用逻辑或运算将差分图像和肤色分割后的图像结合起来。

  根据得到的二值图像检测最大连通域,得到手连同部分胳膊区域的二值图像。最后根据手势不同方向,采用不同的方法去掉胳膊,从而得到较为准确的手型区域。将手型图像进行归一化处理,压缩了图像的数据量,减少冗余度,以便进一步处理。部分样本轮廓如图3所示。

003.jpg

  经过图像预处理过程,得到大小为32×32的手型轮廓二值图像。该方法减少了光照对手型检测的影响,从而得到了准确的手型区域,继而得到可靠的手势轮廓信息作为特征,为后续手势的特征提取与识别完成了良好的预处理工作。

  2.2 特征提取

  本文研究的特征以轮廓信息特征为基础,根据PCA算法计算样本图像的特征值,生成相应的特征库,即投影向量矩阵。具体计算方法如下:

  每张手势轮廓图像表示为一个32×32像素的矩阵,即为一个二维数组,将其按行变换成一维数组,一张图片就能表示为一个向量d=(x1,x2…x1 024)。

  将样本库里m张手势图片表示成上述向量形式,则m个向量组合成一个m×1 024的样本矩阵M。当m<1 024时,经过PCA可得到m个特征值与大小为m×1 024的特征向量。选取k个特征向量作为主成分,形成大小为m×k的投影变换矩阵,记为C。将样本矩阵向C映射,得到m×k的样本投影矩阵,即为特征库矩阵,矩阵中每行为一个大小为1×k的样本特征向量。

  2.3 特征匹配识别

  在手势识别系统中,将测试集中图像进行预处理,得到的32×32轮廓图像变为一维数组,大小为1×1 024。将此数组向矩阵C投影,得到大小为1×k的特征向量,记为St。

  两个向量a=(a[1],a[2],…,a[n])与b=(b[1],b[2],…,b[n])之间的距离定义为下面的公式:

  3.png

  分别计算特征向量St与m个样本特征向量的欧氏距离,得到距离最小的样本向量所对应的手势含义即为识别结果。

3 实验效果

  本手势识别系统以汉语拼音30个字母手势为参照,采集了3套手势(3套分别为不同人的手)形成手势库,每套手势中每个字母手势录5张,3套手势库共450张手势图。图像格式为BMP图像,大小为640×480。

  根据本文算法,针对静态的字母手势做了大量实验来测试其对识别率的影响。从手势库1中的每个手势挑选2张图像,从手势库2中的每个手势挑选1张图像,共得到90张图像作为样本。经过上述特征提取方法得到大小为90×k的特征库矩阵。其余图像作为测试图像。根据不同的k值,手势库图像识别结果如表1所示。

004.jpg

  由实验结果可表面,该算法可有效识别字母手势。当k为40时,平均识别率可达到92,且用时较少,识别150张静态图像平均40 s左右可完成。当k值逐渐变小时,识别速度提高了,然而识别率下降了。因此在选择k值时,应权衡速度与准确率。当k=20时,识别率良好,且用时较少,因此在手势识别系统中可以选此k值。

4 结论

  本文针对汉语拼音30个字母手势识别进行研究,提出了结合多种方法的手势检测,基于轮廓检测和主成分分析的识别算法,进行图像特征提取和分类。实验证明,该方法可以有效检测手势,简单高效地对手势进行识别,对图像的平移和缩放具有稳定性。同时,手势过度旋转对识别存在着一定的影响,可结合手型的多个几何特征辅助进行特征比较,从而提高识别率。

  参考文献

  [1] 冯志全,蒋彦.手势识别研究综述[J].济南大学学报(自然科学版),2013,27(4):336-340.

  [2] 孙丽娟,张立材.基于边缘梯度方向直方图的静态手语识别[J].微电子学与计算机,2010,27(3):148-150.

  [3] 何阳清,葛元,王林泉.应用几何矩和边缘检测的手势识别算法[J].计算机工程,2005,31(15):165-166.

  [4] CANNY J.A computational approach to edge detection[J].Pattern Analysis and Machine Intelligence,IEEE Transactionson,1986,8(6):679-698.

  [5] THEPADE S D,KULKARNI G,NARKHEDE A,et al.Sign language recognition using color means of gradient slope magnitude edge images[C].Intelligent Systems and Signal Processing(ISSP),Gujarat:IEEE,2013.

  [6] 谭昶,肖南峰.基于改进RCE和RBF神经网络的静态手势识别[J].计算机工程与应用,2011,47(7):172-176.

  [7] 张秋余,王道东,张墨逸,等.基于特征包支持向量机的手势识别[J].计算机应用,2012,32(12):3392-3396.

  [8] 李荣健,韩其龙,杨鑫华.改进的PCA人脸识别新算法[J].大连交通大学学报,2008,29(4):48-51.

  [9] ABDI H,WILLIAMS L J.Principal component analysis[J].Wiley Interdisciplinary Reviews:Computational Statistics,2010,2(4):433-459.

  [10] ZHANG X N,JIANG J,LIANG Z H,et al.Skin color en-hancement based on favorite skin color in HSV color space[J].Consumer Electronics,IEEE Transactions on,2010,56(3):1789-1793.


此内容为AET网站原创,未经授权禁止转载。