基于Kinect深度信息的指尖检测及手势识别

2017-06-02 11:58周涛余磊邵武钱燕
中国新通信 2017年8期
关键词:人机交互

周涛+余磊+邵武+钱燕

【摘要】 传统二维图像基于肤色的手势识别受背景影响严重,针对这一情况,改进了一种基于Kinect三维深度信息的指尖检测及手势识别算法。在获取深度图像后,利用开源库OpenNI的手势生成器获取手心位置,设定邻近深度阈值提取手部轮廓,同时跟踪手部。结合OpenCV相关函数对图像进行进一步形态学预处理,重置手心后通过道格拉斯-普克算法逼近轮廓,结合凹缺陷特征检测指尖,识别手势。实验结果表明,该方法能在复杂背景下有效的检测指尖和识别手势,具有良好的鲁棒性。

【關键词】 Kinect openNI OpenCV 指尖检测 手势识别 人机交互

引言

在人机交互领域,手势一直是研究的热门对象。传统的手势识别一般都将二维颜色图像中肤色和背景的区别分割出手部。传统的利用肤色进行手部的前景分割,利用人的肤色在YcrCb颜色空间或HSV颜色空间的聚类特性分割手部,但是容易受到光照影响,背景要求较高。本文通过引入Kinect的深度图像改进了一种有效分割手部,检测指尖并识别数字手势的方法。首先利用OpenNI的API获取大概手心位置,根据手心位置深度信息值设定邻近深度阈值分割手部区域,结合opencv库相关函数预处理后,在传统的凸包检测上对轮廓做D-P逼近后,检测凹缺陷特征算法得出指尖数。

一、手势分割原理

基于深度信息图像的手势分割和指尖识别包括深度图像采集、手势分割、指尖检测和结果显示。通过打开Kinect的深度数据流获取深度图像,利用邻近阈值分割手部,指尖检测采用基于D-P逼近的凹缺陷检测法,最后显示结果。

二、实验过程

2.1系统整体流程

整个系统的流程图如图1所示。

2.2深度图像获取

Kinect包括RGB摄像头、红外摄像头和红外发射器组成的深度传感器。Kinect相对普通摄像头的优点就是它的红外传感器可以通过黑白光谱的方式来探测空间内的物体到传感器的距离,生成3D景深图像。本文中利用Kinect的3D深度传感器以30帧/每秒获取图像,实时获取手部动态图像。

2.3 OpenNI获取手心位置

OpenNI是一个多语言、跨平台的框架,提供相应的API接口与外接的硬件进行交互。目前OpenNI支持的硬件包括:3D Sensor 、RGB Camera、IR Camera和Audio Device 4类。我们在离Kinect 1m左右的距离内挥动手掌,利用OpenNI中的HandsGenerator类检测并获取手心位置。

2.4 手部分割

在检测和追踪到手心的位置后,可根据手心的深度值对深度图像进行分割。在分割前采取中值滤波的方式滤除图像的噪声。中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。中值滤波对边缘信息的保护也非常适合本文对滤波的要求。滤波后再利用opencv库提供的erode()和dilate()对图像进行形态学处理。

我们对图像先进行膨胀后腐蚀操作,然后根据公式(1)对手部进行提取。

式(1)中,z为手心的深度,T为设定的手掌阈值,本文中设定阈值为5。经过分割的图像如图(2)所示。图(2)中左为未经处理的图,右图为处理过的手部分割图,对比发现处理后轮廓周围噪点明显变少,为进一步轮廓提取打下基础。

其中中的p,q表示图像X,Y维空间上的矩,n表示像素个数。

重置手心后对轮廓进行D-P逼近。本文采用道格拉斯-普克算法优化凸包。识别效果如图3。图3中表示的数字分别为原图,深度图,手部分割二值图,手部分割图,轮廓图和识别结果。

三、实验结果和分析

实验环境:PC端CPU Core i5-4200H,内存8GB,操作系统Windows10 。在Visual studio 2013 环境下,利用openNI开源库结合opencv 2.4.9来进行算法设计。传感器为Kinect for XBOX360.深度图像分辨率为640×480。

如图4所示。本文算法可以有效检测1到5个指尖。相对于传统的相机,Kinect所采集的深度信息能通过距离将背景信息去除,只对手部图像进行处理,很好的克服了环境的变化和背景的干扰等因素。本文将本文从实验中随意每个数字取300帧图像,统计检测结果,得到表1数据。统计正确定义为伸出手指数和Result显示结果数相同,否则 错误。

四、结论

本文提出了一种基于深度图像的手指分割和手指检测方法。利用openNI找到手,利用深度信息分割手部,结合openCV相关函数对图像进行进一步处理,利用道格拉斯-普克算法优化凸包后,判断出手指数目,且准确率较高。实验结果表明,基于深度图像的方法能够克服相关环境影响,在优化算法的情况下,准确地识别手势,鲁棒性较高。本文的方法可以为复杂背景下有效识别手势提供参考。

参 考 文 献

[1]程文山,谈国新.基于肤色分割和 Camshift 的手势识别研究[D]. 武汉: 华中师范大学,2009

[2]陈艳艳,陈正鸣,周小芹. 基于 Kinect 的手势识别及在虚拟装配技术中的应用[J]. 电子设计工程,2013,21(10):4-7.

[3]王劲东,武频.一种基于Kinect的指尖检测算法[J].计算机技术与发展,2016,(26)7:14-18.

[4]Douglas D H,Peucker T K.Algorithms for the reduction of the number of points required to represent a line or its caricature[j].The Canadian Cartographer, 1973,10(2):112-122.

[5]邓瑞,周玲玲,应忍冬. 基于 Kinect 深度信息的手势提取与识别研究[J]. 计算机应用研究,2013,30(4):1263-1265.

[6]Lee Jaemin, Hironori Takimoto, Hitoshi Yamauchi. A Robust Gesture Recognition based on Depth Data[C]. The 19th Korea-Japan Joint Workshop on Frontiers of Computer Vision. 2013:127-131.

[7]Jagdish L. Raheja, Ankit Chaudhary, Kunal Singal. Tracking of Fingertips and Centres of Palm using Kinect[C]. Computational Intelligence, Modelling & Simulation. 2011:248-252.

[8]李博男,林凡.基于曲率的指尖检测方法[J].南京航空航天大学学报,2012,44(4):587-591.

猜你喜欢
人机交互
某型柴油机虚拟维修系统研究
基于虚拟现实技术的九江城市交通事故模拟系统设计
人机交互课程创新实验
多点噪声远程自动采集系统设计