首页> 中国专利> 基于手指轮廓和决策树的静态手势识别方法

基于手指轮廓和决策树的静态手势识别方法

摘要

本发明公开了一种基于手指轮廓和决策树的静态手势识别方法。该方法首先使用Kinect的深度图像作为数据源,通过Kinect骨骼追踪功能定位手掌的大致坐标,以该坐标为中心截取出包含手掌的一块正方形区域;然后使用自适应邻近值法对该区域进行前景检测,对前景图像进行适当的图像形态学处理后,检测手掌轮廓;接着使用圆周序列曲线对手掌轮廓进行建模,利用极值点对法准确地区分出各个手指轮廓和手腕轮廓并建立手势特征集;最后使用多个决策树针对不同手指个数的手势特征集分别进行训练以及识别。

著录项

  • 公开/公告号CN103971102A

    专利类型发明专利

  • 公开/公告日2014-08-06

    原文格式PDF

  • 申请/专利权人 南京大学;

    申请/专利号CN201410217546.2

  • 发明设计人 路通;胡炜;

    申请日2014-05-21

  • 分类号G06K9/00(20060101);

  • 代理机构32237 江苏圣典律师事务所;

  • 代理人胡建华

  • 地址 210023 江苏省南京市栖霞区仙林大道163号南京大学

  • 入库时间 2023-12-17 00:55:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-06-02

    未缴年费专利权终止 IPC(主分类):G06K 9/00 专利号:ZL2014102175462 申请日:20140521 授权公告日:20170201

    专利权的终止

  • 2017-02-01

    授权

    授权

  • 2014-09-03

    实质审查的生效 IPC(主分类):G06K9/00 申请日:20140521

    实质审查的生效

  • 2014-08-06

    公开

    公开

说明书

技术领域

本发明涉及计算机视觉的图像处理方法,特别是一种从深度图像中采用基于 手指轮廓和决策树的静态手势识别方法。

背景技术

静态手势识别的研究重点对象是手的姿态和单个手形,通常是基于视觉的2D 手势识别,通过颜色、深度或运动将手部区域分割出来,再对之进行各种特征提 取,然后训练分类器,最后进行测试。最简单的静态手势识别系统,即通过寻找 有几个指头来区分数字手势,无需设计分类器,但对复杂手形识别无效。目前常 用的可对复杂手形进行识别的算法包括基于模板匹配的方法、基于神经网络的方 法等。

模板匹配是一种最原始、最基本的模式识别方法,也是常用的静态手势识别 方法。当识别对象以图像的形式表现时,根据该对象与预先建立的一组手势模板 库中的模板逐一比较,得到与之相似度最大的模板,得出被测手势即属于该模板 所属类别的方法,叫做模板匹配。这种方法的缺点是当模板库较大值,该方法的 识别速度会较慢。基于神经网络的方法具有分类特性及抗干扰性,具有自组织和 自学习能力,具有分布性特点,能有效抗噪声和处理不完整的模式以及具有模式 推广能力。该方法的特点是需要进行大量的实例学习。

发明内容

发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基 于手指轮廓和决策树的静态手势识别方法,从而针从Kinect的深度图像快速准 确地识别出静态手势。

为了解决上述问题,本发明公开了一种基于手指轮廓和决策树的静态手势识 别方法,包括以下步骤:

步骤1:获取Kinect的深度图像及使用Kinect for Windows SDK中的骨骼追 踪技术获取手掌心坐标S0,同时以掌心坐标S0为中心截出一块包含手掌图像的 正方形区域;

步骤2:采取自适应邻近值法对深度图像进行分割,以取得精确的手掌轮廓 和手腕的大概方位,然后对手掌轮廓进行图像形态学处理以降低手掌轮廓的细节;

步骤3:对手掌轮廓进行椭圆拟合,以椭圆圆心为轮廓的几何中心S1,建立 圆周序列曲线,求出圆周序列曲线上的所有极大值和极小值,并使用一个极大值 和左右各一个极小值构成极值点对;

