基于嵌入式系统实时交互的手势识别方法
为当前点和前一点的x和y坐标值差;bx、by分别为当前点和后一点指尖的x和y坐标值差。
基于轮廓线凹凸形的拟合算法流程如下:
a)将所有的轮廓线上的点按x坐标值大小排序,并找出所有的点中y坐标的最大最小值maxY和minY.
b)将排序后的轮廓点划分为四部分:首先按照y坐标将轮廓线分为上下两个部分,将上半部分以maxY所在的x坐标(记为Xmaxy)划分为两个部分,分别记为topLeft〈左上〉和topRight〈右上〉;将下半部分以minY所在的x坐标(记为Xminy)划分为两个部分,分别记为bottomLeft〈左下〉和bottom-Right〈右下〉。
c)分别对前一步划分的四个部分(topLeft,topRight,bottomLeft,bottomRight)进行遍历:对区域topLeft将满足式(1)0,式(2)>0的点剔除;对区域TopRight将满足(1)0,式(2)0的点剔除;对区域bottomLeft将满足式式(1)>0,式(2)>0的点剔除;对区域bottomRight将满足式(1)>0,式(2)>0的点剔除。剔除后剩下的点即为手势轮廓线外接多边形的顶点。
手势缺陷图的谷底以及谷底深度的求解是建立在拟合外接多边形基础上,还需要对外接多边形的每条边所对应的轮廓线再进行一次遍历,并将满足以下方程的最大值求出即是该边所对应的谷底:
其中:scale为单位化量值;hull_cur和hull_next分别为外接多边形当前遍历的边和下一条边;dx0、dy0分别为外接多边形当前边的x和y坐标的差值;dx、dy分别为当前遍历的轮廓线上的点与hull_cur点之间x和y坐标的差值;depth为遍历点与对应边之间的距离,它的最大值即为该边对应的谷底深度,相应的点为谷底。
通过以上搜索可以将手势轮廓缺陷图的特征值找出来,接下来便可以将缺陷图的特征值(多边形与谷底的关系)与已建立的库中的特征值相比较,对手势进行匹配,将手势轮廓缺陷图映射到不同的手势上去。
2.1.2手势匹配
手势的匹配主要是基于手势缺陷图的匹配,手势缺陷图的特征值由外接多边形以及谷底的位置和深度组成,如图5所示。
根据多边形的边数以及各条边的程度可以确定手指的数量,而谷底的深度和位置可以确定手指的关系和位置。由于这是根据手势的整体图像来进行分析,所以具有一定的鲁棒性,当光线变化而导致手势图出现差别时,并不会导致手势缺陷图的变化。
2.2手势跟踪
对于手部跟踪,主要是基于Camshift算法实现的,它综合利用了手势图像的颜色、区域和轮廓特征。Camshift是Mean.Shift算法的推广,是一种有效的统计迭代算法,它使目标点能够漂移到密度函数的局部最大值点。Camshift跟踪算法是基于颜色概率模型的跟踪方法,在建立被跟踪目标的颜色直方图模型后,可以将视频图像转换为颜色概率分布图,每一帧图像中搜索窗口的位置和尺寸将会被更新,使其能够定位跟踪目标的中心和大小。本文中,Camshift算法被用于位置的粗定位,即确定当前手势区域的外包矩形Rect,如图6所示。
Rect将被用于前一步静态手势识别的输入图像,以便减少对图像的分割以及模糊运算的工作量。
3手势交互演示系统
本文在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给出本文方法与其他方法的比较
手势 识别 方法 交互 实时 嵌入式 系统 基于 相关文章:
- 基于FPGA的手势语音转换器(06-04)
- Android三种左右滑动效果 手势识别(09-12)
- 图片操作的手势动态识别系统(01-15)
- 简单手势唤醒便携设备的设计思路及其代码(07-12)
- 七个基本触摸屏控制手势,全部开放还是侵犯专利?(05-24)
- 基于TMS320VC5509A的语音识别与控制系统(06-17)