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

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

Info

Publication number
CN103971102B
CN103971102B CN201410217546.2A CN201410217546A CN103971102B CN 103971102 B CN103971102 B CN 103971102B CN 201410217546 A CN201410217546 A CN 201410217546A CN 103971102 B CN103971102 B CN 103971102B
Authority
CN
China
Prior art keywords
finger
profile
point
palm
decision tree
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201410217546.2A
Other languages
English (en)
Other versions
CN103971102A (zh
Inventor
路通
胡炜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN201410217546.2A priority Critical patent/CN103971102B/zh
Publication of CN103971102A publication Critical patent/CN103971102A/zh
Application granted granted Critical
Publication of CN103971102B publication Critical patent/CN103971102B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Analysis (AREA)

Abstract

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

Description

基于手指轮廓和决策树的静态手势识别方法
技术领域
本发明涉及计算机视觉的图像处理方法,特别是一种从深度图像中采用基于手指轮廓和决策树的静态手势识别方法。
背景技术
静态手势识别的研究重点对象是手的姿态和单个手形,通常是基于视觉的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的值为:
( ( Max k . X - Min k - 1 · X + Min k + 1 . X 2 ) 2 + ( Max k . Y - Min k - 1 . Y + Min k + 1 . Y 2 ) 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,有:
TipSpa i , j = ( tip i . X - tip j . X ) 2 + ( tip i . Y - tip j . Y ) 2 ,
RootSpa i , j = ( root i . X - root j . X ) 2 + ( root i . Y - root j . Y ) 2 ,
CenSpa i , j = ( center i . X - center j . X ) 2 + ( center i . Y - center j . 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的欧几里德距离。其求法为:
Tip palm = ( tip r . X - s 2 . X ) 2 + ( tip r . Y - s 2 . 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 msdn.kinect for windows sdk v1.8online help[j].http://msdn.microsoft.com/en-us/library/microsoft.kinect.jointtype.aspx.”。
步骤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的值为:
( ( Max k . X - Min k - 1 · X + Min k + 1 . X 2 ) 2 + ( Max k . Y - Min k - 1 . Y + Min k + 1 . Y 2 ) 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,有:
TipSpa i , j = ( tip i . X - tip j . X ) 2 + ( tip i . Y - tip j . Y ) 2 ,
RootSpa i , j = ( root i . X - root j . X ) 2 + ( root i . Y - root j . Y ) 2 ,
CenSpa i , j = ( center i . X - center j . X ) 2 + ( center i . Y - center j . 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的欧几里德距离。其求法为:
Tip palm = ( tip r . X - s 2 . X ) 2 + ( tip r . Y - s 2 . 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中有三种手势,于是使用二指决策树对该手势所建立的特征进行再分类,得出最终的结果。

Claims (8)

1.一种基于手指轮廓和决策树的静态手势识别方法,其特征在于,包括以下步骤:
步骤1:使用Kinect for Windows SDK获取包含手掌深度图像的正方形区域以及掌心坐标S0
步骤2:采取自适应邻近值法对深度图像进行分割,然后对手掌轮廓进行图像形态学处理;
步骤3:对手掌轮廓进行椭圆拟合,以椭圆的圆心为轮廓的几何中心S1,建立圆周序列曲线,求出圆周序列曲线上的所有极大值点和极小值点,并使用一个极大值点和左右各一个极小值点构成极值点对来表示手指轮廓和手腕轮廓;
步骤4:求极值点对内的所有轮廓点,通过计算每个轮廓点的梯度确定手指轮廓和手腕轮廓,然后根据轮廓的宽度差异识别出手腕轮廓,再减去手指轮廓和手腕轮廓后,使用剩余轮廓重新估算手掌中心S2
步骤5:求出各手指的宽度、长度、面积、夹角、指尖之间的欧几里德距离、指根之间的欧几里德距离、指中心之间的欧几里德距离以及指尖到手掌中心S2的欧几里德距离作为特征向量建立特征集;
步骤6:针对相同手指个数的手势使用决策树对特征集进行训练,在识别的时候先比较手指个数,然后再使用相应的决策树进行分类。
2.根据权利要求1所述的一种基于手指轮廓和决策树的静态手势识别方法,其特征在于,步骤1中,在Kinect上加载Kinect for Windows SDK的API。
3.根据权利要求2所述的一种基于手指轮廓和决策树的静态手势识别方法,其特征在于,步骤3中,使用圆周序列曲线对手掌轮廓进行建模的方法是:
创建一个360×240的图像,其中X轴表示以手掌几何中心S1为中心的360个角度,Y轴表示各个角度下的手掌轮廓点到S1的欧几里德距离,如果同一角度下存在两个以上轮廓点,则Y值取欧几里德距离最大的一个。
4.根据权利要求2所述的一种基于手指轮廓和决策树的静态手势识别方法,其特征在于,步骤3中,使用极值点对法对圆周序列曲线求极值点对的方法是:
求出圆周序列曲线上的所有极大值和极小值,其中极大值表示手指指尖,极小值表示手指指根,通过一个极大值和左右各一个极小值来表示手指的轮廓,去掉其它极值;
去掉其它极值包括以下步骤:
对于相连的几个极大值点,取出其中最大的一个;
两个极大值点之间有且只有两个极小值点,如果大于两个,则将中间的候选极小值点删掉,留下两边的,如果只有一个,则复制一个跟它一样的极小值点;
将一个极大值点和紧贴在它两边的两个极小值点组成一组极值点对,每组极值点对为一根候选手指或候选手腕,计算各组点对中极大值与极小值的平均差,对于平均差较小的点对,判定为干扰点对,从候选手指中删除。
5.根据权利要求4所述的一种基于手指轮廓和决策树的静态手势识别方法,其特征在于,步骤4中,对手指轮廓进行梯度运算的方法是:
取出极值点对中所包含的所有轮廓点,以极大值点为中点分为左右两部分,对左边部分上的每一个轮廓点求它的梯度方向上的直线是否能与右边部分相交,如果不相交,则该轮廓点作为孤立点从手指轮廓或手腕轮廓中剔除;对右边部分上每一个轮廓点求它的梯度方向上的直线能否与左边部分相交,如果不相交,则该轮廓点作为孤立点从手指轮廓或手腕轮廓中剔除;在删除两头部分孤立点之后,取剩下的轮廓为手指轮廓或手腕轮廓。
6.根据权利要求4所述的一种基于手指轮廓和决策树的静态手势识别方法,其特征在于,步骤5中,建立特征集中包括的特征向量的计算方式如下:
各手指的宽度值,手指的宽度为使用椭圆对手指轮廓进行拟合所得到的短轴长;
各手指的长度值,手指的长度为指尖到两个指根中间的欧几里德距离;
各手指轮廓区域的面积,将各手指轮廓的极小值轮廓点相连得到的闭合区域面积作为手指的面积;
相连手指的夹角以及与手腕相连手指到手腕的夹角,该夹角指相连两根手指轮廓所拟合椭圆的长轴的夹角;
两两手指间的间距,所述间距指两两手指指尖之间、指根之间及指中心之间的欧几里德距离;
各手指距掌心距离,指各个手指的指尖距手掌心S2的欧几里德距离。
7.根据权利要求5所述的一种基于手指轮廓和决策树的静态手势识别方法,其特征在于,在步骤3中对圆周序列曲线求极值点对作为第一次分类,步骤6中,使用决策树进行训练及识别的方法是:
针对手指个数相同的手势,采用了决策树进行第二次分类;分别对单指、双指、三指、四指、五指的训练单指决策树、双指决策树、三指决策树、四指决策树和五指决策树,然后按手指的个数使用相应的决策树进行识别。
8.根据权利要求5所述的一种基于手指轮廓和决策树的静态手势识别方法,其特征在于,步骤2中,邻近值法指利用掌心坐标及其深度信息,使用一个先进先出队列Q进行前景检测,从而把前景手掌提取出来;具体处理过程如下:
先将所有像素点置为白色,设掌心坐标S0为源像素并置为灰色同时入队列Q,只要队列不为空,就循环执行出队操作;对于每一个出队的像素点Pij如果Pij与掌心坐标S0的深度值之差不超过阈值Threshold,则将该像素置为黑色,否则置为白色;如果为黑色,则计算该像素Pij的深度值及与其曼哈顿距离为1的所有白色像素Pwhile的深度值之差,其中差不超过1的就将Pwhile设为灰色像素Pgray同时入队列;当队列为空时,终止,标为黑色的像素便是前景像素;
每次进行前景检测时阈值Threshold的值先从3开始取,然后依次递增分别使用邻近值法获取前景图像,当连续两次进行前景检测所得到的前景图像的像素个数之差小于10时,终止,阈值Threshold的值不用再递增;取已经稳定的前景图像与上一次的并未稳定的前景图像之差,这个差值图像里最大的一块区域便是手腕的位置。
CN201410217546.2A 2014-05-21 2014-05-21 基于手指轮廓和决策树的静态手势识别方法 Expired - Fee Related CN103971102B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410217546.2A CN103971102B (zh) 2014-05-21 2014-05-21 基于手指轮廓和决策树的静态手势识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410217546.2A CN103971102B (zh) 2014-05-21 2014-05-21 基于手指轮廓和决策树的静态手势识别方法

Publications (2)

Publication Number Publication Date
CN103971102A CN103971102A (zh) 2014-08-06
CN103971102B true CN103971102B (zh) 2017-02-01

Family

ID=51240573

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410217546.2A Expired - Fee Related CN103971102B (zh) 2014-05-21 2014-05-21 基于手指轮廓和决策树的静态手势识别方法

Country Status (1)

Country Link
CN (1) CN103971102B (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104267835B (zh) * 2014-09-12 2017-08-08 西安闻泰电子科技有限公司 自适应手势识别方法
CN104267898B (zh) * 2014-09-16 2018-08-28 北京数字天域科技有限责任公司 一种快捷触发应用程序或应用程序功能的方法及装置
CN104778746B (zh) * 2015-03-16 2017-06-16 浙江大学 一种基于数据手套使用自然手势进行精确三维建模的方法
CN104778726A (zh) * 2015-04-29 2015-07-15 深圳市保千里电子有限公司 一种基于人体特征进行运动轨迹跟踪的方法及系统
CN104899600B (zh) * 2015-05-28 2018-07-17 北京工业大学 一种基于深度图的手部特征点检测方法
CN104951687A (zh) * 2015-07-21 2015-09-30 上海斐讯数据通信技术有限公司 一种指纹解锁的方法及系统
CN105224089A (zh) * 2015-10-23 2016-01-06 上海斐讯数据通信技术有限公司 手势操作方法及装置、移动终端
CN105302310B (zh) * 2015-11-12 2018-08-31 姚焕根 一种手势识别装置、系统及方法
CN105893929A (zh) * 2015-12-27 2016-08-24 乐视致新电子科技(天津)有限公司 手指与手腕的区分方法及其装置
CN105787471B (zh) * 2016-03-25 2019-05-03 南京邮电大学 一种应用于助老助残移动服务机器人控制的手势识别方法
CN105868715B (zh) * 2016-03-29 2020-02-07 苏州科达科技股份有限公司 一种手势识别方法、装置及手势学习系统
CN106295531A (zh) * 2016-08-01 2017-01-04 乐视控股(北京)有限公司 一种手势识别方法和装置以及虚拟现实终端
CN107833199B (zh) * 2016-09-12 2020-03-27 南京大学 一种用于临摹卡通图像质量分析的方法
CN107818290B (zh) * 2016-09-14 2021-03-16 京东方科技集团股份有限公司 基于深度图的启发式手指检测方法
CN106775346A (zh) * 2016-11-23 2017-05-31 广州日滨科技发展有限公司 一种手指图像识别的方法及装置
CN107038424B (zh) * 2017-04-20 2019-12-24 华中师范大学 一种手势识别方法
CN107203742B (zh) * 2017-05-03 2020-05-08 苏州大学 一种基于显著特征点提取的手势识别方法及装置
CN107220664B (zh) * 2017-05-18 2019-12-31 南京大学 一种基于结构化随机森林的油瓶装箱清点方法
CN107526440A (zh) * 2017-08-28 2017-12-29 四川长虹电器股份有限公司 基于决策树分类的手势识别的智能电器控制方法及系统
CN107678551B (zh) 2017-10-19 2021-12-28 京东方科技集团股份有限公司 手势识别方法和装置、电子设备
CN108133119B (zh) * 2018-01-19 2018-10-02 吉林大学 一种虚拟装配中旋摆动作测时方法
CN109164914A (zh) * 2018-08-01 2019-01-08 江苏捷阳科技股份有限公司 一种智能晾衣机手势识别系统及手势控制晾衣机的方法
CN109614590B (zh) * 2019-01-08 2022-03-25 西南石油大学 一种研究沉积环境对深水水道形态影响的数据挖掘方法
CN109872326B (zh) * 2019-01-25 2022-04-05 广西科技大学 基于深度强化网络跳跃连接的轮廓检测方法
CN109919039B (zh) * 2019-02-14 2023-07-25 上海磐启微电子有限公司 一种基于手掌和手指特征的静态手势识别方法
CN110263752B (zh) * 2019-06-27 2022-01-11 Oppo广东移动通信有限公司 指纹识别方法及相关产品
CN111736707A (zh) * 2020-08-14 2020-10-02 广州盈可视电子科技有限公司 一种画面切换方法和装置
CN112198962B (zh) * 2020-09-30 2023-04-28 聚好看科技股份有限公司 一种与虚拟现实设备交互的方法及虚拟现实设备
CN112926423B (zh) * 2021-02-07 2023-08-25 青岛小鸟看看科技有限公司 捏合手势检测识别方法、装置及系统
CN115100747B (zh) * 2022-08-26 2022-11-08 山东宝德龙健身器材有限公司 基于视觉检测的跑步机智能辅助系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068843B2 (en) * 2002-03-29 2006-06-27 Industrial Technology Research Institute Method for extracting and matching gesture features of image
CN102622601A (zh) * 2012-03-12 2012-08-01 李博男 一种指尖检测方法
CN202815864U (zh) * 2012-03-12 2013-03-20 李博男 一种手势识别系统
CN103226387A (zh) * 2013-04-07 2013-07-31 华南理工大学 基于Kinect的视频人手指尖定位方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068843B2 (en) * 2002-03-29 2006-06-27 Industrial Technology Research Institute Method for extracting and matching gesture features of image
CN102622601A (zh) * 2012-03-12 2012-08-01 李博男 一种指尖检测方法
CN202815864U (zh) * 2012-03-12 2013-03-20 李博男 一种手势识别系统
CN103226387A (zh) * 2013-04-07 2013-07-31 华南理工大学 基于Kinect的视频人手指尖定位方法

Also Published As

Publication number Publication date
CN103971102A (zh) 2014-08-06

Similar Documents

Publication Publication Date Title
CN103971102B (zh) 基于手指轮廓和决策树的静态手势识别方法
CN107871124B (zh) 一种基于深度神经网络的遥感图像目标检测方法
US10679146B2 (en) Touch classification
CN104834922B (zh) 基于混合神经网络的手势识别方法
CN105512638B (zh) 一种基于融合特征的人脸检测与对齐方法
CN111091105A (zh) 基于新的边框回归损失函数的遥感图像目标检测方法
CN108898610A (zh) 一种基于mask-RCNN的物体轮廓提取方法
CN106778835A (zh) 融合场景信息和深度特征的遥感图像机场目标识别方法
CN107563446A (zh) 一种微操作系统目标检测方法
CN104408449B (zh) 智能移动终端场景文字处理方法
CN109919039B (zh) 一种基于手掌和手指特征的静态手势识别方法
CN107507170A (zh) 一种基于多尺度图像信息融合的机场跑道裂缝检测方法
CN110070090A (zh) 一种基于手写文字识别的物流标签信息检测方法及系统
CN103413145A (zh) 基于深度图像的关节点定位方法
CN105809123A (zh) 人脸检测方法及装置
CN106971130A (zh) 一种以人脸为参照的手势识别方法
CN106326860A (zh) 基于视觉的手势识别方法
CN109993750A (zh) 一种手腕骨的分割识别方法及系统、终端及可读存储介质
CN103927555A (zh) 基于Kinect传感器的静态手语字母识别系统及方法
CN116051957A (zh) 基于注意力机制和多尺度融合的个人防护物品检测网络
Pradhan et al. A hand gesture recognition using feature extraction
CN108268125A (zh) 一种基于计算机视觉的运动手势检测及跟踪方法
CN109886164B (zh) 一种异常手势的识别与处理方法
CN108921006A (zh) 手写签名图像真伪鉴别模型建立方法及真伪鉴别方法
CN108363967A (zh) 一种遥感图像场景的分类系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170201

CF01 Termination of patent right due to non-payment of annual fee