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

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

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

上,因此,可以对不同手势和外接多边形建立一个一一映射的关系;通过建立不同手势的外接多边形特征库,对分割出来的手势作多边形拟合,只要将提取出来的多边形与特征库中的外接多边形进行匹配就能判断出手势的类型。

本文提出的手势识别方法主要包括三个部分:

a)手势分割。将手部区域从场景中分割出来,并对手部的区域和轮廓进行提取。这里的手部区域主要根据c)跟踪的结果提供。

b)手势图像的外接多边形拟合以及匹配部分。对a)提取出来的手势轮廓作多边形拟合,分析多边形的形状特点,并在特征库中查找与拟合的多边形特征相符合的对象,再映射到具体的手势。

c)手势跟踪部分。根据颜色信息对手的区域进行定位,并对图像进行空间转换,利用统计原理对下一帧手可能出现的区域进行预测,并将预测的结果反馈给a)的手势分割部分。

手势识别流程如图1所示。

2手势识别框架

手势识别主要由静态手势的识别和手势跟踪两部分的工作组成,手势识别框架结构如图2所示。在本文提出的方法中,采用了将这两部分的工作进行并行处理的方式,手势识别的结果传递给跟踪部分,作为跟踪的对象,并且手势跟踪的预测结果反馈给识别部分,将为静态手势识别提供ROI图像区域。这样不仅能有效地提高跟踪的高效性,还能提高识别的准确性,将这两个部分有效地统一起来。

2.1静态手势识别

通过静态手势的识别,使系统能够对被跟踪对象有一个基本的理解,为实现自动跟踪初始化与跟踪的自动恢复奠定了基础。首先,手部区域需要从场景中分割出来。本文采用一种基于模糊集和模糊运算的方法进行手的区域和轮廓提取,通过对视频流中空域和时域上的背景、运动、肤色等信息执行模糊运算,分割出精确的人手。

静态手势的识别是基于轮廓特征的识别,对分割出来的人手作边缘检测,得到手势完整的轮廓边缘。通过前面的模糊集合运算,能得到图像的手势分割的二值图。两个具有不同灰度值的相邻区域之间总存在边缘。边缘是灰度值不连续的结果,这种不连续可利用求导方便地检测出来。

这样就能得到完整的轮廓边缘。如图3所示,左边为手部区域,右边为手势的轮廓。

接下来是对提取的手势轮廓作外接多边形拟合。KenjiOka和YoichiSato的指尖搜索方法是首先在一个较大的搜索窗口内扫描确定20个候选指尖位置,然后再对匹配度最大的候选位置周围的候选进行抑制,同时按一定规则去除位于指尖中间的部分候选。该方法由于需要对搜索区域进行多次逐像素的扫描,造成计算量较大,而且除去手势中部候选位置的方法的鲁棒性较差。文献[5]给出了通过遍历手势轮廓的曲率来进行之间位置搜索的方法,通过对手势按轮廓顺序进行定长扫描的方法,可以找出指尖并做出轮廓线的外接多边形。但是这种查找方式需要遍历轮廓线的每个点,而且对每个点还需要作除法运算,这使得算法的计算量太大,而且在搜索指尖时,当受到光线变化使得轮廓线出现很多突起的边缘时,使得识别工作出现困难。本文提出了一种查找外接边的搜索方法,通过对手势轮廓按轮廓点顺序进行定长扫描,将手势轮廓线的外接多边形拟合出来,同时将满足定义1的手势轮廓外接凸边形缺陷结构设为手势识别的判断特征。

2.1.1手势缺陷图

定义1手势缺陷图是指由手势轮廓线外接多边形以及多边形各条边所对应的谷底(depthpoint)所组成的特征描述方程。谷底是指外接多边形的边与该边所对应的轮廓线上距离边最远的轮廓点。定义手势缺陷图的数据结构如下:

TypedefstructCvConvexityDefect{

CvPoint*start;//缺陷开始的轮廓点

CvPoint*end;//缺陷结束的轮廓点

CvPoint*depth_point;//缺陷中距离凸性最远的轮廓点

Floatdepth;//谷底距离凸性的深度

}CvConvexityDefect;

如图4所示,手势轮廓缺陷图能很好地描述各种手势,通过对手势轮廓线外接多边形的边数以及边所对应的谷底深度,可以将手势缺陷图映射到不同的手势。其中A、B、C、D、E、F、G为手势轮廓线的外接多边形的各条边,Da、Db、Dc、Dd、De、Df、Dg为手势缺陷图中的谷底到对应边的深度。

为了得到手势轮廓缺陷图,首先必须对手势轮廓进行多边形拟合,得出它的外接多边形。本文提出了一种根据手势轮廓上相邻两点间的凹凸性来进行拟合,通过一次遍历轮廓上的点,对以下方程进行判定,将适当的点剔除,剩下的点即为外接多边形的候选定点:

by=nexty-cury(1)

ay×bx-ax×by(2)

ax=pcur.x-pprev.x,ay=pcur.y-pprev.y

bx=pnext.x-pcur.x,by=pnext.y-pcur.y

其中:pcur为当前遍历的轮廓线上的点;pprev、pnext分别表示当前点的前一个点和后一个点;ax、ay分别

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

网站地图

Top