一种基于三维K曲率的指尖检测方法与流程

文档序号:11143200阅读:835来源:国知局
一种基于三维K曲率的指尖检测方法与制造工艺

本发明涉及一种基于三维K曲率算法的指尖检测方法,属于机器视觉技术领域。



背景技术:

随着计算机视觉的发展,基于视觉的指尖检测方法已成为人机交互领域的研究热点。在基于视觉的指尖检测,前人已经做了大量的研究工作,然而以前的许多算法只专注于提取二维的指尖并且在手指移动的情况下不能稳定的检测出指尖点。在传统的指尖检测过程中,最常见的方法就是对彩色图像进行肤色检测,但此方法则过于受到光照强度和类肤色背景的影响。随着2010年微软推出Kinect以及其他种类带有深度信息相机的普及,越来越多的研究者通过利用带有深度信息的摄像机对手势和指尖点进行研究。深度信息可以很有效的把场景划分为几个区域,并滤除掉一些区域,即使这些区域有一些相同的特征,如:颜色,轮廓,形状等。Kinect是一种结合RGB摄像头和深度摄像头的相机,它能够获取点云来模拟三维数据。这使得在未知的复杂环境中,人类活动和物体识别变得更加容易。三维手部识别和跟踪也得到了广泛的研究,并应用于不同领域,如:活动识别、手势识别、机器人控制、增强现实等。

对于三维指尖点检测问题,国内外已经有不少专家学者在这方面做了研究。Jahangirnagar Univ.,Dhaka等人利用Kinect的深度图像信息以及基于像素分类的方法进行指尖点检测,并对手势抓取和释放进行识别,平均识别率达到96.96%,但其并未对弯曲指尖点的检测进行研究。Marek Vaneo,Ivan Minarik等人通过基于Kinect深度信息和骨骼信息相结合,利用K曲率算法检测手指指尖点,平均识别率为93%,但其太依赖于骨骼节点,需要Kinect拍摄到整个人体的骨骼框架才能定位手部,在实际应用中,十分不方便。以上方法都只是处理深度图像信息,并未模拟出三维数据。C.M.Mateo,P.Gil等人通过Kinect的深度、彩色信息合成点云,模拟场景的三维数据,并通过肤色检测方法获取人体肤色区域集合,并随后对每个区域计算凸点,通过凸点的个数判定手部区域,并把凸点的最大轮廓的中心作为掌心点,通过掌心点到凸点的距离来判定指尖点。但是,此方法指尖点的判定太过依赖于掌心点的位置。而本发明能够很好地解决上面的问题。



技术实现要素:

本发明目的在于针对上述现有技术的不足,提出了一种基于三维K曲率的指尖检测方法,该方法主要解决了现有技术中太过于依赖骨骼节点和掌心点位置等问题。该方法以三维点云图像为基础,首先对Kinect获取的点云数据进行滤波,然后基于颜色的区域增长对其分割,得到若干区域,然后用肤色检测的方法获取手部区域的点云数据,然后对手部的点云进行滤波以剔除一些空间离散点,再利用K曲率算法的思想去处理点云数据,即人手指尖点到一定距离的手部点的最大夹角小于一定阈值,然后通过确定一个阈值得到指尖候选点,对其指尖候选点聚类,最终得到指尖点,从而实现指尖点的检测。

本发明解决其技术问题所采取的技术方案是:本发明提出一种基于三维K曲率算法的指尖检测方法,该方法包括如下步骤:

S1,通过RGBD摄像装置采集包含人手的三维点云图像

该步骤中利用由微软发布的Kinect传感器结合点云库PCL(Point Cloud Library)和OpenNi获取包含人手的点云数据。

S2,对点云图像进行直通滤波剔除部分非手部点云

该步骤中利用直通滤波器处理点云图像,对其z值进行直通滤波,过滤掉一些点云数据,保留深度值z在x1到x2之间的点云数据。

S3,对滤波后的点云进行颜色区域增长

在滤波后的RGBD点云图像进行颜色区域增长,把点云图像基于颜色分割为若干块。

S4,肤色检测算法检测并提取手部区域

该步骤中在分割后的点云图像中利用肤色检测算法进行手部区域检测并提取。

S5,利用三维K曲率算法在人手上检测出指尖点

该步骤中基于上一步分割出的手部点云,利用K曲率算法的思想去处理点云数据,即人手指尖点到一定距离的手部点的最大夹角小于一定阈值,然后通过确定一个阈值得到指尖候选点。

S6,聚类获取指尖点的个数并判断手势

该步骤采用K-means聚类算法处理上一步获取的指尖候选点,得到的聚类中心个数,即为指尖点的个数。

进一步地,本发明步骤S2包括,通过直通滤波滤除三维点云图像中深度值Z大于2或小于0.5的点云。

进一步地,本发明所述步骤S3包括,利用区域增长在点云图像中进行基于颜色的分类。

进一步地,本发明所述步骤S4包括,通过肤色检测算法确定手部属于颜色分类后的哪一类,并提取手部区域。

进一步地,本发明所述步骤S5包括,通过三维K曲率算法,即人手指尖点到一定距离的手部点的最大夹角小于一定阈值,然后通过确定一个阈值得到指尖点。

进一步地,本发明所述步骤S6包括,通过三维点云的空间点坐标进行聚类,并根据聚类结果判断指尖点个数。

有益效果:

1、本发明在不同位置,不同背景,不同光照环境下,很好地检测出指尖点。

2、本发明与实际指尖点的距离误差很小,具有较好的精确性、鲁棒性。

