基于深度相机的空间手势姿态指令处理方法\n技术领域\n[0001] 本发明涉及基于深度相机非接触式三维虚拟空间领域,尤其涉及一种基于深度相机的空间手势姿态指令处理方法。\n背景技术\n[0002] 近几年,人机交互、机器人和虚拟现实等领域的快速发展和广泛应用,三维交互输入新技术成为人机虚拟交互领域中众多研究学者研究的热点。随着这项技术的发展和不断深入,大众对其使用需求越来越高,非接触、高速、实时定位与三维操作成为该技术发展的方向。然而,通常利用动态手势实现三维鼠标模拟装置,利用三维空间位置传感器或搭建虚拟三维场景辅助实现,且其操作方式有限。由于受复杂环境、光照条件和干扰等因素的影响较为严重,与理想环境相比,普通相机在室内环境中,采集的图像信息无法准确表达动态三维手势鼠标的操作信息,鲁棒性有更大程度的降低,所以,其实用性和定位操作精度会大大下降,使其非接触鼠标操作装置性能降低。在复杂环境下,能克服光照条件和肤色背景等条件的干扰是解决非接触鼠标操作装置最先完成的工作部分,即对空间中手势分割性能指标提出更高的要求,并准确定位出手势鼠标的位置。但是,目前在复杂背景下的分割方法有手势模板、肤色检测等方法能在一定条件下提高操作稳定性,但无法满足光照条件变化及抗干扰的要求。如果无法准确定位手势的空间位置,那么后续的动态识别操作将受到影响,如动态手势鼠标跟踪、识别等。\n[0003] 2010年12月在《光电工程》的第37卷第12期公开了名为《基于动态手势控制的交互式体三维显示》文献,公开了通过对二维相机水平面围绕显示空间捕获二维信息的手势图像处理,实现了人机交互。上述文献在静态手势检测部分,通过检测二维图像数据相邻帧差中特定区域,确定初始动态跟踪区域,结合手部肤色模型进行静态手型检测,其方案抗外界干扰能力差,无法适应较复杂环境;在动态手势特征提取,是通过在二维平面上对手势轨迹做Freeman八方向编码处理,提取出动态手势特征,其计算数据较大,无法精确、快速获取数据。同时,上述文献通过二维相机水平面围绕显示空间捕获二维信息,其装置结构复杂,效率较低。\n发明内容\n[0004] 本发明针对上述问题,提供了一种在复杂多变的环境中,能够快速、准确识别空间手势指令信息,极大程度提高工作效率及准确度,且鲁棒性高、实用性强、抗干扰能力好的基于深度相机的空间手势姿态指令处理方法。\n[0005] 本发明的技术方案包括以下步骤:\n[0006] 1)、通过深度相机获取实时的图像,所述图像包括深度图像和RGB彩色图像;\n[0007] 利用OpenNI应用框架对两所述图像中人体进行用户定位和骨骼跟踪,根据所述骨骼跟踪获取所述人体的手部关节点坐标信息;\n[0008] 根据所述手部关节点坐标信息,获得所述手势的手掌中心点坐标信息,同时设定所述手势深度信息的阈值,将手势从两所述图像中分割出来,实时得到所述人体的手势深度信息和RGB彩色信息,同时有效地圈出动态手势的位置;\n[0009] 2)、对上述步骤1)中所述手势深度信息,利用三维点云计算得到手势点云数据,计算后的所述手势点云数据只包括所述点的三维坐标位置信息,然后对所述手势点云数据做数据滤波处理,滤除掉所述手势点云数据中的噪声干扰点;得手势点云信息;\n[0010] 3)、将步骤2)中所述手势点云信息,通过旋转、平移将手势点云信息三维信息进行平面配准,保存配准后手势点云信息,然后提取出手势点云信息的轮廓特征点信息,所述轮廓特征点包括指尖点、指尖凹点和手掌中心点;\n[0011] 4)、根据步骤3)中所述轮廓特征点信息结合深度图像的像素深度值映射出所述轮廓特征点的深度值,通过欧式距离法做距离阈值判断、筛选出关键指尖点信息,根据所述指尖点信息和对应指尖凹点信息结合所述平面配准的平面获取五个手指特征矢量,根据所述特征矢量恢复出手势姿态;\n[0012] 5)、根据步骤4)所述特征矢量的条件筛选进行三种手势姿态识别;所述三种手势姿态的指令及相应指令处理:”Grab”手势,定义为模拟抓取当前三维空间位置物体;”Fist”手势在空间连续运动时,定义为拖动操作,表示运动手势模拟拽拖或移动当前空间位置物体;”Kick”手势定义为点击操作,表示运动手势模拟点击当前空间位置信息,且连续输出空间坐标的信息;\n[0013] 6)、根据步骤5)手势姿态识别的结果,在特定手势姿态下,跟踪步骤1)中所述的动态手势的运动轨迹,自动标定一垂直于深度体感相机的虚拟参考平面,当动态手势在标定平面上有运动变化时,测出手势鼠标在标定平面上的相应运动,识别其运动轨迹做并做相应模拟手势鼠标处理操作;当动态手势出现垂直于相机的运动轨迹时,识别相应运动轨迹定义其操作内容,最终通过TUIO协议对动态手势鼠标输出点进行数据平滑。\n[0014] 所述手势深度信息的阈值范围为80~100mm。\n[0015] 步骤2)中所述三维点云计算为:\n[0016] 式中,(X,Y,Z)分别表示目标手势点三维信息的坐标值,\nx0,y0分别为手掌中心点坐标的XY轴坐标值,x,y表示有效手部区域P(x,y).z≠0点的二维图像坐标值,P(x,y).z表示所述深度图像中有效手部(x,y)坐标点对应深度值,F是所述深度相机的焦距;得所述点的三维坐标位置信息,Z值是对应坐标点的所述深度值。\n[0017] 所述步骤2)的所述滤波处理设置滤波的欧氏距离阈值范围为0.02mm,最近邻搜索k-D树搜索次数设为100。\n[0018] 所述步骤3)中点云信息配准公式为: 式中,配准前点三维信\n息p0(Xc,Yc,Zc)和配准后点的三维信息q0(Xw,Yw,Zw),λ为比例因子且λ=1,其中R为正交旋转矩阵和平移矩阵T,且配准前和配准后的点三维信息的满足最小二乘法。\n[0019] 步骤3)中所述欧式距离法做距离阈值判断、筛选出关键指尖点信息:首先通过R=min{d3{vj,c0)},计算得出的手掌半径R值,然后通过d3(pi,c0)>2*R,进行筛选出关键指尖点信息;式中d3表示三维空间的欧氏距离计算,式中pi表示指尖的三维坐标,vj表示指尖凹点的三维坐标,c0表示手掌中心点的三维坐标。\n[0020] 步骤5)中所述特征矢量的条件筛选:\n[0021] \n[0022] 式F是特征量,αi表示第i个手指特征矢量,A表示阈值,所述特征矢量满足α1=-10°~45°,α2~5=-15°~90°条件。\n[0023] 步骤6)所述动态手势运动过程中手掌坐标运动距离须大于50mm。\n[0024] 所述识别其运动轨迹做并做相应模拟手势鼠标处理操作:手势运动大小通过差值特征量来衡量,所述差值特征量表达式为:\n[0025] \n[0026] θ=tan-1(||G||)\n[0027] 式中,Pi表示第i帧深度图像上指尖点坐标,Pi-1表示第i-1帧深度图像上指尖点坐标,‖G‖表示点与点之间的梯度,θ表示角度。\n[0028] 本发明采用深度相机能够快速、准确全方位获取目标的深度图像和RGB彩色图像信息;采用基于OPENNI应用框架中骨骼定位跟踪,对校正Psi姿势的用户自动提取骨骼信息,得到用户手掌关节三维坐标点,结合手势姿态深度信息做阈值分割提取出手势姿态部分,来减少复杂环境对目标手势分割的影响,能够适应复杂多变环境;同种手势姿态在不同情况下会产生角度差异或者摄像头摆放的角度偏差,都会影响到手势的识别准确率,降低装置整体运行效率,本发明通过对目标手势姿态的三维信息恢复和角度校准能极大提高目标手势姿态识别的准确率;通过对目标手势姿态关节三维坐标点在三维空间中的手势轨迹做方向编码并提取出相应的特征向量,能够快速识别手势姿态,且数据处理量少、准确度高;本发明还采用基于深度相机的深度信息,建立在目标手势姿态空间中运动检测区域,提取出运动平面区域不同深度信息的点实现空间中手势姿态的多点触摸,且利用TUIO多点可触通信协议,从而大大改善了深度相机的空间手势姿态指令处理方法的整体操作性能,大大提高了深度相机的空间手势姿态指令处理方法的鲁棒性和实用性。\n附图说明\n[0029] 图1是本发明的工作流程框图,\n[0030] 图2是本发明的Psi标准校正姿势的示意图。\n具体实施方式\n[0031] 本发明如图1-2所示,包括以下步骤:\n[0032] 第一步、通过深度相机获取实时的图像,所述图像包括深度图像和RGB彩色图像;\n[0033] 所述深度相机是一种基于结构光编码原理,能采集RGB图像和深度图像的相机。\n所述深度图像包括场景的二维XY坐标信息、反映场景中距摄像头远近的像素深度值信息。\n所述深度值是由IR摄像头红外光测距接收反射距离表示,表现为深度图像中灰度值;所述深度值越大,对应实际场景中离相机平面距离越远,即离相机越近则深度值越大。\n[0034] 利用所述深度相机捕获图像时的帧频设置为30FPS,所述深度相机采集图像大小一般为640×480像素,分辨率为5mm左右。\n[0035] 利用OpenNI应用框架对两所述图像中人体进行用户定位和骨骼跟踪,根据所述骨骼跟踪获取所述人体的手部关节点坐标信息;根据所述手部关节点坐标信息,获得手势姿态的手掌中心点坐标信息;同时设定所述手势深度信息的阈值,将手势从两所述图像中分割出来,实时得到所述人体的手势深度信息和RGB彩色信息。\n[0036] 所述OpenNI(开放自然交互)是一个多语言开放框架,支持多种操作平台。该框架本身定义了包括人体骨骼等自然操作程式的API程序,利用其API应用与对应接口建立通信。\n[0037] 所述用户定位是启动深度相机OpenNI应用框架后,需要对用户进行Psi标准姿势(如图2所示的人体姿态示意)的校正标定,校正成功后,可获取用户人体骨骼的24个关节资料,其中双手手部关节参数分别为9和15。\n[0038] 所述骨骼跟踪是根据系统API程序定义,User Generator(使用者生成器)提供整个骨骼关节信息,分布包括XN_SKEL_HEAD(头部)、XN_SKEL_LEFT_SHOULDER(右肩)、XN SKEL_LEFT_ELBOW(右肘)、XN_SKEL_LEFT_HAND(右手)等关节,从而获取所述人体的关节信息,本发明中跟踪定位用户的手部关节点位置信息为XN_SKEL LEFT_HAND(右手)。\n[0039] 本发明中,设D(x,y)表示所述深度图像中(x,y)坐标处的深度值,根据所述手掌中心点坐标信息Pi(x0,y0,D(x0,y0)),D(x0,y0)为中心点所对应的深度值。首先,以所述手掌中心点(x0,y0)坐标为原点,划取出深度图像中所述手势姿态区域:\n[0040] \n[0041] 公式中,(x,y)坐标为点在深度图像中坐标,W(x,y)表示所述坐标对应的深度值。\n[0042] 由于深度值表示距离相机的远近,本发明通过设置合适的深度值的阈值将所述手势区域的手部姿态深度图像信息分割提取出来,同时,阈值界定分割之前对W(x,y)=0处的无效点置最大值处理。\n[0043] 从所述手势姿势区域的图像中分割出手势的深度信息的公式为:\n[0044] \n[0045] 在公式中P(x,y).z表示手部的深度值,W(x,y)表示深度图像中所述手势姿态区域与(x,y)坐标所对应的深度值,(x,y)坐标满足|x-x0|≤70(mm)且|y-y0|≤70(mm)范围,其中Tp表示手掌厚度深度阈值,范围为80~100mm。\n[0046] 依据分割出手势的所述深度信息从RGB图像中提取出手势部分,公式为:\n[0047] 当P(x,y).z≠0时,\n[0048] 公式中I(x,y).r,I(x,y).g,I(x,y).b分别表示RGB图像中对应(x,y)坐标点R,G,B三个通道的灰度值,经过以上RGB图像分割处理可以得到彩色手势图像部分,有效的圈出动态手势的位置。\n[0049] 第二步、对上述步骤一中所述手势深度信息,利用三维点云计算得到手势点云数据,计算后的所述手势点云数据只包括所述点的三维坐标位置信息,然后对所述手势点云数据做数据滤波处理,滤除掉所述手势点云数据中的噪声干扰点;得手势点云信息。\n[0050] 所述三维点云计算为:\n[0051] \n[0052] 式中,(X,Y,Z)分别表示所述目标手势点三维信息的坐标值,x0,y0分别为手掌中心点坐标的XY轴坐标值,x,y表示有效手部区域P(x,y).z≠0点的二维图像坐标值,P(x,y).z表示所述深度图像中有效手部(x,y)坐标点对应深度值,F是所述深度相机的焦距;得所述点的三维坐标位置信息;所述深度相机焦距F=570.3mm;所述三维点云计算是将二维坐标信息转换到三维坐标信息,对其进行三维空间的点云坐标变换计算线性归一化处理。\n[0053] 由于所述点云计算中Z值由对应坐标点的所述深度值直接得出,则所述手势点云数据在坐标轴中Z方向上的分布,会根据深度图像灰度值大小变化,即距摄像头平面越近则点云数据Z轴方向上越靠近原点。\n[0054] 所述滤波处理将所述手势点云数据基于欧式距离算法设置阈值和K-D树搜索最临近点数据进行滤除所述干扰点,所述阈值范围为0.02mm,所述k-D树搜索次数设为100;\n所述k-d树(k-维树的缩写)是在k维欧几里德空间组织点的数据结构。k-d树可以使用在多种应用场合,如多维键值搜索。k-d树是二叉树的一种特殊情况。\n[0055] 通常所述点云数据中不仅包含点的三维坐标位置信息,还能附带点云的其他信息,如颜色、几何关系信息等,这就使点的信息由{x,y,z}扩展到包含{l1,l2,..,lm}特征量的多维点集。由于只需要知道手势个点之间在空间中的位置关系,所以只利用{x,y,z}表示点云的结构,不附带其他特征信息量。\n[0056] 上述式中z是指通过点云换算公式后所得到的Z值,表示物体与摄像头所在平面的水平距离。\n[0057] 第三步、将步骤二中所述手势点云信息,通过旋转、平移将手势点云信息三维信息进行平面配准,保存配准后手势点云信息,然后提取出手势点云信息的轮廓特征点信息,所述轮廓特征点包括指尖点、指尖凹点和手掌中心点。\n[0058] 所述手势点云配准是把从不同角度采集得到的点云数据,通过空间转换把它们匹配到同一空间位置;在数学上,所述点云配准即两个点云点集P={p0,p1,p2...}和Q={q0,q1,q2...}之间的空间坐标旋转和平移变换(其中点集中每个点都包含该点的三维信息量p0(Xc,Yc,Zc)和q0(Xw,Yw,Zw),根据拟人眼成像原理,为获取目标三维信息从而需要对双目摄像机做标定。理想摄像机成像模型是小孔模型,其数学表达式如下,且满足两个点云集的应用最小二乘法目标函数最小:\n[0059] 且f(R,T)=Vfmin\n[0060] 式中,λ为比例因子,R为正交旋转矩阵和平移矩阵T。\n[0061] 最小二乘法(又称最小平方法)是一种数学优化技术,它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。\n[0062] 本发明根据步骤二中滤除噪声干扰点后的所述手势点云数据,计算所述手势对应手掌所在面积较大的拟合平面,将所述拟合平面的手势点云数据通过刚性变换[RT]变换到与XOY面上:首先,提取出所述手势对应手掌部分深度值最小点Pk|z=min;然后,提取所述手势点云数据最左Pk|x=min、最右Pk|x=max、最上Pk|y=max和最下Pk|y=min的四个边界点,组成所述拟合平面的点云集数据,计算拟合所述拟合平面的平面参数{A,B,C,D};然后,根据所述拟合平面和所述XOY面的平面参数,计算所述手势刚性变换正交旋转矩阵R和平移矩阵T,其中设置λ=1;即所述拟合平面的手势点云数据通过矩阵变换配准得到的所述XOY面在平面内,具有旋转的自由度;由于通过与所述XOY面刚性变换配准,得到的所述点云数据以z轴方向投影到所述XOY面的二值图像正好与该手势姿态正方向对齐,基于配准后得到二值图像具有所述手势姿态正面的特征信息,经过所述点云数据投影到二维图像上,利用轮廓凸包、k曲率计算,提取出所述手势姿态的轮廓特征点即轮廓峰值点(指尖)、谷点(指尖凹点)和手掌中心点。\n[0063] 第四步、根据步骤三中所述轮廓特征点信息结合深度图像的像素深度值映射出所述轮廓特征点的深度值,通过欧式距离法做距离阈值判断、筛选出关键指尖点信息,根据所述指尖信息和对应指尖凹点信息结合步骤三中配准平面获取五个手指特征矢量,根据所述特征矢量恢复出手势姿态。\n[0064] 首先根据步骤三中所述轮廓特征点(指尖、凹点和手掌中心点)的二维XY坐标信息,结合深度图像的像素深度值(与摄像头平面的水平距离表示)映射出所述轮廓特征点的深度值;由所述点云计算公式得出所述轮廓特征点的三维坐标(X,Y,Z),该手势轮廓特征点三维坐标信息组成一组关键特征点向量{p1,...pi,v1,...vj,c0}|i=0~5,j=0~4,式中pi表示指尖的三维坐标,vj表示指尖凹点的三维坐标,c0表示手掌中心点的三维坐标;\n[0065] 然后计算出手掌半径R=min{d3(vj,c0)},式中d3表示三维空间的欧氏距离计算,基于计算得出的手掌半径R值,对关键的所述特征点中的可能指尖点pi做距离阈值判断d3(pi,c0)>2*R;\n[0066] 通过阈值筛选出关键指尖点pi后,然后求取手势手指与手掌平面(即XOY坐标平面)间旋转特征矢量,即以配对的[vj,pi]与XOY平面之间的夹角向量作为手势姿态旋转的所述特征矢量αi|i=0~5,最后得到所述特征矢量{α1,α2,α3,α4,α5},通过所述特征矢量定义手势形状,获取手指与手掌之间几何特征矢量,若对应没有指尖pi,则对应αi=0。上述特征点运算都属三维坐标下的pi(x,y,z),vj(x,y,z),c0(x,y,z),其中x,y,z坐标均由所述三维点云计算得出。用所述特征矢量进行手势识别效率快、准确度高。\n[0067] 第五步,对步骤四中提取的所述特征矢量进行决策树判断,其中所述特征矢量满足α1=-10°~45°,α2~5=-15°~90°条件,通过从最大旋转角度特征量做逐级筛选。其中对”Kick”、”Grab”、”Fist”三种手势姿态分别取以定义特征量阈值,通过判断所述特征量F的值αi大于某一阈值A,是表示可能弯曲,不是表示不弯曲:\n[0068] \n[0069] αi表示第i个手指特征矢量,i的数值对应手指顺序是:i=1是表示大手指到i=5是表示小手指。\n[0070] 对特征矢量不同的手势再加以区分,然后再对满足条件的特征量数手势姿态进行所述三种手势姿态识别。\n[0071] 所述三种手势姿态指令及相应指令处理:”Grab”手势,表示运动手势模拟抓取当前三维空间位置物体;”Fist”手势在空间连续运动时,定义为拖动操作,表示运动手势模拟拽拖或移动当前空间位置物体;”Kick”手势在z轴方向(即垂直于深度相机的方向)运动深度阈值大于Tv=50~150mm时,定义为点击操作,表示运动手势模拟点击当前空间位置信息,且连续输出空间坐标的信息。\n[0072] 第六步、针对步骤五的识别结果,在特定手势姿态下,跟踪步骤一中所述的动态手势的运动轨迹,自动标定一垂直于深度体感相机的虚拟参考平面(平面厚度为10mm),当动态手势在标定平面上有运动变化时,检测出手势鼠标在标定平面上的相应运动,识别其运动轨迹做并做相应模拟手势鼠标处理操作;当动态手势出现垂直于相机的运动轨迹时,识别相应运动轨迹定义其操作内容,最终通过TUIO协议对动态手势鼠标输出点进行数据平滑。\n[0073] 所述手势动态运动过程中手掌坐标运动距离须大于50mm。\n[0074] 对轨迹输出点数据进行TUIO协议平滑滤波,有效的减少运动过程中的噪声干扰。\n所述的TUIO协议是一个定义标准协议与应用编程接口的开放架构,主要对图像输出数据进行平滑操作和传输。对物理空间中不同方向上手势的运动轨迹,分别定义手语内容。\n[0075] 当所述目标手势在所述标定的平面上运动时,通过对所述目标手势运动轨迹进行所述三种模式识别,进行相应的手势指令处理;\n[0076] 在所述手势指令处理过程中,所述手势运动大小通过差值特征量来衡量,所述差值特征量表达式为:\n[0077] \n[0078] θ=tan-1(||G||)\n[0079] 式中,Pi表示第i帧深度图像上指尖点坐标,Pi-1表示第i-1帧深度图像上指尖点坐标。前后两帧深度图像中指尖点信息相减,计算出点与点之间的梯度‖G||,以此判断运动强度及角度θ。\n[0080] 本发明还提供了一些根据实际情况可调整其他的参数值,以保证所述手势鼠标模拟达到较好效果。其中,当出现不同程度大小的噪声点时,可通过调整检测手势鼠标坐标大小范围;若出现图像中运动方向与实际方向相反或者摄像头摆放的方向不同时,可以通过调节 位置调换。