首页> 中国专利> 基于手势智能感知和人机协同机制的人机猜拳方法

基于手势智能感知和人机协同机制的人机猜拳方法

摘要

本发明公开了一种基于手势智能感知和人机协同机制的人机猜拳方法。首先将Kinect获得图像序列经过分割、肤色建模提取出人手,然后通过提出的SCDDF识别算法提取手势特征,再与事先建立好的手势库中模板进行匹配,最终识别出用户手势。在此基础上,将虚拟界面运用到人机猜拳游戏中使用户可以更加方便自然地体验人机猜拳游戏的乐趣;结合人机猜拳游戏,本文还提出人机协同机制,使整个游戏更加顺畅自然;在手势识别方面,本文融合DDF算法和性状上下文特征描述子算法,提出SCDDF算法,经实验验证,新的识别算法较之前的DDF算法识别正确率提高了10.8%。

著录项

  • 公开/公告号CN107329564A

    专利类型发明专利

  • 公开/公告日2017-11-07

    原文格式PDF

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

    申请/专利号CN201710432455.4

  • 申请日2017-06-09

  • 分类号G06F3/01(20060101);G06K9/00(20060101);

  • 代理机构11429 北京中济纬天专利代理有限公司;

  • 代理人张红军

  • 地址 250022 山东省济南市市中区南辛庄西路336号

  • 入库时间 2023-06-19 03:42:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-01-31

    专利权的转移 IPC(主分类):G06F 3/01 专利号:ZL2017104324554 登记生效日:20230113 变更事项:专利权人 变更前权利人:济南大学 变更后权利人:山东政和产业大数据技术研究院 变更事项:地址 变更前权利人:250022 山东省济南市市中区南辛庄西路336号 变更后权利人:250000 山东省济南市高新区汉峪金谷A3-5号楼17层

    专利申请权、专利权的转移

  • 2020-05-29

    授权

    授权

  • 2017-12-01

    实质审查的生效 IPC(主分类):G06F3/01 申请日:20170609

    实质审查的生效

  • 2017-11-07

    公开

    公开

说明书

技术领域

本发明涉及一种基于手势智能感知和人机协同机制的人机猜拳方法。

背景技术

石头、剪刀、布”起源于中国,然后传到日本,韩国等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。在中国,大江南北的小孩儿都是玩着“石头、剪子、布”的游戏长大的。

通过手势的人机交互是与机器沟通的最直观的方式之一,实时手势检测也毫无疑问是最近科学界的一个热点。无论在哪一款人机交互的应用中,手势识别都是至关重要的,现在几种国内外手势识别以及结合手势识别的基于体感设备的发展现状与趋势:

首先,Kinect是近几年火爆流行的一种3D体感摄像机,它能够及时的捕捉动态图像,并且能够获取图像的深度信息。体感设别Kinect的应用,使得游戏不再单纯的只是为了娱乐,而更加被赋予了更多的功能,比如让学生学会用肢体语言来学习,开启了一个新的教育时代。很多老年人对于目前触摸屏,键盘的使用学习使用很是费劲,而Kinect 可以使得老年人也能玩体验一把现代游戏的同时,通过肢体的活动进行锻炼等等。

早期的手势识别研究主要采用彩色摄像头来捕获手势数据,有一种基于手形轮廓特征进行手势识别的方法,但是该算法计算量比较大,不适合实时的手势识别应用。还有一种利用神经网络进行手势识别的方法,该方法通过边缘检测提取样本几何矩特征和轮廓特征,然后利用神经网络对手势进行识别,但是该方法对静态手势的识别较低。还有一种基于微软的深度摄像设备传感器且能实时的识别人体动态手势的系统框架,但这种方法只能由简单的动态手势产生的轨迹来识别简单的手势,对于具体手势识别率很低。还有一种复杂背景下利用空间分布特征对手势进行识别的方法。但是彩色图像容易受到光照变化以及复杂背景的影响,而深度图像可以有效的克服光照以及复杂背景的影响。

但以上的识别方法或者基于Kinect的应用可能都或多或少存在着这样的问题:识别率不够高,不是实时的识别,或者没有人机协同机制,或者是对于无意义的手势的干扰没有有效的解决方案。

发明内容

为解决以上技术上的不足,本发明提供了一种识别效率高,有效解决无意义手势干扰的基于手势智能感知和人机协同机制的人机猜拳方法。

