一种基于Kinect深度图像的三维手势识别方法
【专利摘要】本发明公开了一种基于Kinect深度图像的三维手势识别方法,其特征在于,包括如下步骤:步骤一:检测多个手掌特征点;步骤二:根据各个手掌特征点的起始位置,在手势库中寻找出与手掌特征点的起始位置相匹配的手势,基于与手掌特征点的起始位置相匹配的手势构建手势候选集;步骤三:对手掌特征点的运动轨迹进行跟踪记录,从手势候选集中剔除不符合手掌特征点的运动轨迹的手势;步骤四:根据手势候选集中剩余的手势的情况,得到手势的识别结果。本发明实现了与计算机的自然交互,丰富了人机交互的方式。本发明可以广泛应用于计算机游戏控制、虚拟现实、数字教育等领域。
【专利说明】一种基于Kinect深度图像的三维手势识别方法
【技术领域】
[0001]本发明涉及一种三维手势识别方法,具体涉及一种基于Kinect深度图像的三维手势识别方法,本发明属于图像分析与识别【技术领域】。
【背景技术】
[0002]近年来,由于手势具有直观性、自然性等的特点,已成为人机交互的一种重要手段,手势识别也逐渐成为人们研究的一个重点。
[0003]目前手势识别的方法有三种:基于数据手套的识别、基于视觉的识别、基于体感外设的识别。基于数据手套的识别,需要实验者佩戴数据手套,手势识别比较精确,但设备臃肿、昂贵。基于视觉的识别利用一台或者多台摄像机来获得手的坐标信息,能实现三维的手势识别,但算法复杂,且容易受光线等环境因素的影响。
[0004]基于体感外设的识别方法是现在手势识别研究的一个热点,该方法适用于三维手势识别,使得用户可以通过裸手手势与计算机进行自然交互。Kinect体感设备由微软于2010年推出,该设备主要利用红外摄像头来获取三维空间中人体的运动数据,不受光照的影响。基于Kinect体感设备实现手势识别与人机交互,不但可以大大提高人机交互的沉浸感、自然感,而且成本低廉,性价比高。但是现有的Kinectt体感设备中,其识别技术只能局限于基于手掌掌心点来进行手势的识别,因此能够识别的手势很少,手势识别准确度也较差。
【发明内容】
[0005]为解决现有技术的不足,本发明的目的在于提供一种基于Kinect深度图像的三维手势识别方法,能够解决现有技术中识别手势少,手势识别准确度差的问题。
[0006]为了实现上述目标,本发明采用如下的技术方案:
一种基于Kinect深度图像的三维手势识别方法,其特征在于,包括如下步骤:
步骤一:检测多个手掌特征点;
步骤二:根据各个手掌特征点的起始位置,在手势库中寻找出与手掌特征点的起始位置相匹配的手势,基于与手掌特征点的起始位置相匹配的手势构建手势候选集;
步骤三:对手掌特征点的运动轨迹进行跟踪记录,从手势候选集中剔除不符合手掌特征点的运动轨迹的手势;
步骤四:根据手势候选集中剩余的手势的情况,得到手势的识别结果。
[0007]前述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤一包括:
步骤S1:通过Kinect体感设备实时采集深度图像和彩色图像;
步骤S2:在深度图像中进行手掌特征点检测,如果检测不成功,则执行步骤SI,如果检测成功,则执行步骤S3 ;所述手掌特征点包括掌心点;
步骤S3:如果掌心点所在位置不满足手势识别起始位置的要求,则执行步骤SI,如果满足手势识别起始位置的要求,则执行步骤二。
[0008]前述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤S2包括:
步骤S21:利用Kinect SDK获得掌心点与腕点的骨骼数据坐标,再利用Kinect SDK把掌心点和腕点的骨骼数据坐标转换为深度图像中的坐标;
步骤S22:从人体深度图像中计算获得具有二维外轮廓的手掌区域;
步骤S23:计算获得各手指的二维外轮廓;
步骤S24:分别计算掌心点坐标到各手指的二维外轮廓上的最远距离,得到各指尖点二维坐标;
步骤S25:把各指尖点二维坐标映射到深度图像中,得到各指尖点在深度图像中的坐标。
[0009]前述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤S22包括:
步骤S31:在深度图像中与Kinect镜头相平行的平面上,以掌心点坐标为中心划定一个长宽各为160像素的区域A ;
步骤S32:建立一个长宽各为160像素的二维的二值图像Z ;
步骤S33:对于区域A中的每个点m,若其深度值与掌心点深度值的差的绝对值在1000深度单位以内,则把二值图像Z中与点m位置相对应的位置的像素值置为1,否则把二值图像Z中与点m位置相对应的位置的像素值置为O ;
步骤S34:把在深度图像中的掌心点和腕点映射到二值图像Z的二维空间中,得到掌心映射点和腕点映射点;
步骤S35:计算获得掌心映射点与腕点映射点之间的距离d ;
步骤S36:以腕点映射点为圆心,以d/2为半径在二值图像Z的二维空间中画圆,把二值图像Z中位于该圆内的像素值均改为0,从而在二值图像Z中去除腕部区域;
步骤S37:获取二值图像Z中的手掌外轮廓,再把手掌外轮廓中的点依次映射到Kinect获取的彩色图像中进行肤色检查,在二值图像Z中把其映射点不符合肤色要求的点的像素值置为0,从而在二值图像Z中得到具有精确的二维外轮廓的手掌区域。
[0010]前述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述把手掌外轮廓中的点依次映射到Kinect获取的彩色图像中进行肤色检查包括:将Kinect获取的彩色图像从RGB颜色空间转换到HSV颜色空间,HSV空间中的H分量表示色调,由于不同人种的肤色的H分量基本一致,因此利用H分量进行肤色检查,对H分量设置阈值T0,经过H阈值分割,将在阈值范围内的手掌外轮廓中的点的像素值赋值为1,否则赋值为0,则可以得到精确的二维外轮廓的手掌区域。
[0011]前述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤S23包括:
步骤S41:复制二值图像Z,得到二值图像B ;
步骤S42:使用形态学的腐蚀算法,将二值图像B中的手掌区域腐蚀至原有面积的20%,并记录腐蚀次数k ;
步骤S43:使用形态学的膨胀算法,将经过腐蚀后的二值图像B中的手掌区域膨胀k+3次;步骤S44:用二值图像Z减去二值图像B,得到仅包括手指区域的二值图像C ;
步骤S45:利用opencv的外轮廓计算函数二值计算得到图像C中的每个手指的二维外轮廓。
[0012]前述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤二包括:
步骤S4:根据各个手掌特征点的起始位置,在手势库中寻找出与手掌特征点的起始位置相匹配的手势,构成一个候选手势集合HS1,复制HSl得到另外一个候选手势集合HS2。
[0013]前述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤三包括:
步骤S5:使用卡尔曼滤波方法对手掌特征点的运动轨迹进行跟踪与记录,在跟踪过程中,根据已经跟踪获得的各手掌特征点的运动轨迹,利用隐马尔可夫方法与HS2中的手势实时逐一进行匹配,从HS2中剔除匹配不成功的手势。
[0014]前述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤四包括:
步骤S6:如果对手掌特征点运动轨迹的跟踪与记录过程已经超过N帧,则执行步骤S7 ;如果没有超过N帧,则执行步骤S5,N为正整数;
步骤S7:如果HSl中只剩余一个手势,则该手势即为识别结果,执行步骤SlO ;如果HS2为空,则执行步骤S8 ;如果HS2中剩余多于一个手势,则执行步骤S9 ;
步骤S8:根据跟踪过程中记录的手掌各特征点轨迹,利用隐马尔可夫方法与HSl的手势逐一进行匹配,如果找到一个匹配的手势,则执行步骤SlO ;如果不能找到一个匹配的手势,则执行步骤Sll ;
步骤S9:根据跟踪过程中记录的手掌各特征点轨迹,进行去噪处理和轨迹校正后,再利用隐马尔可夫方法与HS2中剩余的手势逐一进行匹配,如果找到一个匹配的手势,执行步骤S10,如果不能找到一个匹配的手势,则执行步骤Sll ;
步骤SlO:手势识别成功,结束三维手势识别过程;
步骤Sll:手势识别失败,结束三维手势识别过程。
[0015]前述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述N为100。
[0016]本发明的有益之处在于:本发明的一种基于Kinect深度图像的三维手势识别方法实现了与计算机的自然交互,丰富了人机交互的方式。本发明不需要用户佩戴高昂、臃肿的设备,也不存在传统上基于视觉的识别技术具有的算法复杂、易受光线等环境因素影响的缺陷。本发明可以广泛应用于计算机游戏控制、虚拟现实、数字教育等领域。
【专利附图】
【附图说明】
[0017]图1是本发明一种基于Kinect深度图像的三维手势识别方法的步骤流程图;
图2是本发明基于图1的进一步步骤实施图;
图3是本发明对步骤S22的流程说明;
图4是本发明对步骤S23的流程说明。【具体实施方式】
[0018]以下结合附图和具体实施例对本发明作具体的介绍。
[0019]参照图1所示,本发明提供一种基于Kinect深度图像的三维手势识别方法,扩展传统的人机交互方式。对识别出的三维手势赋予相应的语义后,可以映射为各种操作命令应用于人机交互系统中,从而大大提高人机交互的自然性。
[0020]本发明一种基于Kinect深度图像的三维手势识别方法,包括如下步骤:
步骤一:检测多个手掌特征点;
步骤二:根据各个手掌特征点的起始位置,在手势库中寻找出与手掌特征点的起始位置相匹配的手势,基于与手掌特征点的起始位置相匹配的手势构建手势候选集;
步骤三:对手掌特征点的运动轨迹进行跟踪记录,从手势候选集中剔除不符合手掌特征点的运动轨迹的手势;
步骤四:根据手势候选集中剩余的手势的情况,得到手势的识别结果。
[0021]这里的手势库存储有各种手势,每种手势均包括各个手掌特征点的起始位置,以及手掌在运动过程中,各个手掌特征点的运动轨迹。
[0022]本发明相对现有技术来说,采集的手掌特征点为多个,在开始进行手势识别时,先根据各个手掌特征点的初始位置来从手势库中挑选出相匹配的手势,再根据手掌特征点的运动轨迹从挑选出来的手势中继续进行挑选,根据手势候选集中剩余的手势的情况,得到手势的识别结果。采用这种多手掌特征点的形式来识别三维手势,由于手掌特征点数量多,因此手势的数量也就更加多样,就可以用这些更加多样的三维手势来表示更多样的指令。此外,本发明中,在手势识别技术上,对手掌特征点的起始位置、手掌特征点的运动轨迹均用于在手势库中选取手势,因此在手势识别上能够实现比现有技术的识别准确度更加好。
[0023]图2所示给出了基于图1的更详细的步骤实施图。本发明将结合图1和图2进一步对图1的各个步骤进行详细论述。在论述过程中,对于涉及的现有技术,本发明将不具体展开。本领域技术人员可以参照公开的各种技术手册、教学参考书、实施例等辅助实施。
[0024]下面是对图1的具体展开。其中步骤S1、S2、S3是对步骤一的进一步展开。步骤S4是对步骤二的进一步展开,步骤S5是对步骤三的进一步展开,步骤S6至步骤Sll是对步骤四的进一步展开说明。
[0025]步骤S1:通过Kinect体感设备实时采集深度图像和彩色图像;步骤S2:在深度图像中进行手掌特征点检测,如果检测不成功,则执行步骤Si;如果检测成功,则执行步骤S3 ;步骤S3:如果手掌特征点中的掌心点所在位置不满足手势识别开始位置的要求,则执行步骤SI ;如果满足手势识别开始位置的要求,则执行步骤S4 ;步骤S4:在手势库中找出所有与手掌特征点位置相匹配的手势,构成一个候选手势集合HS1,复制HSl得到另外一个候选手势集合HS2 ;步骤S5:使用卡尔曼滤波方法对手掌特征点的运动轨迹进行跟踪与记录,在跟踪过程中,根据已经跟踪获得的各手掌特征点的运动轨迹,利用隐马尔可夫方法与HS2中的手势实时逐一进行匹配,从HS2中剔除匹配不成功的手势;步骤S6:如果对手掌特征点运动轨迹的跟踪与记录过程已经超过100帧,则执行步骤S7 ;如果没有超过100帧,则执行步骤S5 ;步骤S7:如果HSl中只剩余一个手势,则该手势即为识别结果,执行步骤SlO ;如果HS2为空,则执行步骤S8 ;如果HS2中剩余多于一个手势,则执行步骤S9 ;步骤S8:根据跟踪过程中记录的手掌各特征点轨迹,利用隐马尔可夫方法与HSl的手势逐一进行匹配,如果找到一个匹配的手势,则执行步骤SlO ;如果不能找到一个匹配的手势,则执行步骤Sll ;步骤S9:根据跟踪过程中记录的手掌各特征点轨迹,进行去噪处理和轨迹校正后,再利用隐马尔可夫方法与HS2中剩余的手势逐一进行匹配,如果找到一个匹配的手势,执行步骤S10,如果不能找到一个匹配的手势,则执行步骤Sll ;步骤SlO:手势识别成功,结束本次三维手势识别过程;步骤Sll:手势识别失败,结束本次三维手势识别过程。
[0026]步骤S2在深度图像中进行手掌特征点检测,包括以下步骤:步骤S21:利用KinectSDK提供的针对深度图像的骨骼与关节点检测功能,获得掌心点与腕点的骨骼数据坐标,再利用Kinect SDK提供的坐标转换函数把掌心点和腕点的骨骼数据坐标转换为深度图像中的坐标;步骤S22:从人体深度图像中计算获得具有精确的二维外轮廓的手掌区域;步骤S23:使用形态学方法和opencv提供的外轮廓提取功能,计算获得各手指的二维外轮廓;步骤S24:分别计算掌心点坐标到各手指的二维外轮廓上的最远距离,得到各指尖点二维坐标;步骤S25:把各指尖点二维坐标映射到深度图像中,得到各指尖点在深度图像中的坐标。
[0027]图3是对步骤S22的流程说明。步骤S22从人体深度图像中计算获得具有精确的二维外轮廓的手掌区域,包括以下步骤:步骤S31:在深度图像中与Kinect镜头相平行的平面上,以掌心点坐标为中心划定一个长宽各为160像素的区域A;步骤S32:建立一个长宽各为160像素的二维的二值图像Z ;步骤S33:对于区域A中的每个点m,若其深度值与掌心点深度值的差的绝对值在1000深度单位以内,则把二值图像Z中与点m位置相对应的位置的像素值置为1,否则把二值图像Z中与点m位置相对应的位置的像素值置为O ;步骤S34:把在深度图像中的掌心点和腕点映射到二值图像Z的二维空间中,得到掌心映射点和腕点映射点;步骤S35:计算获得掌心映射点与腕点映射点之间的距离d ;步骤S36:以腕点映射点为圆心,以d/2为半径在二值图像Z的二维空间中画圆,把二值图像Z中位于该圆内的像素值均改为0,从而在二值图像Z中去除腕部区域;步骤S37:利用opencv的外轮廓计算函数获取二值图像Z中的手掌外轮廓,再把手掌外轮廓中的点依次映射到Kinect获取的彩色图像中进行肤色检查,在二值图像Z中把其映射点不符合肤色要求的点的像素值置为0,从而在二值图像Z中得到具有精确的二维外轮廓的手掌区域。
[0028]图4是对步骤S23的流程说明。步骤S23使用形态学方法和opencv提供的外轮廓提取功能,计算获得各手指的二维外轮廓,包括以下步骤:步骤S41:复制二值图像Z,得到二值图像B;步骤S42:使用形态学的腐蚀算法,将二值图像B中的手掌区域腐蚀至原有面积的20%,并记录腐蚀次数k ;步骤S43:使用形态学的膨胀算法,将经过腐蚀后的二值图像B中的手掌区域膨胀k+3次;步骤S44:用二值图像Z减去二值图像B,得到仅包括手指区域的二值图像C ;步骤S45:利用opencv的外轮廓计算函数二值计算得到图像C中的每个手指的二维外轮廓。
[0029]把手掌外轮廓中的点依次映射到Kinect获取的彩色图像中进行肤色检查是指:将Kinect获取的彩色图像从RGB颜色空间转换到HSV颜色空间,HSV空间中的H分量表示色调,由于不同人种的肤色的H分量基本一致,因此利用H分量进行肤色检查,对H分量设置阈值T0,经过H阈值分割,将在阈值范围内的手掌外轮廓中的点的像素值赋值为1,否则赋值为0,则可以得到精确的二维外轮廓的手掌区域。
[0030]本发明基于Kinect体感设备采集的深度图像,计算机实时分析识别出用户的手势信息,并将分析识别结果转化为应用程序的控制指令,实现与计算机的自然交互,丰富了人机交互的方式。基于Kinect体感设备的手势识别,不需要用户佩戴高昂、臃肿的设备,也不存在传统上基于视觉的识别技术具有的算法复杂、易受光线等环境因素影响的缺陷。本发明可以广泛应用于计算机游戏控制、虚拟现实、数字教育等领域。
[0031]以上显示和描述了本发明的基本原理、主要特征和优点。本行业的技术人员应该了解,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。
【权利要求】
1.一种基于Kinect深度图像的三维手势识别方法,其特征在于,包括如下步骤: 步骤一:检测多个手掌特征点; 步骤二:根据各个手掌特征点的起始位置,在手势库中寻找出与手掌特征点的起始位置相匹配的手势,基于与手掌特征点的起始位置相匹配的手势构建手势候选集; 步骤三:对手掌特征点的运动轨迹进行跟踪记录,从手势候选集中剔除不符合手掌特征点的运动轨迹的手势; 步骤四:根据手势候选集中剩余的手势的情况,得到手势的识别结果。
2.根据权利要求1所述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤一包括: 步骤S1:通过Kinect体感设备实时采集深度图像和彩色图像; 步骤S2:在深度图像中进行手掌特征点检测,如果检测不成功,则执行步骤SI,如果检测成功,则执行步骤S3 ;所述手掌特征点包括掌心点; 步骤S3:如果手掌特征点所在位置不满足手势识别起始位置的要求,则执行步骤SI,如果满足手势识别起始位置的要求,则执行步骤二。
3.根据权利要求2 所述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤S2包括: 步骤S21:利用Kinect SDK获得掌心点与腕点的骨骼数据坐标,再利用Kinect SDK把掌心点和腕点的骨骼数据坐标转换为深度图像中的坐标; 步骤S22:从人体深度图像中计算获得具有二维外轮廓的手掌区域; 步骤S23:计算获得各手指的二维外轮廓; 步骤S24:分别计算掌心点坐标到各手指的二维外轮廓上的最远距离,得到各指尖点二维坐标; 步骤S25:把各指尖点二维坐标映射到深度图像中,得到各指尖点在深度图像中的坐标。
4.根据权利要求3所述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤S22包括: 步骤S31:在深度图像中与Kinect镜头相平行的平面上,以掌心点坐标为中心划定一个长宽各为160像素的区域A ; 步骤S32:建立一个长宽各为160像素的二维的二值图像Z ; 步骤S33:对于区域A中的每个点m,若其深度值与掌心点深度值的差的绝对值在1000深度单位以内,则把二值图像Z中与点m位置相对应的位置的像素值置为1,否则把二值图像Z中与点m位置相对应的位置的像素值置为O ; 步骤S34:把在深度图像中的掌心点和腕点映射到二值图像Z的二维空间中,得到掌心映射点和腕点映射点; 步骤S35:计算获得掌心映射点与腕点映射点之间的距离d ; 步骤S36:以腕点映射点为圆心,以d/2为半径在二值图像Z的二维空间中画圆,把二值图像Z中位于该圆内的像素值均改为0,从而在二值图像Z中去除腕部区域; 步骤S37:获取二值图像Z中的手掌外轮廓,再把手掌外轮廓中的点依次映射到Kinect获取的彩色图像中进行肤色检查,在二值图像Z中把其映射点不符合肤色要求的点的像素值置为O,从而在二值图像Z中得到具有精确的二维外轮廓的手掌区域。
5.根据权利要求4所述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述把手掌外轮廓中的点依次映射到Kinect获取的彩色图像中进行肤色检查包括:将Kinect获取的彩色图像从RGB颜色空间转换到HSV颜色空间,HSV空间中的H分量表示色调,由于不同人种的肤色的H分量基本一致,因此利用H分量进行肤色检查,对H分量设置阈值T0,经过H阈值分割,将在阈值范围内的手掌外轮廓中的点的像素值赋值为1,否则赋值为O,则可以得到精确的二维外轮廓的手掌区域。
6.根据权利要求3所述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤S23包括: 步骤S41:复制二值图像Z,得到二值图像B ; 步骤S42:使用形态学的腐蚀算法,将二值图像B中的手掌区域腐蚀至原有面积的20%,并记录腐蚀次数k ; 步骤S43:使用形态学的膨胀算法,将经过腐蚀后的二值图像B中的手掌区域膨胀k+3次;步骤S44:用二值图像Z减去二值图像B,得到仅包括手指区域的二值图像C ; 步骤S45:利用opencv的外轮廓计算函数二值计算得到图像C中的每个手指的二维外轮廓。
7.根据权利要求2所述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤二包括: 步骤S4:根据各个手掌特征点的起始位置,在手势库中寻找出与手掌特征点的起始位置相匹配的手势,构成一个候选手势集合HS1,复制HSl得到另外一个候选手势集合HS2。
8.根据权利要求7所述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤三包括: 步骤S5:使用卡尔曼滤波方法对手掌特征点的运动轨迹进行跟踪与记录,在跟踪过程中,根据已经跟踪获得的各手掌特征点的运动轨迹,利用隐马尔可夫方法与HS2中的手势实时逐一进行匹配,从HS2中剔除匹配不成功的手势。
9.根据权利要求8所述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述步骤四包括: 步骤S6:如果对手掌特征点运动轨迹的跟踪与记录过程已经超过N帧,则执行步骤S7 ;如果没有超过N帧,则执行步骤S5,N为正整数; 步骤S7:如果HSl中只剩余一个手势,则该手势即为识别结果,执行步骤SlO ;如果HS2为空,则执行步骤S8 ;如果HS2中剩余多于一个手势,则执行步骤S9 ; 步骤S8:根据跟踪过程中记录的手掌各特征点轨迹,利用隐马尔可夫方法与HSl的手势逐一进行匹配,如果找到一个匹配的手势,则执行步骤SlO ;如果不能找到一个匹配的手势,则执行步骤Sll ; 步骤S9:根据跟踪过程中记录的手掌各特征点轨迹,进行去噪处理和轨迹校正后,再利用隐马尔可夫方法与HS2中剩余的手势逐一进行匹配,如果找到一个匹配的手势,执行步骤S10,如果不能找到一个匹配的手势,则执行步骤Sll ; 步骤SlO:手势识别成功,结束三维手势识别过程; 步骤Sll:手势识别失败,结束三维手势识别过程。
10.根据权利 要求9所述的一种基于Kinect深度图像的三维手势识别方法,其特征在于,所述N为100。
【文档编号】G06F3/01GK103941866SQ201410137566
【公开日】2014年7月23日 申请日期:2014年4月8日 优先权日:2014年4月8日
【发明者】刘景 , 吴煌灿, 李智娴, 林辉, 金永霞, 孔令爱 申请人:河海大学常州校区