步骤4:求极值点对内的所有轮廓点,通过计算每个轮廓点的梯度排除掉不 合适的轮廓点,剩下的部分便是手指轮廓或是手腕轮廓;

如果步骤2获取了手腕的大概方向,那么所在方向的轮廓便是手腕轮廓,如 果步骤2未曾获取手腕轮廓,那么比较各轮廓的宽度,取其中宽度最大的且比任 何其他的轮廓宽度均大两倍以上的为手腕轮廓;

从手掌轮廓内减去所有的手指轮廓和手腕轮廓,对剩下的手掌轮廓进行椭圆 拟合,取椭圆圆心为手掌中心S2

步骤5:求出各手指的宽度、长度、面积、夹角、指尖之间的欧几里德距离、 指根之间的欧几里德距离、指中心之间的欧几里德距离以及指尖到手掌中心S2的欧几里德距离作为特征向量建立特征集;

步骤6:针对相同手指个数的手势使用决策树对特征向量进行训练,这样便 会产生多个决策树,在识别的时候先比较手指个数,然后再使用相应的决策树进 行分类。

本发明步骤2中,邻近值法指利用掌心坐标及其深度信息,使用一个先进先 出队列Q进行前景检测,从而把前景手掌提取出来。具体执行过程如下:先将 所有像素点置为白色,掌心坐标S0因为已被发现,所以设为源像素,置为灰色 同时入队。只要队列不为空,就循环执行出队操作,对于每一个出队的像素点 Pij如果Pij与掌心坐标S0的深度值之差不超过Threshold,则将该像素置为黑色, 否则置为白色。如果为黑色则计算该像素Pij的深度值及与其曼哈顿距离为1的 所有白色像素Pwhile的深度值之差,其中差不超过1的就将Pwhile设为灰色Pgray同时入队列。当队列为空时,算法终止,标为黑色的像素便是前景像素。

自适应邻近值法指不强行规定Threshold应该取何值,每次进行前景检测时 Threshold的值先从3开始取,然后依次递增分别使用邻近值法获取前景图像, 当连续两次进行前景检测所得前景图像差别已经不大时,表明已经趋向于稳定, 算法终止,Threshold的值不用再递增。取已经稳定的前景图像与上一次并未稳 定的前景图像之差,这个差值图像里最大的一块区域便是手腕的位置。

在取出手掌前景图像后,对前景图像进行形状学处理。具体是指:先对图像 作腐蚀操作,然后再做膨胀。这个处理是为了减少图像轮廓的细节。

本发明步骤3中,对手掌轮廓进行椭圆拟合,以椭圆圆心为轮廓的几何中心 S1,然后使用圆周序曲线来表示手掌轮廓。圆周序列曲线是手指轮廓的另一种表 示形式,它在X轴上的360个刻度,Y轴表示手掌轮廓上各角度X的点距手掌 几何中心S1的最大欧几里德距离(同一角度下可能存在几个轮廓点的情况,取 其中距离最大的一个)。圆周序列曲线的意义是将整个手掌轮廓以几何中心S1进 行360度展开。

使用极值点对法对圆周序列曲线上的点进行运算,求出所有的极大值点和极 小值点作为候选极大值点和候选极小值点。对于这些候选极值点,通过以下条件 进行逐个筛选:

(1)对于相连的几个极大值点,取出其中最大的一个;

(2)两个极大值点之间有且只有两个极小值点,如果大于两个,则将中间 的候选极小值点删掉,留下两边的,如果只有一个,则复制一个跟它一样的极小 值点;

(3)将一个极大值点和紧帖在它两边的两个极小值点组成一组极值点对, 每组极值点对为一根候选手指或候选手腕,计算各组点对中极大值与极小值的平 均差,对于平均差较小的点对,属于干扰点对,从候选手指中删除。

