基于KINECT的多手指实时跟踪方法技术

技术编号:16398974 阅读:44 留言:0更新日期:2017-10-17 19:29
本发明专利技术公开了一种基于KINECT的多手指实时跟踪方法,步骤一:手部区域分割;步骤二:基于像素分类的指尖检测;步骤三:获取指尖的三维位置;步骤四:三维指尖轨迹跟踪。本发明专利技术提供的基于KINECT的多手指实时跟踪方法,可以实时,迅速而准确地进行手指跟踪,系统稳定性高,用户体验度高,反映速度快。

Multi finger real time tracking method based on KINECT

The invention discloses a real-time tracking method based on multi finger KINECT step 1: hand segmentation; step two: pixel classification based on fingertip detection; step three: get the 3D position of fingertip; step four: 3D fingertip trajectory tracking. The multi finger real-time tracking method provided by the invention can track finger quickly and accurately in real time, and the system has high stability, high user experience and fast speed of reflection. The KINECT system has the advantages of high stability, high user experience and high speed.

【技术实现步骤摘要】
基于KINECT的多手指实时跟踪方法
本专利技术涉及基于KINECT的多手指实时跟踪方法,属于生物特征计算机识别

技术介绍
在虚拟现实和人机交互系统中,实时、准确并且稳定的多手指跟踪能给用户带来友好的交互体验。基于其丰富的应用前景,三维多手指跟踪得到了研究者的广泛关注,其算法主要分为四个步骤:手部区域的分割、指尖的检测、指尖三维位置的获取、指尖三维位置及其轨迹的跟踪。其中,手部区域的分割是很重要的一个步骤,因为它直接决定了指尖检测算法的准确性。但是该方法的缺点是易受灯光等外部环境的影响,在光照条件不好的情况下容易失败。为此,一些研究者利用红外相机来得到可靠的手分割区域,然而红外相机价格昂贵。还有一些研究者通过给出一些限制条件,如固定的背景、固定的光照等来得到较好的分割区域,但此方法限制了手指跟踪的应用场合。指尖的检测算法主要分三类:基于轮廓、基于形状、基于模板。基于轮廓方法的缺点是它要求手部区域的轮廓比较准确,否则就会出现错误;基于模板匹配的方法也有此缺点,而且速度比较慢。至于基于形状的方法,要确定一个合适的open操作窗口大小是比较困难的。随着微软公司KINECT设备的推出,利用这一廉价的硬件设备,能够实时捕获场景的彩色和深度信息。一些研究者尝试利用KINECT进行多手指跟踪的研究,但都是在KINECT给出的深度图的基础上设计更加鲁棒的二维指尖检测算法,并没有在得到二维指尖点之后,继续利用KINECT给出的深度值来跟踪指尖点的三维坐标和轨迹。本软件实现的算法利用KINECT的深度图来分割手部区域,并且根据KINECT的数据特点,提出了一个改进的基于像素分类的指尖检测算法。在此基础上,再利用KINECT的深度图,获得指尖的三维坐标,然后通过应用帧之间连续性的卡尔曼滤波器实现指尖三维位置和轨迹的稳定跟踪。相比之下,本专利技术的算法能稳定地跟踪到指尖的三维位置,不仅能实现2D人机交互,还能有效地进行3D人机交互。本专利技术的算法更加简单,速度更快,在一般PC平台,同时跟踪两个手的所有手指的情况下,也能达到20+FPS,跟踪一个手能达到40+FPS。
技术实现思路
目的:为了克服现有技术中存在的不足,本专利技术提供基于KINECT的多手指实时跟踪方法。技术方案:本专利技术通过如下技术方案来实现:一种基于KINECT的多手指实时跟踪方法,包括步骤如下:步骤一:手部区域分割;步骤二:基于像素分类的指尖检测;步骤三:获取指尖的三维位置;步骤四:三维指尖轨迹跟踪。所述手部区域分割包括如下步骤:1a:利用NITE库来跟踪手的中心点位置,再根据中心点深度坐标,提取深度手部区域:其中,Zhand表示跟踪到的手的中心点的深度值,Z(x,y)表示像素点(x,y)处的深度值,thresh表示手的最大深度范围;handmask(x,y)表示手部区域的辨别函数;1b:将步骤1a中的像素点,范围缩小到一个包括手部区域的包围盒内;令包围盒内的手部区域handmask(x,y)=255,包围盒外的区域handmask(x,y)=0;其中,W(Z)表示以手的中心点为中心的包围盒,Z为相应坐标的深度值包围盒大小与手距离KINECT的关系如下:Width(W(Z))=Heigth(W(Z))=2*min{max{80-0.2*(Z-640),60},80}其中,Width(W(Z))和Heigth(W(Z))分别代表包围盒的水平宽度与垂直高度的数值。所述基于像素分类的指尖检测,包括如下步骤:2a:将KINECT深度值离散化为六段:[501mm,600mm]、[601mm,700mm]、[710mm,800mm]、[801mm,900mm]、[901mm,1000mm]、[1001mm,1100mm];设每一段的gap1与gap2取值分别为gap1i与gap2i;利用KINECT提供的手指轮廓获得指尖位置,以指尖为圆心画半径为20px的圆,交点距离为手指宽度Fli,对应六段区域Fli分别取10px、10px、12px、13px、14px、15px,令delta=3px,则可求出两圆半径:gap1i=FLi/2-deltagap2i=FLi/2+delta2b:根据2a的结果对二值图像进行基于像素的分类:a.若像素点p为圆心,gap1为半径的圆区域中手区域所占比例的大小不大于该圆面积的一半,判定像素点p在手部区域外;b.若像素点p为圆心,gap1为半径的圆区域中手区域所占比例的大小大于该圆面积的一半,判定像素点p在手部区域内;c.若像素点p为圆心,满足b的前提下,以gap2为半径的圆与手区域有四个交点,判定像素点p在手指区域;d.若像素点p为圆心,满足b的前提下,gap2为半径的圆与手区域有两个交点,且交点间距离小于对应的手指的宽度Fli,判定像素点p在指尖区域。所述获取指尖的三维位置,选取指尖区域内像素点p周围以3px为半径的圆在xy平面中的所有点进行取样,若采样点深度值与圆心点深度值差值大于10px,则舍去,计算剩余采样点深度值的均值作为圆心点的深度值。所述三维指尖轨迹跟踪,包括如下步骤:4a:建定卡尔曼滤波器预测指尖点位置:首先,在每一帧中,测量指尖点在三维中的位置和速度,定义卡尔曼滤波器的状态向量为xt=(x(t),y(t),z(t),vx(t),vy(t),vz(t))其中,x(t),y(t),z(t)表示指尖点在三维中的坐标位置,vx(t),vy(t),vz(t)表示在每一帧中指尖点的速度;同理,定义卡尔曼滤波器的观察向量为yt=(x(t),y(t),z(t))观察向量表示指尖点在每一帧中的三维坐标;列出卡尔曼滤波器方程:xt+1=Fxt+Gwtyt=Hxt+vt其中,F是状态转移矩阵,G是驱动矩阵,H是观察矩阵,wt是状态向量xt的系统误差,vt是观察误差,表示指尖点检测算法和KINECT深度检测的误差:其次,假设ΔT<0.05s,连续两帧之间的指尖点的运动近似看作是匀速直线运动;F,G和H定义如下:最后,利用每个手指的卡尔曼滤波器,通过手指在t帧的位置预测手指在t+1帧时候的位置;4b:预测指尖点和检测指尖点之间的匹配跟踪:在当前帧,利用基于像素分类的指尖检测方法检测出当前帧的所有指尖点;同时,利用卡尔曼滤波器通过上一帧预测出当前帧指尖点所在的位置;将预测指尖点位置和检测指尖点位置按手中心点顺时针排列后做组合匹配,找到匹配误差最小的组合作为最终结果,匹配误差的值是指尖点三维位置的欧氏距离的差值;之后,利用匹配误差最小的组合中的卡尔曼滤波器的预测位置来代替真实位置,如此一直跟踪下去;4c:处理指尖数量的变化跟踪在第一种情况下,操作者确实改变了指尖的数量;当指尖数量增加时,开启新的卡尔曼滤波器来跟踪它;当指尖数量减少时,终止相应的卡尔曼滤波器;在第二种情况下,由于误差和运动模糊的原因,在某些帧某些指尖点检测不到或者误检测到多余的指尖点;首先,设置计时器用于当指尖数量开始变化时计算时间;其次,若计算时间大于某个阈值,则判断指尖数量变化是第一种情况;否则判断指尖数量变化是第二种情况,卡尔曼滤波器不变化。作为优选方案,计时器的阈值设置0.2s。有益效果:本专利技术提供的基于KINECT的多手指实时跟踪方法,可以实时,迅速而准确地进行手指跟本文档来自技高网
...
基于KINECT的多手指实时跟踪方法

