《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于不变矩和支持向量机的手势识别
基于不变矩和支持向量机的手势识别
来源:微型机与应用2012年第6期
董立峰, 阮 军, 马秋实, 汪 雷
(武汉理工大学 信息工程学院, 湖北 武汉430070)
摘要: 选取Hu不变矩、手势轮廓的凹陷个数及其周长与面积比为手势识别的主要特征,采用了基于径向基核的SVM分类器进行0~9 十种手势的识别。实验结果表明,在背景单一、光照情况良好条件下,该方法具有很高的识别率,并且简单快速。
Abstract:
Key words :

摘  要: 选取Hu不变矩、手势轮廓的凹陷个数及其周长与面积比为手势识别的主要特征,采用了基于径向基核的SVM分类器进行0~9 十种手势的识别。实验结果表明,在背景单一、光照情况良好条件下,该方法具有很高的识别率,并且简单快速。
关键词:手势识别;Hu矩;支持向量机

   手势识别[1]、人脸识别、指纹识别和唇读识别等都是符合人际交流习惯的备受关注的人机交互技术,在计算机辅助哑语教学、电影特技处理、医疗研究和智能机器人等各个领域均有广泛的应用。其中,基于计算机视觉的手势识别因其设备成本低廉、操作自然方便等特点越来越受到人们的追捧,是手势识别未来的发展趋势。然而,人手的自由度和弹性、背景、光照以及噪声等因素给手势识别带来了很大困难,如何克服这些困难以获得更加自然、和谐、完善的手势识别系统是当今人们研究的目标。
    手势特征选取和分类器设计一直是影响手势识别效果及速度的两个关键问题。良好的特征应具有可靠性、可区别性、数量少以及独立性强等特点,比较常用的特征提取方法有Hu矩[2]、Zernike矩、傅里叶轮廓矩和小波矩等。其中,Zernike矩的优势是能够构造任意的高阶矩,对噪声不敏感,主要用于图像恢复;傅里叶描述子具有较好的轮廓描述能力,但对细节特征非常敏感,误识率比较高;小波矩虽然能达到很高的识别率但需首先对图像进行归一化处理,计算比较复杂。本文的仿真实验在背景单一、光照情况良好的条件下进行,选择了能同时满足平移、旋转和比例不变性的Hu不变矩、手势轮廓的凹陷个数以及其周长与面积比为作为主要的特征参数。
    目前,基于视觉的手势识别算法研究主要有通过计算模板的相关系数来进行模板匹配的手势识别、用神经网络方法进行手势识别以及基于Euclidean距离的手势识别等。支持向量机[3]是基于结构风险最小化的一种新的模式识别方法,在解决小本、非线性及高维模式识别问题中具有许多特有的优势。本文在对手势轮廓进行Hu不变矩特征提取的基础上设计了支持向量机分类器,对分类器进行训练和测试,实验结果证明,系统具有很高的识别率。
1 特征的选择
1.1 不变矩理论及参数选择

    矩的定义源于概率理论,是一种重要的数字特征,同时也具有直观的物理意义。手势图像函数f(x,y)的(p+q)阶原点矩(也称普通矩)定义为:
 

    手势轮廓的凸包和凹陷可用于描述手势的形状,由于文中自定义的10个手势各具形态,手指的数目不尽相同,手势的凸包和凹陷也是不同的,它们能很好地体现手以及手状态的特征,因此考虑提取手势的凹陷点数目作为手势的特征向量。其计算方法是首先计算轮廓是否为凸,再计算其连接凸包的外接多边形并提取出来,根据外接多边形计算凹陷点个数,如图1所示。本文选取手势轮廓的凹陷个数作为第5个特征参数N5。
    手势轮廓的周长定义为手势轮廓在手势矩形区域内包含的像素总数,通过扫描手势轮廓图中的手势矩形区域,计算黑色点个数即可算出周长。手势轮廓的面积定义为轮廓部分和起始点连线构成的封闭部分的面积,其值受轮廓方向的影响有可能为负值。本文构造轮廓的周长与面积之比作为第6个特征参数N6。
