微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 基于嵌入式系统实时交互的手势识别

基于嵌入式系统实时交互的手势识别

时间:05-07 来源:互联网 点击:

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

  演示系统效果如图7 所示。

  4 实验结果及分析

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

表1 HSV 颜色空间设置

  对手势二值图像所做的数学形态学操作使用3 × 3 的模板做开运算,使用5 × 5 的模板做闭运算; 噪声手势的域值设为0. 01.手势的跟踪过程无人工干预。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top