本发明步骤4中,取出极值点对中所包含的所有轮廓点,以极大值点为 中点分为左右两部分,对左边部分上的每一个轮廓点求它的梯度方向上的直线是 否能与右边部分相交,如果不相交,则该轮廓点作为孤立点从手指轮廓或手腕轮 廓中剔除;取对右边部分上每一个轮廓点求它的梯度方向上的直线能否与左边部 分相交,如果不相交,则该轮廓点作为孤立点从手指轮廓或手腕轮廓中剔除;在 删除两头部分孤立点之后,取剩下的轮廓为手指轮廓或手腕轮廓。之所以进行梯 度运算是因为极值点对所求出的结果会带有一些多余的部分,这多出的部分会影 响手指的形状,以至于影响最终的结果。

本发明步骤5中,选取以下特征用于训练器的学习与分类:

(1)各手指的宽度值。手指的宽度(FingerWidth)为使用椭圆对手指轮廓 进行拟合所得到的短轴长。拟合后的椭圆使用类MCvBox2D表示,因此有:

FingerWidth=MCvBox2D.Size.Width

其中类McvBox2D来自于EmguCV,EmguCV是一个开源的计算机视觉库, 如果该类所表示的是一个椭圆,那么McvBox2D.Size.Width指椭圆的短轴长。

(2)各手指的长度值。手指的长度(FingerLength)为指尖到两个指根中间 的距离。设Max表示指尖,Min表示指根,于是有FingerLength的值为:

((Maxk.X-Mink-1·X+Mink+1.X2)2+(Maxk.Y-Mink-1.Y+Mink+1.Y2)2)2

其中k指第k个极值,它的取值为1、4、7、10、13、16中的部分或全部, 皆表示极大值;而k-1和k+1则表示与其左右相连的极小值;

Maxk.X、Mink-1.X、Mink+1.X的表示极值k、k-1、k+1的横坐标,

Maxk.Y、Mink-1.Y、Mink+1.Y表示极值k、k-1、k+1的纵坐标。

(3)各手指轮廓区域的面积。将各手指轮廓的极小值轮廓点相连便是一个 闭合的区域,使用这个闭合的区域面积作为手指的面积。设手指轮廓序列为seq, 那么手指的面积(area)可使用EmguCV中的函数求出,即:

area=CvInvoke.cvContourArea(seq.Ptr,new MCvSlice(1,seq.Total),0)

其中CvInvoke.cvContourArea为EmguCv中用于计算轮廓面积的函数,seq.Ptr 表示轮廓序列的首地址,结构MCvSlice(1,seq.Total)指使用所有轮廓序列上的点 所包围的区域进行计算,参数0表示返回的是一个面积。

(4)相连手指的夹角以及与手腕相连手指到手腕的夹角。这个夹角(Angle) 指相连两根手指轮廓或手腕轮廓所拟合椭圆的长轴的夹角。即:

Angle=||MCvBox2Dm.angle-MCvBox2Dn.angle||,

结构McvBox2D来自于EmguCV,此处用于表示椭圆,m、n分别表示第m 个极值点对所表示的轮廓和第n个极值点对所表示的轮廓,MCvBox2Dm.angle指 第m个极值点对所表示的轮廓的倾斜角,MCvBoc2Dn.angle指第n个极值点对 所表示的倾斜角;m、n的取值范围为0-5且m≠n、|m-n|=1。

(5)两两手指间的间距。这个间距指两两手指指尖之间(TipSpa)、指根之 间(RootSpa)以及指中心之间(CenSpa)的欧几里德距离。它们的计算式分别 表示如下,其中center=MCvBox2D.center,有:

TipSpai,j=(tipi.X-tipj.X)2+(tipi.Y-tipj.Y)2,

RootSpai,j=(rooti.X-rootj.X)2+(rooti.Y-rootj.Y)2,

CenSpai,j=(centeri.X-centerj.X)2+(centeri.Y-centerj.Y)2,