【技术保护点】
一种基于KINECT的多手指实时跟踪方法,其特征在于:包括步骤如下:步骤一:手部区域分割;步骤二:基于像素分类的指尖检测;步骤三:获取指尖的三维位置;步骤四:三维指尖轨迹跟踪。

【技术特征摘要】
1.一种基于KINECT的多手指实时跟踪方法,其特征在于:包括步骤如下:步骤一:手部区域分割;步骤二:基于像素分类的指尖检测;步骤三:获取指尖的三维位置;步骤四:三维指尖轨迹跟踪。2.根据权利要求1所述的基于KINECT的多手指实时跟踪方法,其特征在于:所述手部区域分割包括如下步骤:1a:利用NITE库来跟踪手的中心点位置,再根据中心点深度坐标,提取深度手部区域:其中,Zhand表示跟踪到的手的中心点的深度值,Z(x,y)表示像素点(x,y)处的深度值,thresh表示手的最大深度范围;handmask(x,y)表示手部区域的辨别函数;1b:将步骤1a中的像素点,范围缩小到一个包括手部区域的包围盒内;令包围盒内的手部区域handmask(x,y)=255,包围盒外的区域handmask(x,y)=0;其中,W(Z)表示以手的中心点为中心的包围盒,Z为相应坐标的深度值包围盒大小与手距离KINECT的关系如下:Width(W(Z))=Heigth(W(Z))=2*min{max{80-0.2*(Z-640),60},80}其中,Width(W(Z))和Heigth(W(Z))分别代表包围盒的水平宽度与垂直高度的数值。3.根据权利要求1所述的基于KINECT的多手指实时跟踪方法,其特征在于:所述基于像素分类的指尖检测,包括如下步骤:2a:将KINECT深度值离散化为六段:[501mm,600mm]、[601mm,700mm]、[710mm,800mm]、[801mm,900mm]、[901mm,1000mm]、[1001mm,1100mm];设每一段的gap1与gap2取值分别为gap1i与gap2i;利用KINECT提供的手指轮廓获得指尖位置,以指尖为圆心画半径为20px的圆,交点距离为手指宽度Fli,对应六段区域Fli分别取10px、10px、12px、13px、14px、15px,令delta=3px,则可求出两圆半径:gap1i=FLi/2-deltagap2i=FLi/2+delta2b:根据2a的结果对二值图像进行基于像素的分类:a.若像素点p为圆心,gap1为半径的圆区域中手区域所占比例的大小不大于该圆面积的一半,判定像素点p在手部区域外;b.若像素点p为圆心,gap1为半径的圆区域中手区域所占比例的大小大于该圆面积的一半,判定像素点p在手部区域内;c.若像素点p为圆心,满足b的前提下,以gap2为半径的圆与手区域有四个交点,判定像素点p在手指区域;d.若像素点p为圆心,满足b的前提下,gap2为半径的圆与手区域有两个交点,且交点间距离小于对应的手指的宽度Fli,判定像素点p在指尖区域。4.根据权利要求1所述的基于KINECT的多手指实时跟踪方法,其特征在于:所述获取指尖的...

【专利技术属性】
技术研发人员:卢光宏童晶尹薇娜顾晨婷
申请(专利权)人:河海大学常州校区
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1