基于嵌入式系统实时交互的手势识别方法
2.2手势跟踪
对于手部跟踪,主要是基于Camshift算法实现的,它综合利用了手势图像的颜色、区域和轮廓特征。Camshift是Mean.Shift算法的推广,是一种有效的统计迭代算法,它使目标点能够漂移到密度函数的局部最大值点。Camshift跟踪算法是基于颜色概率模型的跟踪方法,在建立被跟踪目标的颜色直方图模型后,可以将视频图像转换为颜色概率分布图,每一帧图像中搜索窗口的位置和尺寸将会被更新,使其能够定位跟踪目标的中心和大小。本文中,Camshift算法被用于位置的粗定位,即确定当前手势区域的外包矩形Rect,如图6所示。

Rect将被用于前一步静态手势识别的输入图像,以便减少对图像的分割以及模糊运算的工作量。
本文在Linux系统下实现了本文提出的基于手势轮廓缺陷图进行手势识别的方法,并在嵌入式之星开发板上实现了手势识别的人机交互演示系统。系统处理器800MHz,存储器RAM256MB,实时采集640×480的真彩色图像。该系统分析摄像头实时捕获到的每一帧图像,对图片中的手势进行实时识别。系统的应用程序是一个基于手势识别的拼图游戏,通过变换手势来完成拼图。可识别的静态手势状态被分为五类:A为握拳、B为食指伸长、C为V型手势、D为中间三指伸开、E为五指张开。A、E手型分别对应抓取与松开。手势为握拳状态时,手对应的图片块被选中(类似鼠标左键按下),此时可以拖动图片,选定位置后可以换成手势E,图片将被松开(类似鼠标左键松开),B、C、D手势分别表示将图片放大、缩小和旋转。
演示系统效果如图7所示。

图7演示系统效果
4实验结果及分析
为了检验本文算法的准确性和实时性,本文在实验室光照条件下,采集不带任何特殊标记的手势单目视频图像。实验中参数设置如下:Camshift算法的最大迭代次数为10;手势分割使用的HSV颜色空间如表1所示。
表1HSV颜色空间设置

对手势二值图像所做的数学形态学操作使用3×3的模板做开运算,使用5×5的模板做闭运算;噪声手势的域值设为0.01.手势的跟踪过程无人工干预。
表2给出了五种手势的识别率与匹配成功率。匹配成功率是指在正确识别出手势类型的情况下,按照2.2节给出的匹配方法将手势轮廓缺陷图的特征与手势类型进行匹配的成功比率。
表2手势识别匹配率

表3给出本文方法与其他方法的比较结果。与其他手势识别方法比较,本文提出的方法有相当的识别率,还实现了手势跟踪的结果对识别的反馈,并在实时性方面满足嵌入式系统的需求(20~25fps),明显好于文献[7](一种面向实时交互的变形手势跟踪方法,18fps)和目前流行的HandVu的识别效率。
表3手势识别算法比较

鲁棒性方面,由于本文采用了模糊运算,图像模糊分割的准确率达到96.4%,对环境的变化具有很好的抗干扰性。即使背景有人的走动造成环境和光线的剧烈变化,也不会对手势轮廓缺陷图造成太大的影响。
5结束语
本文针对人机交互领域基于视频手势在嵌入式系统上的实时交互任务提出一种快速、计算量小的手势识别方法。它结合了基于模型与基于表观方法的特点,是建立在对目标对象-手势的理解基础上,通过识别静态手势实现了手势的跟踪与识别。与传统的手势识别系统不同,它在注重识别效果的同时还要注重算法的计算复杂度。通过使用手势轮廓缺陷图作为手势识别的特征结构,不仅大大减少了计算量,由于缺陷图是从整体结构刻画手势的结构,所以它还增强了手势识别的鲁棒性。实验表明本文提出的方法可以满足交互的实时性要求,能很好地用于手势交互的应用系统。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论