本发明是通过以下措施实现的:

本发明的一种基于手势智能感知和人机协同机制的人机猜拳方法,包括以下步骤:

步骤a,计算机随机播放三种出拳手势动画,用户位于计算机的手势可识别范围内;

步骤b,用户将手抬起并做出出拳手势,计算机以人手为中心在其周围自动构建一个虚拟界面,当人手处在虚拟界面内时,确定该手势有效,计算机检测到有效手势的同时,计算机停止播放动画并且随机弹出三种手势动画的一种;

步骤c,计算机对手势进行识别,手势识别的结果与计算机随机出拳结果进行胜负判定。

在步骤b中,构建虚拟界面后通过判断操作者身体重心是否移动来确定虚拟界面是否需要移动刷新,包括以下步骤:

步骤1:通过Kinect获取人手在三维空间内的坐标,连续记录5帧人手的三维坐标,判断是否相对静止,若静止记录人手重心点坐标P,进行步骤2,否则继续判断;

步骤2:以P为中心,在人手周围生成虚拟界面,构建过程结束,虚拟界面符号表示中各变量的值可由以下公式确定:

其中,Px、Py、Pz分别为P在x方向、y方向、z方向的坐标值,L、W和H为经验所得到的虚拟界面的长、宽、高的值,x1、x2、y1、y2、z1、z2分别指的是在Kinect>

步骤3:构建完虚拟界面后,获得虚拟界面的重心坐标W;

其中,Wx、Wy、Wz分别为虚拟界面的中心W在空间x方向、y方向和z方向的坐标值;

步骤4:获得虚拟界面构建完成时人体的初始重心坐标P1,计算人体重心和虚拟界面中心的相对位置

步骤5:获取每帧人体的重心坐标P2,并计算人体在空间中的移动距离

判断d>s是否成立,s为预设常量,若成立表明虚拟界面需要移动,记录下此时人体的重心位置P2,根据公式(3.4)计算移动后虚拟界面的中心坐标V,然后转向步骤6,若不需要移动,则转到步骤4;

步骤6:按照公式(4.5)更新虚拟界面中的值;

其中,Vx、Vy、Vz分别为虚拟界面的中心V在x方向、y方向和z方向的坐标值。

上述步骤c中,对手势识别时采用基于Kinect的手势分割,首先,使用OPENNI中的HandGenerator类获得人手在图像中的深度信息和位置信息,运用深度信息和阈值对手势进行提取,若深度值在阈值内,则为人手,否则则不是人手,初步分割出人手;然后采用形状上下文密度分布特征对手势进行手势特征提取;最后将提取的手势特征与手势模板库中的手势特征进行比对、识别。

上述形状上下文密度分布特征提取手势特征中用一个特征向量描述空间手势坐标分布特征信息SCDDF:

式中表示手势主方向,手势主方向是指从手势重心点到手势最远点的一个方向向量;第二个特征向量ri表示将二值化的手势图像分成M个同心圆后,每个手势图像圆环区域中目标手势像素点的相对密度;第三个特征向量dri是第一个向量中ri+1与ri一阶数值差分的结果;第四个特征向量θi是在由手势主方向建立的极坐标下,由手势重心点指向每根手指的重心点所形成的方向向量同手势主方向的夹角;

提取SCDDF特征的具体步骤如下:

步骤Ⅰ:计算目标图像f(x,y)的重心点

这里,A代表手势图像中的手势的像素区域。

步骤Ⅱ:求出手势图像中离手势重心最远的手势像素点M,计算向量即为手势主方向。

步骤Ⅲ:在图像f(x,y)中,计算形心到目标像素点最大距离Dmax以及最小距离Dmin

步骤Ⅳ:对于图像f(x,y),以形心为圆心,计算以Dmax为半径的目标区域最大外接圆和以Dmin为半径的目标区域最小外接圆。在最大外接圆和最小外接圆组成的区域内,使用等距离区域划分法将最大外接圆和最小外接圆之间图像区域划分为M个子区域>

步骤Ⅴ:对各子图像区域分别进行统计,计算每个子图像区域内目标像素的总数Si(i=1,…,M),并找出Si的最大值。

计算特征向量R和D:

ri=Si/Smax(i=1,…,M)(4.5)

可得到特征向量R和D为:

R=(r1,...r10,ar11,...ar15,br16,...br20)(4.7)