其中i、j分别表示第i根手指和第j根手指;TipSpai,j、RootSpai,j、CenSpai,j分 别表示第i根手指和第j根手指指尖之间的欧几里德距离、指根之间的欧几里德 距离、指中心之间的欧几里德距离;tipi.X、tipj.X分别表示第i根手指和第j根 手指指尖的横坐标;tipi.Y、tipj.Y分别表示第i根手指和第j根手指指尖的纵坐 标;rooti.X、rootj.X分别表示第i根手指和第j根手指指根的横坐标; rooti.Y、rootj.Y分别表示第i根手指和第j根手指指根的纵坐标;centeri.X、 centerj.X分别表示第i根手指和第j根手指指中心的横坐标; centeri.Y、centerj.Y分别表示第i根手指和第j根手指指中心的纵坐标,i、j的 取值范围为0-4且i≠j。

(6)各手指距掌心距离。指各个手指的指尖tipr距手掌心S2的欧几里德距 离。其求法为:

Tippalm=(tipr.X-s2.X)2+(tipr.Y-s2.Y)2,

其中Tipplam指指尖距手掌中心的欧几里德距离;tipr.X、tipr.Y分别表示第r根 手指的横坐标和纵坐标;s2.X、s2.Y分别表示手掌中心的横坐标和纵坐标;r的 取值范围为0-4。

本发明步骤6中,使用手指轮廓所建立的特征集,所包含的特征向量的个数 依赖于手指的个数。单指特征向量有6个,包括手指的长度、手指的宽度、手指 的面积、指尖距掌心S2的距离、手指与手腕的左夹角、手指与手腕的右夹角; 双指、三指、四指、五指选取的特征包括手指的长度、手指的宽度、手指的面积、 指尖距掌心S2的距离、最左侧手指与手腕的左夹角、最右侧手指与手腕的右夹 角、指间夹角、两两指尖距、两两指根距、两两指中心距,因此有双指的特征向 量是14个,三指的特征向量是25个,四指的特征向量是39个,五指的特征向 量是56个。训练决策树时,需要分别针对不同的手指个数训练单指决策树、双 指决策树、三指决策树、四指决策树和五指决策树。在实际的使用过程中,需要 分以下几个步骤来进行:

(1)首先确定要识别的一套手势,然后将这套手势按手指的个数分到不同 的手势集合中,凡集合中所包含的手势超过一种,就需要建立相应的特征集,使 用决策树进行再分类。

(2)针对每一个建立出来的特征集单独训练一个决策树,有多少个特征集 便需要训练多少个决策树,因此这是一种多决策树的方法。

(3)在识别的过程中,先确定手指的个数,如果该个数的手势集中所包括 的手势不止一种,则使用相应的决策树进行再分类,否则要识别手势就是该手势 集中所包含的唯一手势,无需再分类。

有益效果:本发明是一种基于手指轮廓和决策树的静态手势识别方法,通过 使用圆周序列曲线对手指轮廓进行建模,所提取的手指轮廓的个数已经对静态手 势进行了初步的识别,然后针对不同的手指个数单独训练决策树用于更进一步的 识别,比其它使用模板匹配的方法更加快速。另外,本发明对于手势的旋转、手 势的朝向更加具有鲁棒性。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上 述和/或其他方面的优点将会变得更加清楚。

图1为本发明方法的基本流程图。

图2为十张深度图像进行识别的样例。

图3为前景检测后的二值图像。

图4显示了图3中第六张和第八张手掌图像的圆周序列曲线以及找到的极点 值。

图5为识别出的手指轮廓,并进行了标注。

图6为用于决策树进行学习分类所选取的特征在手掌图像上的表示。

图7为对图2中的十个手势进行识别的树形结构图。

具体实施方式:

本发明所述的一种基于手指轮廓和决策树的静态手势识别方法首先利用 Kinect的深度数据及骨骼追踪技术截出手掌区域,并使用自适应邻近值法进行前 景检测,并重新定位手掌心坐标。使用圆周序列曲线对手掌轮廓进行建模,计算 曲线上的极大值点和极小值点,构建极值点对,分割出各手指轮廓以及手腕的位 置。然后对具有相同手指个数的手势,通过提取手指特征采用决策树进行学习及 分类。针对不同的手指个数,本发明采用了不同的决策树,因此是一种多决策树 的分类方法。