1.2 特征值提取
    在本文设计的基于计算机视觉的手势识别系统中,首先以帧为单位对摄像头采集到的手势视频采用了图像平滑、色彩空间转换、图像二值化、边缘检测、轮廓提取以及形态学处理等算法进行图像预处理以获得手势的二值化图像、边缘图像以及轮廓矩阵,然后分别对每帧手势轮廓进行Hu矩、轮廓周长面积比和凹陷个数等的运算,得到各个手势的特征值。图2所示为样本视频进行训练时提取到的0~9手势轮廓样本。

    表1列出了手势轮廓的Hu矩前4个矩M1~M4、轮廓周长面积比N5和凹陷个数N6的特征值,它们都是对学习视频中所有帧数的手势轮廓分别求特征值并计算平均值得到的。这里的识别率为0~9每一种手势于视频模式下分别对5组测试视频进行检测,然后对分别获得的识别率求平均值获得的。其中,9的识别率偏低是由于其手势轮廓与3相近,容易造成分类时的判断错误。

2 支持向量机
2.1基本原理

    SVM是统计学习理论中最年轻的部分,主要用于解决有限样本情况下的模式识别问题。它的基本思想是在样本空间或特征空间构造出最优超平面,使超平面与小同类样本集之间的距离最大,从而达到最大的泛化能力。算法思路如下:


    在这4种核函数中,本文选取了RBF核函数,因为在低维、高维、小样本和大样本等情况下,RBF核函数均适用,具有较宽的收敛域,是较为理想的分类依据函数。
2.3参数最优化选择
    核函数的参数和误差惩罚因子C是影响支持向量机性能的关键因素。C用于控制模型复杂度和逼近误差的折中,C越大则对数据的逼近误差越小,同时模型也会越复杂,支持向量机的推广能力也变得越差。RBF中的?滓用于控制回归逼近误差的大小,从而控制支持向量机的个数和泛化能力,其值越大则支持向量数目变少,同时精度变差;相反,则支持向量数目变多,精度变高。
    寻找最佳的(C,γ)参数组使该SVM的性能最好,最简单的方法是分别选取不同的参数组合,得出不同的错误率,选取其中错误率最小的参数组合作为最优化选择,这种方法也叫做“穷举法”。本文采用了台湾林智仁教授开发的libsvm支持向量机库中的工具“grid.py”进行了参数的优选,该工具是采用网格遍历法,由gnuplot生成的搜索结果显示出最小错误率时的参数,即最优参数为(8.0,0.5)。
3 仿真实验
    本文设计的手势识别系统采用了C语言、Code::Blocks开发平台、OpenCV2.3.1[4]计算机视觉开源库和35万像素摄像头。该系统主要包括手势跟踪、手势图像预处理、特征提取和手势识别4个部分。系统框图如图3所示。

    本系统的程序整体框架分为学习模式和识别模式,识别模式包括视频文件识别模式和摄像头识别模式。处于学习模式时,通过读取配置的手势视频文件获取学习模板,对每一帧图片进行滤波、阈值分割和轮廓提取等预处理得到手势轮廓图像,获取手势轮廓的Hu矩和其他特征参数,训练特征参数后并保存,生成相应的判别界面函数。视频文件识别模式通过对每一帧图片进行预处理和特征参数提取后调用svmPredict函数进行分类预测,结果显示在屏幕上。处于摄像头模式时,首先读取摄像头采集的图像,设置鼠标事件和界面窗口,选定跟踪目标的区域和大小,计算目标区域的色彩直方图和反射投影。本文选取了传统的Camshift跟踪算法用于跟踪目标并提取跟踪窗口的目标,对跟踪目标图片进行预处理并计算特征参数,最后进行手势识别并显示识别结果。程序运行的最后均要释放资源。
    图4为摄像头模式下手势识别的截图,图中实时显示出了手势的外接矩形、外接多边形、手势轮廓、直方图和识别率等信息。

    本文开发的基于Hu矩和SVM的手势识别系统能够实现在视频模式和摄像头模式下对0~9十种手势的实时识别,但光照条件要求相对比较高,人手与摄像头需要保持在一定的距离范围内。目前只选择了Hu矩中的M1~M4、手势轮廓的凹陷个数N5以及周长与面积的比N6作为特征参数,如何选取更好的特征参数以提高系统识别性能需要进一步研究。
参考文献
[1] 任雅祥.基于手势识别的人机交互发展研究[J].计算机工程与设计,2006,27(7):1201-1204.
[2] FLUSSER J, SUK T, ZITOWA B. Moments and moment invariants in pattern recognitong[M]. Chichester: John Wiley  & Sons Ltd, 2009.
[3] 罗瑜.支持向量机在机器学习中的应用研究[D]. 成都:西南交通大学,2007.
[4] LAGANI?魬RE R. OpenCV 2 Computer vision application programming cookbook[M]. Birmingham: Packt Publishing Ltd, 2011.

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