3、本发明的指尖点检测不依赖于掌心点。

附图说明

图1为基于三维K曲率算法的指尖检测方法流程图。

图2为场景点云图。

图3为滤波后场景点云图。

图4为颜色区域增长示意图。

图5为手部区域图。

图6为指尖点检测结果和手姿结果。

具体实施方式

下面结合说明书附图对本发明创造作进一步的详细说明。

参照附图来描述本发明的各方面,附图中示出了许多说明的实施例。本发明的实施例不必定意在包括本发明的所有方面。应当理解,本发明介绍的多种构思和实施例,以及下面更加详细地描述的那些构思和实施方式可以以很多方式中任意一种来实施,这是因为本发明所公开的构思和实施例并不限于任何实施方式。另外,本发明公开的一些方面可以单独使用,或者与本发明公开的其他方面的任何适当组合来使用。

图1为根据本发明某些实施例的基于三维K曲率算法的指尖识别方法的流程图,具体包括如下步骤:

S1,采集手部的点云图像;

S2,对点云图像进行滤波;

S3,对滤波后的点云进行基于颜色的区域增长分割;

S4,利用肤色检测算法在点云图中分割出手部;

S5,通过三维K曲率算法检测出指尖候选点;

S6,通过K-means算法将指尖候选点聚类为n个指尖点。

下面结合附图所示,更加具体地描述前述基于头部姿势识别的智能移动服务机器人控制方法的示例性实现。

步骤S1中,用户坐于智能轮椅上,手放于距离Kinect 50到100厘米处,采集手部点云图像。其效果如图2所示。

步骤S2,对采集到的点云图像进行直通滤波,保留深度值Z大于0.5小于1的点云数据。其滤波效果如图3所示。

步骤S3,对滤波后的点云进行基于颜色的区域增长分割,其具体步骤如下所示:

S31,选择RGB颜色空间进行颜色相似度区分。

S32,确定颜色相似度测量标准,包括以下几个步骤:

S321,首先选取欧式距离来表示其颜色距离,通过计算欧式距离来区分不同颜色。

S322,假设点云数据中的第i,j个点的颜色量分别为Ci,Cj,则此两点之间的颜色距离为:

S323,在基于区域生长的点云分割过程中,由于一个区域的颜色可能会分布不均匀,故一般用整个区域的颜色量,来计算与候选点的颜色相似度。点云数据中的第i个点的颜色量Ci与生长区域的平均颜色量的欧式距离为:

其中,

S33,根据点云的颜色信息(即RGB)来进行点云分割,包括以下几个步骤:

S331,首先,在分割区域中选择任意一点Pi,然后搜索Pi的所有相邻点。

S332,再颜色相似度准则判定Pi的各相邻点是否与Pi是同一类,并同时设定一个颜色阈值。

S333,若同时满足颜色阈值和颜色相似度则把改点进行归类并做种,若只满足颜色相似度准则便只归类不做种。

S3334,从Pi出发,直到其子种子不在出现,则一类聚类完成,随后在剩余的部分继续重复以上步骤,直到整个聚类完成。其聚类效果如图4所示。

步骤S4,利用肤色检测算法在点云图中分割出手部,其具体步骤如下所示:

S41,采用RGB颜色空间对上述点云类检测出肤色区域。当场景在自然光照下,辨别肤色的公式为:

R,G,B为RGB图像中每个像素点的值,其范围为0到255。

当场景在人造光照下,其辨别肤色的公式为:

无论处于何种场景,肤色点只需满足其中一组公式,即可判定为肤色点。

S42,对点云数据进行基于颜色的区域增长后,判定其中哪类是属于肤色类,其步骤如下所示:

S421,遍历每一类的点云,得到其R,G,B三个分量的平均值其公式如下所示:

其中,Ri,Gi,Bi为每一类点云中第i个点云的R,G,B分量。n为每一类点云的点云个数。为每一类点云的R,G,B三个分量的平均值。

S422,判定其中哪类属于肤色类,并获取手部区域,效果如图5所示。

S5,通过三维K曲率算法检测出指尖候选点,其步骤如下:

S51,以点云数据中其任意一点O为球心,R1,R2为半径做两个球面,来割手部的点云数据,其中R1>R2。若点云分布在这两个球之间,则将其存入集合C。即点云数据中任意一点P到C的距离在R1,R2之间。其公式为:

其中x0,y0,z0分别为球心点O的x,y,z坐标值,xp,yp,zp分别为p的x,y,z坐标值。

S52,根据上述公式遍历整个点云数据得到其属于两个球之间的点云数据C。

S53,求出球心点O与点云C中的任意两点点云Ci,Cj的最大夹角α。设β为球心点O与球环内点云中的任意两点点云Ci,Cj的夹角,其cosβ的计算公式为:

其中di为球心O到点Ci的距离,dj为球心O到点Cj的距离,dij为点Ci到Cj的距离。只需根据上述公式遍历球环内的点云数据即可得到最大夹角的余弦值cosα。

S54,根据手部外形可知,指尖点与非指尖点的cosα有十分明显的区别,故选取一个角度阈值θ来判定其是否为指尖点。若α<θ则判定该点为指尖点,反之则说明其为非指尖点。

步骤S6,通过K-means算法将指尖候选点聚类为n个指尖点,并根据指尖点个数确定手势,其结果如图6所示。

结合以上所描述的指尖检测方法,在光照度适中的室内,Kinect摄像头放置在手部前方50-100厘米处,手部随意做出不同手势,摆放在不同位置,均能较好的检测出指尖点。

虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1