下面结合附图对本发明做更加详细的解释:

步骤1:如图1所示,使用Kinect获取深度图像及及使用Kinect for Windows SDK的骨骼追踪技术获取手掌心坐标S0,关于骨骼追踪技术可参见“Microsoft, 2012.Microsoft>

步骤2:以掌心坐标S0为中心截出一块包含手掌图像的正方形区域。如图2 所示为十个截出的正方形区域,该区域包含了手掌的完整深度图像,这一组手势 的含义按顺序分别表示数字0、1、2、3、4、5、6、7、8、9。

步骤3:采取自适应邻近值法对深度图像进行分割,以取得精确的手掌轮廓 和手腕的大概方位,然后对手掌轮廓进行形状学处理。邻近值法的具体执行过程 如下:先将所有像素点置为白色,掌心坐标S0因为已被发现,所以设为源像素, 置为灰色同时入队。只要队列不为空,就循环执行出队操作,对于每一个出队的 像素点Pij如果Pij与掌心坐标S0的深度值之差不超过Threshold,则将该像素置 为黑色,否则置为白色。如果为黑色则计算该像素Pij的深度值及与其曼哈顿距 离为1的所有白色像素Pwhile的深度值之差,其中差不超过1的就将Pwhile设为灰 色Pgray同时入队列。当队列为空时,算法终止,标为黑色的像素便是前景像素。

本发明采用自适应邻近值法进行前景检测,自适应邻近值法指不强行规定 Threshold应该取何值,每次进行前景检测时Threshold的值先从3开始取,然后 依次递增分别使用邻近值法获取前景图像,当前景图像所包含的像素与上一次检 测所包含的前景图像像素个数相差少于10时,表明前景检测已经稳定,Threshold 的值不用再递增。取已经稳定的前景图像与上一次并未稳定的前景图像之差,这 个差值图像里最大的一块区域便是手腕的位置。图3为对图2采用自适应邻近值 法进行前景检测的结果。

在取出手掌前景图像后,对前景图像进行图像形态学处理。具体是指:先对 图像作腐蚀操作,然后再做膨胀,腐蚀操作与膨胀操作所使用的均是3×3的核, 这个处理是为了减少手掌图像轮廓的细节。然后使用EmguCV中的函数 cvFindContours寻找手掌轮廓,并用序列表示,这样便完成了手掌的检测

步骤4:对手掌轮廓进行椭圆拟合,椭圆拟使用采用EmguCV的函数 cvFitEllipse2,以椭圆圆心作为新的轮廓几何中心S1,建立圆周序列曲线。圆周 序列曲线是手指轮廓的另一种表示形式,它在X轴上的360个刻度,Y轴表示 手掌轮廓上各角度X的点距手掌几何中心S1的最大欧几里德距离(同一角度下 可能存在几个轮廓点的情况,取其中距离最大的一个)。圆周序列曲线的意义是 将整个手掌轮廓以几何中心S1进行360度展开。图4中的两张图展示了图3的 第六张图与第八张图的圆周序列曲线。

步骤5:使用极值点对法对圆周序列曲线上的点进行运算,求出所有的极大 值点和极小值点作为候选极大值点和候选极小值点。对于这些候选极值点,通过 以下条件进行逐个筛选:

(1)对于相连的几个极大值点,取出其中最大的一个;

(2)两个极大值点之间有且只有两个极小值点,如果大于两个,则将中间 的候选极小值点删掉,留下两边的,如果只有一个,则复制一个跟它一样的极小 值点;

(3)将一个极大值点和紧帖在它两边的两个极小值点组成一组极值点对, 每组极值点对为一根候选手指或候选手腕,计算各组点对中极大值与极小值的平 均差,对于平均差较小的点对,属于干扰点对,从候选手指中删除。