D=(dr1,...dr10,cdr11,...cdr20)(4.8)

步骤Ⅵ:以手势重心点O为原点,以手势主方向为极坐标的起始方向,建立极坐标,遍历第n和第n+2个圆环同手势目标像素点的交点,每一根手指或者手腕同圆环都可形成一条交线,求每一条交线的重心点,得到一系列的重心点P(p1,...,pn),求这些重心点与手势重心点O的向量则最后一个特征向量θi为:

最终得到提取的特征信息:

上述在对手势识别时,首先建立手势模板库,模板库中存放的是每个手势的SCDDF特征信息,具体的识别过程分为两个阶段,手势初态识别和末态识别;将得到的特征向量SCDDF同模板中的特征向量集合{Hi},i=1,2,3相比较,分别计算特征向量同各个手势模型的欧式距离,欧式距离的最小的手势集合,即最终识别出的手势。

本发明的有益效果是:本发明提高了手势识别的正确率,识别效率高,有效解决无意义手势干扰,结合人机猜拳游戏提出一种人机协同机制,使整个游戏过程更加流畅自然,本发明采用的识别算法以及人机协同机制,不仅对手势识别的研究,而且对于体感应用程序的开发与设计也有重要的参考价值。

附图说明

图1为本发明的人机协同算法流程图。

具体实施方式

下面结合附图对本发明做进一步详细的描述:

本发明设计的基于Kinect的人机猜拳游戏遵循以用户为中心的原则,充分让用户自然的与计算机互动,并从中体会到游戏的乐趣,人机交互的乐趣!首先通过Kinect 在用户面前形成虚拟界面,通过在虚拟界面上操作以及本文的融合识别算法,识别石头 (五指抓)、剪刀(二指放)、布(五指放)三个手势,再配合人机协同算法来贯穿整个游戏,使用户轻而易举的融入到游戏当中。

一、人机协同算法。通过对Kinect技术特点的研究和分析,以及对相关应用游戏设计的梳理,提出人机协同算法,并在此基础上设计并实现了基于Kinect的人机猜拳游戏,具体步骤如下:

Step1.计算机连续随机播放剪刀、石头、布三个手势的动画,与此同时玩家开始出拳;

Step2.计算机检测到人手出拳的同时,计算机停止播放动画并且随机弹出三种手势动画的一种;

Step3.计算机对手势识别的结果与计算机随机出拳结果分别进行评价、计分。计分规则:剪刀>包袱、石头>剪刀、包袱>石头(“>”,意为击败);

Step4.对人与计算机的出拳结果进行胜负判定;

Step5.转step1。如图1所示。

二、游戏中的自然交互。基于视觉的手势交互中存在“Midas Touch Problem”,由于用户在摄像头之前做的无意识的手势而被计算机识别并理解为用户命令,从而导致系统混乱的现象。为了解决这个问题也为了使用户能够更加方便自然地进行人机猜拳游戏,我们创造性地将虚拟界面[16]应用到人机猜拳游戏中。为了给用户一个更为直观的感受,在具体的交互过程中将虚拟界面的投影在屏幕上显示出来。用户通过虚拟界面与系统进行人机猜拳游戏,当人手处在虚拟界面内时,手势命令才是有效的,处于虚拟界面之外时,手势命令是无效的。

另外,虚拟界面可以根据操作者的身体重心位置变动移动刷新。当操作者移动的距离超出原来虚拟界面覆盖位置时,系统将根据用户新的重心位置重新构建虚拟界面,让虚拟界面跟操作者之间达到亦步亦趋的效果。这样就会大大降低由于位置变动对玩家游戏体验的影响。

三、虚拟界面的构建算法。本发明采用静态的方式构建虚拟界面:用户将手自然抬起,并在空中静止几秒后,系统将以人手为中心在其周围自动建立一个虚拟界面。虚拟界面的大小(虚拟界面的长宽高的值)由先验知识获得,这种构建方法符合人的操作习惯,降低了用户的操作负荷和认知负荷。

本发明通过判断操作者身体重心是否移动来确定虚拟界面是否需要移动刷新。操作者的身体重心坐标是通过Kinect获得的。详细步骤描述如下:

步骤1:通过Kinect获取人手在三维空间内的坐标,连续记录5帧人手的三维坐标,判断是否相对静止。若静止记录人手重心点坐标P,转步骤2,否则继续判断。

