新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于嵌入式系统实时交互的手势识别方法

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

作者: 时间:2012-05-08 来源:网络 收藏

2.1静态

本文引用地址:https://www.eepw.com.cn/article/149117.htm

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

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

这样就能得到完整的轮廓边缘。如图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分别为当前点和前一点的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所示。

图5 手势以及对应缺陷图

根据多边形的边数以及各条边的程度可以确定手指的数量,而谷底的深度和位置可以确定手指的关系和位置。由于这是根据手势的整体图像来进行分析,所以具有一定的鲁棒性,当光线变化而导致手势图出现差别时,并不会导致手势缺陷图的变化。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