图4中圆周序列曲线上的白点为筛选之后剩下的极值点。

步骤6:取出极值点对中所包含的所有轮廓点,以极大值点为中点分为左右 两部分,对左边部分上的每一个轮廓点求它的梯度方向上的直线是否能与右边部 分相交,如果不相交,则该轮廓点从手指轮廓或手腕轮廓中剔除;对右边部分上 的每一个轮廓点求它的梯度方向上的直线是否能与左边部分相交,如果不相交, 则该轮廓点从手指轮廓或手腕轮廓中剔除;在删除两头部分孤立点之后,取剩下 的轮廓为手指轮廓或手腕轮廓。图5标出了对图3作圆周序列曲线,然后求极值, 进行梯度化处理后所得到的各个手指。之所以进行梯度运算是因为极值点对所求 出的结果会带有一些多余的部分,这多出的部分会影响手指的形状,以至于影响 最终的结果。

步骤7:如果步骤2获取了手腕的大概方向,那么所在方向的轮廓便是手腕 轮廓,如果步骤2未曾获取手腕轮廓,那么比较各轮廓的宽度,取其中宽度最大 的且比任何其他的轮廓宽度均大两倍以上的为手腕轮廓。

步骤8:从手掌轮廓内减去所有的手指轮廓和手腕轮廓,对剩下的手掌轮廓 进行椭圆拟合,取椭圆圆心为手掌中心S2

步骤9:选取以下特征用于训练器的学习与分类:

(1)各手指的宽度值。手指的宽度(FingerWidth)为使用椭圆对手指轮廓 进行拟合所得到的短轴长,如图6(a)中的距离1。拟合后的椭圆使用类 MCvBox2D表示,因此有:

FingerWidth=MCvBox2D.Size.Width

其中类McvBox2D来自于EmguCV,是一个开源的计算机视觉库,如果该 类所表示的是一个椭圆结构,那么McvBox2D.Size.Width指椭圆的短轴长。

(2)各手指的长度值。手指的长度(FingerLength)为指尖到两个指根中间 的距离,如图6(a)中的距离2。设Max表示指尖,Min表示指根,于是有 FingerLength的值为:

((Maxk.X-Mink-1·X+Mink+1.X2)2+(Maxk.Y-Mink-1.Y+Mink+1.Y2)2)2

其中k指第k个极值,它的取值为1、4、7、10、13、16中的部分或全部, 皆表示极大值;而k-1和k+1则表示与其左右相连的极小值;

Maxk.X、Mink-1.X、Mink+1.X的表示极值k、k-1、k+1的横坐标,

Maxk.Y、Mink-1.Y、Mink+1.Y表示极值k、k-1、k+1的纵坐标。

(3)各手指轮廓区域的面积。将各手指轮廓的极小值轮廓点相连便是一个 闭合的区域,使用这个闭合的区域面积作为手指的面积,如图6(a)中的面积4。 假设手指轮廓为seq,那么手指的面积(area)可使用Emgu中的函数求出,即:

area=CvInvoke.cvContourArea(seq.Ptr,new MCvSlice(1,seq.Total),0)

其中CvInvoke.cvContourArea为EmguCv中用于计算轮廓面积的函数,seq.Ptr 表示轮廓序列的首地址,结构MCvSlice(1,seq.Total)指使用所有轮廓序列上的点 所包围的区域进行计算,参数0表示返回的是一个面积。

(4)相连手指的夹角以及与手腕相连手指到手腕的夹角。这个夹角(Angle) 指相连两根手指轮廓或手腕轮廓所拟合椭圆的长轴的夹角。即:

Angle=||MCvBox2Dm.angle-MCvBox2Dn.angle||

结构McvBox2D来自于EmguCV,此处用于表示椭圆,m、n分别表示第m 个极值点对所表示的轮廓和第n个极值点对所表示的轮廓,MCvBox2Dm.angle指 第m个极值点对所表示的轮廓的倾斜角,MCvBoc2Dn.angle指第n个极值点对 所表示的倾斜角;m、n的取值范围为0-5且m≠n、|m-n|=1。