步骤2:以P为中心,在人手周围生成虚拟界面,构建过程结束。虚拟界面符号表示中各变量的值可由以下公式确定:

其中,Px、Py、Pz分别为P在x方向、y方向、z方向的坐标值,L、W和H为经验所得到的虚拟界面的长、宽、高的值,x1、x2、y1、y2、z1、z2分别指的是在Kinect>

步骤3:构建完虚拟界面后,获得虚拟界面的重心坐标W;

其中,Wx、Wy、Wz分别为虚拟界面的中心W在空间x方向、y方向和z方向的坐标值。

步骤4:获得虚拟界面构建完成时人体的初始重心坐标P1,计算人体重心和虚拟界面中心的相对位置

步骤5:获取每帧人体的重心坐标P2,并计算人体在空间中的移动距离

判断d>s是否成立,s为事先定义的一常量,本文取值为200。若成立表明虚拟界面需要移动,记录下此时人体的重心位置P2,根据公式(3.4)计算移动后虚拟界面的中心坐标V,然后转向步骤6。若不需要移动,则转到步骤4。

步骤6:按照公式(4.5)更新虚拟界面中的值。

其中,Vx、Vy、Vz分别为虚拟界面的中心V在x方向、y方向和z方向的坐标值。

四、手势识别算法。从手势的运动特点,基于视觉的手势识别可分为动态手势识别和静态手势识别两大类。动态手势可以定义为手运动的轨迹,是指随时间的变化手势的形状和位置也发生着相应的改变。因此,识别效果容易受到手势轮廓、时空位置、移动速率等因素的影响。静态手势可以认为是动态手势中某一个时间点下的特例,是指不随时间变化而变化的手势,其识别效果与手势的轮廓、形状、纹理等相关。静态手势是动态手势变化过程中的某一状态,而静态手势的识别是手势识别的核心工作。因此,本文结合动态手势从首帧到末帧的变化特点将动态手势拆分成静态手势序列,再以静态手势识别为突破口,运用静态手势识别的思想来实现动态手势识别。本文对于两种静态识别方法:DDF算法和形状上下文特征进行了有效的改进,并在改进的基础上做了融合,提出一种新的识别方法,现介绍如下:

4.1基于Kinect的手势分割

采用的基于Kinect的手势分割。首先,使用OPENNI中的HandGenerator类获得人手在图像中的深度信息和位置信息,该过程主要是运用深度信息和阈值对手势进行提取。若深度值在阈值内,则为人手,否则则不是人手,这样就初步分割出人手。分割人手的时候有时会存在这样的问题,分割出的人手图像,不单单只有我们需要的手部分,还有一部分手臂。因此我们结合RGB颜色空间作为肤色模型对人手进行肤色建模,人手肤色点置为红色,非肤色置为白色。由于采用的是肤色模型,不同的光照下,人手的肤色是不一样的,所以二值化的图像中会出现噪声、孔洞等现象。为了改善这个现象,本文首先运用八邻域去噪的方法进行去噪,最后运用形态学中的腐蚀和膨胀的原理来对提取的人手进行滤波处理,使人手更加完整。

4.2手势特征提取

手势特征提取阶段的任务就是获取手势模型的特征参数。获取特征参数的方式可分为基于运动特征、几何特征和肤色三种方式。

根据运动特征获取特征参数的方法,常用的有运动加速度方法和根据几何特征获取特征参数的方法。根据几何特征提取手势特征的常见的有密度分布特征(densitydistribution feature,DDF)和形状上下文特征(shape context)。其中DDF是在肤色的基础上提取特征的。

密度分布特征是通过统计目标像素在不同区域空间的分布情况来获取图像的像素分布信息,从而达到表达该二值图像的目的。通过对图像的密度分布特征进行分类可进行不同图像的识别;形状上下文特征识别是基于手指轮廓样本点进行描述的,通过前期的预处理工作:边缘提取、采样(均采样均可),得到手指轮廓点集合,再对单个点进行形状信息描述,每个点的形状信息由所有其他点与之形成的相对向量集表示,一般采用直方图表示这些向量,在极坐标上表示这些相对向量的形状上下文,所有点的形状上下文组合起来就可以形成整个手势的形状上下文了。