(5)两两手指间的间距。这个间距指两两手指指尖之间(TipSpa)、指根之 间(RootSpa)及指中心之间(CenSpa)的欧几里德距离,如图6(b)中的距离 1、2、3。它们的计算式分别如下,其中center=MCvBox2D.center,有:

TipSpai,j=(tipi.X-tipj.X)2+(tipi.Y-tipj.Y)2,

RootSpai,j=(rooti.X-rootj.X)2+(rooti.Y-rootj.Y)2,

CenSpai,j=(centeri.X-centerj.X)2+(centeri.Y-centerj.Y)2,

其中i、j分别表示第i根手指和第j根手指;TipSpai,j、RootSpai,j、CenSpai,j分 别表示第i根手指和第j根手指指尖之间的欧几里德距离、指根之间的欧几里德 距离、指中心之间的欧几里德距离;tipi.X、tipj.X分别表示第i根手指和第j根 手指指尖的横坐标;tipi.Y、tipj.Y分别表示第i根手指和第j根手指指尖的纵坐 标;rooti.X、rootj.X分别表示第i根手指和第j根手指指根的横坐标; rooti.Y、rootj.Y分别表示第i根手指和第j根手指指根的纵坐标;centeri.X、 centerj.X分别表示第i根手指和第j根手指指中心的横坐标; centeri.Y、centerj.Y分别表示第i根手指和第j根手指指中心的纵坐标,i、j的 取值范围为0-4且i≠j。

(6)各手指距掌心距离。指各个手指的指尖tipr距手掌心S2的欧几里德距 离。其求法为:

Tippalm=(tipr.X-s2.X)2+(tipr.Y-s2.Y)2,

其中Tippalm指指尖距手掌中心的欧几里德距离;tipr.X、tipr.Y分别表示第r根 手指的横坐标和纵坐标;s2.X、s2.Y分别表示手掌中心的横坐标和纵坐标;r的 取值范围为0-4。

步骤10:使用手指轮廓所建立的特征集,所包含的特征值的个数依赖于手 指的个数。如图7所示,将例子中的十个手势分成了6个集合,其中集合1、4、 6所包含的手势个数超过1个,需要建立特征集并使用决策树对特征集进行训练。 关于决策树的具体内容可参见“Quinlan J R.Induction of decision trees[J].Machine learning,1986,1(1):81-106.”。在实际的使用过程中,需要分以下几个步骤来进行:

(1)首先确定好要识别的一套手势,如图2所示的十个手势,然后将这十 个手势按手指的个数分到6个手势集合中,集合1、4、6中存在的手势个数分别 为2、3、2均超过一种,需要建立相应的特征集。集合1中包含的都是三指手势, 其特征向量个数为25个;集合4中包含的是双指手势,其特征向量的个数为14 个;集合6中包含的都是单指手势,其特征向量的个数为6个。

(2)针对以上三个特征集分别训练三指决策树、双指决策树和单指决策树。 在训练过程中,共使用了八个人的手势数据,每人对需要训练的单指、双指、三 指手势集共8个手势分别做动作,每个手势大概采集2000-3000帧数据,包括 手掌正对及背对Kinect摄像头,做动作时手掌左右摆动。

(3)在识别的过程中,先确定手指的个数,如果该个数的手势信可所包括 的手势不止一种,则使用相应的决策树进行再分类,否则要识别手势就是该个数 下所包含的唯一手势,无需再分类。如果要识别的手势是数字5时,先识别手指 个数,将它划归到手势集合2中,因为集合2只有一种手势,因此数字5即是集 合2中所包含的唯一手势,识别结束。当要识别的手势是数字2时,因为手指个 数是2,所以它被分到集合4中,由于集合4中有三种手势,于是使用二指决策 树对该手势所建立的特征进行再分类,得出最终的结果。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号