DDF算法的缺点就是识别率较低,只能识别区别大的手势,对于相近手势识别率很低;而形状上下文描述子识别方法的缺点就是:对于每个轮廓采样点均计算形状上下文直方图耗时较多,同时,轮廓采样步长的大小也会影响到特征描述的准确性以及最终的分类效果[23]。由此,结合两种识别算法的优缺点,本文提出一种新的融合识别方法:形状上下文密度分布特征(shape>

4.3形状上下文密度分布特征(shape context density distribution feature,SCDDF)的手势识别

用一个特征向量描述空间手势坐标分布特征信息

式中表示手势主方向,手势主方向是指从手势重心点到手势最远点的一个方向向量,提出手势主方向的目的是保证手势特征提取的一致性,解决手势在发生缩放、平移和旋转等情况下给手势识别带来的问题。

第二个特征向量ri表示将二值化的手势图像分成M(本文中M取20)个同心圆后,每个手势图像圆环区域中目标手势像素点的相对密度;第三个特征向量dri是第一个向量中ri+1与ri一阶数值差分的结果。第四个特征向量θi是在由手势主方向建立的极坐标下,由手势重心点指向每根手指的重心点所形成的方向向量同手势主方向的夹角。

提取SCDDF特征的具体步骤如下:

步骤1:计算目标图像f(x,y)的重心点

这里,A代表手势图像中的手势的像素区域。

步骤2:求出手势图像中离手势重心最远的手势像素点M,计算向量即为手势主方向。

步骤3:在图像f(x,y)中,计算形心到目标像素点最大距离Dmax以及最小距离Dmin

步骤4:对于图像f(x,y),以形心为圆心,计算以Dmax为半径的目标区域最大外接圆和以Dmin为半径的目标区域最小外接圆。在最大外接圆和最小外接圆组成的区域内,使用等距离区域划分法将最大外接圆和最小外接圆之间图像区域划分为M个子区域>

步骤5:对各子图像区域分别进行统计,计算每个子图像区域内目标像素的总数Si(i=1,…,M),并找出Si的最大值。

Step 5:计算特征向量R和D:

ri=Si/Smax(i=1,…,M)(4.5)

由于手势的变化主要在于手指部分,掌心部分的变化较少,因此对于手势的密度分布特征部分,可以适当增加手指部分的权重,如此可有效降低不同手势的特征图中相似度,提高识别率。可得到特征向量R和D为:

R=(r1,...r10,ar11,...ar15,br16,...br20)(4.7)

D=(dr1,...dr10,cdr11,...cdr20)(4.8)

步骤6:以手势重心点O为原点,以手势主方向为极坐标的起始方向,建立极坐标,遍历第11和第13个圆环(实验得到,用这两个环来求手指重心点是最合适的) 同手势目标像素点的交点,每一根手指或者手腕同圆环都可形成一条交线,求每一条交线的重心点,得到一系列的重心点P(p1,...,pn),求这些重心点与手势重心点O的向量则最后一个特征向量θi为:

通过这6步,我们就可得到我们需要提取的特征信息:

4.4手势识别步骤

因为是主要是用在人机猜拳游戏当中,所以对于手势的种类要求相对简单,主要是石头、剪刀、布三个动作。我们将整个动态手势拆分开来,整个动作的过程就是由一帧一帧的静态图片构成,因此动态手势的识别可由静态手势识别的思想实现。而手势的中间过程复杂多变,无论是形状还是速度,每个人的手势都有较大的差别,反而会影响整个手势的识别过程,因此我们将游戏中需要识别的三个动态手势简化为为:A—B1(石头),A—B2(剪刀),A—B3(布)。

在识别之前,我们首先要进行手势模板库的建立,模板库中存放的是每个手势的SCDDF特征信息,具体的识别过程分为两个阶段,手势初态识别和末态识别。而手势的每个状态的识别统一采用SCDDF方法进行识别。具体步骤如下:

输入:Kinect摄像头实时获取的RGB图像和深度图像。

输出:手势识别结果

步骤1:结合Kinect实时获取的RGB图像和深度图像分割出人手;

步骤2:按照第3章节的手势分割方法把目标手势从当前帧图像中提取出来。

步骤3:按照上一章节的手势特征提取方法,提取SCDDF中的每个特征向量;

步骤4:将得到的特征向量SCDDF同模板中的特征向量集合{Hi},i=1,2,3相比较,分别计算特征向量同各个手势模型的欧式距离,欧式距离的最小的手势集合,即最终识别出的手势。

以上所述仅是本专利的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本专利技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本专利的保护范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号