基于Kinect的体感虚拟鼠标研究与开发
2016-04-08陈滨时岩
陈滨++时岩
摘要:利用微软Kinect体感设备进行骨骼数据采集,开发出一款利用手势动作控制计算机的体感虚拟鼠标软件。并在开发过程中设计并提出一种基于RGB-D信息的人体手势动作检测及识别方法来处理Kinect输出的彩色影像和深度影像。该方法分别利用DBSCAN与K-means聚类算法获取手势操作特征中的位置信息和方向信息来识别手势操作,实验结果证明了该方法的可行性。借助基于该方法开发的虚拟鼠标软件,用户只需要做出一些简单的手臂动作即可操作虚拟鼠标完成对计算机的控制。
关键词:计算机应用;手势识别;聚类;Kinect
中图分类号:TP393.0
文献标识码:A
DOI:10.3969/j.issn.1003-6970.2016.02.012
引言
目前电脑主要依靠键盘输入和鼠标点击图形用户界面(GUI)来实现人机互动。Kinect作为微软推出的一种新型体感设备及基于动作和声音感应的体感技术,它创造了一种与众不同的人机互动模式——自然用户界面(Nature User Interface)。基于Kinect体感设备和体感技术,我们身边的电脑将越来越能够理解人类的手势和语言,电脑也将在本质上更具人性化。
Kinect提供了一系列新技术,诸如深度传感、骨骼追踪、语音和人体识别等,开创了新的人机界面基础。Kinect首先被应用到游戏开发,譬如赛车、球类运动和虚拟城市等。但游戏仅仅是Kinect应用的一个小方面,它致力于应用到各种不同的设备上面,包括Windows的电脑、电视、手机,来创造新的自然用户界面。不可否认,Kinect已经成为当前学术界和产业界研究开发的热点。
本文通过开发体感虚拟鼠标,利用Kinect体感设备进行数据采集,并基于RGB-D(Red Green Blue-Depth)信息进行行为检测、行为识别处理,通过处理其输出的彩色影像串流数据(RGB信息)和深度影像串流数据(Depth信息),并对这些特征数据采用聚类分析算法来获得手掌的位置信息和手臂的运动方向信息来识别用户的手势特征,使得用户可以通过手势操作来控制电脑。
1 手势动作识别系统概述
1.1 Kinect
Kinect是美国微软公司于2010年11月4日推出的Xbox 360游戏机体感周边外设的正式名称,Kinect集成传感器、处理芯片和软件中间件在内。其中,传感器又包括:红外激光(也有人称之为“结构光”),用于三维点云捕捉,像素为640x480,含像素深度;基于点云的彩色影像(像素为1600x1200),能够显著改善视觉效果;可进行语音识别的音频麦克风。这些信号的处理离不开一项核心技术:由PrimeSense公司生产的芯片和软件中间件。其中,软件中间件包括:
(1)参考设计(Reference Design),获取三维影像的深度;
(2)NITE(Nature Interface Technology Enhanced)中间件,处理深度数据(特征检测和姿势识别)。
其产品结构如图l所示:
1.2 系统功能模块设计
整个系统分为界面显示模块和控制模块,显示模块完成获取的影像显示及交互显示,控制模块负责Kinect相关管理和数据获取,并进行骨骼数据的处理及动作识别的控制,进而完成交互控制。详细的系统功能模块设计如下图所示:
从上述功能模块设计可以看出,控制模块是实现系统功能的关键模块,其主要功能是处理由Kinect采集的彩色影像,并进一步处理在二维的RGB图像上增加的Kinect深度信息以形成骨骼数据来研究手势的识别,这与传统的仅仅基于RGB图形信息获得动作手势有所不同。
由于微软Kinect SDK并没有包含手势识别引擎,因此需要我们结合实际系统需求与最佳实践来设计一种手势识别方法。
2 基于RGB-D信息的手势检测方法
传统的基于计算机视觉的技术区分人手掌有一定的困难,通常需要加上一些限制,如使用白色背景,或者让用户穿戴特殊颜色的手套来作区分。这些方法的目的是为了降低分割的难度,提高分割的精准性,但是这种方法对于用户有很大的限制。本文利用Kinect的深度探测技术,首先识别场景中的目标人物手臂,然后利用Kinect进行特征选择,并对特征数据进行处理,最后采用聚类算法获取聚类结果。
2.1 目标识别
目前用来进行目标检测的方法主要有3种:背景相减法、光流计算法和帧差法。本文采用的是基于深度信息的背景相减法。
与传统的背景相减法相同,基于深度信息的背景相减法也是首先在没有目标出现的场景中提取背景模型,只不过提取的背景模型是图像中各个点的深度信息。计算公式为
其中,Bk(z)为背景图像上第k个点的深度值,Nk(z)为当前帧上第k个点的深度值,δ为设定的阈值,当G(k)=1时,表明该点为目标物体上的点。
在实际操作中,Kinect传输来的数据会包含目标人物的正面信息以及部分侧面信息。因为物体的正面各点具有大致相同的深度值,且其深度值必定小于其侧面的深度,因此可通过提取符合公式1条件的所有点中的最小深度值,并将其余各点的深度值与深度最小值做差值计算,当差值的绝对值在某一阈值范围内时,表明此点为目标正面的点。
2.2 手掌位置提取
在整个虚拟鼠标系统中,手臂的位置特征起到相当重要的作用。相同的手型在不同的位置可以表达出不同的含义。本文所提方法首先通过Kinect获取位置特征数据,然后对位置特征数据采用主成分分析法处进行处理,最后利用DBSCAN(Densiy-Based SpatialClustering ofApplications with Noise)聚类算法进行聚类分析。
本文方法首先利用Kinect SDK中自带的NITE(Nature Interface Technology Enhanced)函数获取目标个体上半身中如下3个主要骨骼节点的3D坐标:左手、左肘与左肩。然后计算这3个骨骼节点两两之间的相互关系,从而构成维度为3的单手位置特征。
有了手臂位置的特征数据后,本文方法开始分析手臂在空间的分布密度情况,并对不同的分布密度情况进行聚类。在传统的聚类算法中,,DBSCAN算法就是一种基于密度的聚类算法。该算法将具有一定密度的区域划分为簇,可以在含有“噪声”的空间数据集中发现任意形状的簇集。因此,本文方法采用基于密度的DBSCAN聚类算法进行手臂位置聚类。
DBSCAN算法利用簇的高密度连通性,采用迭代查找的方法,查找并计算在已知给定扫描半径eps的范围内的对象数量,当对象数量超过已知给定的最小值时,就构成一个聚类结果。为了获取最优的聚类结果,在实验过程中不断优化参数eps和给定的最小值,最终获得相对最优的聚类结果。
2.3 手臂运动方向提取
人体手势中,位置特征占据主要作用,方向信息起到补充作用。本文首先通过Kinect设备获取方向信息,然后利用OpenCV图像处理方法对方向信息进行处理,得到方向特征信息,最后利用K-means聚类算法对方向特征进行聚类,得到方向单元。
手势的方向信息主要分为两个部分:手型的方向和手肘与手腕构成的方向。
在手型方向上,本文方法首先通过Prime Sense提供的手跟踪函数获取手心3D坐标,然后利用OpenCV的图像处理相关函数cvThreshold等将手部的坐标信息进行二值化处理,利用函数cvFindContours、cvConvexHu112和cvConvexityDefects等方法分别获取手的轮廓、凸起和凹陷等图像信息。通过结合Kinect原始的3D坐标信息进一步确定手的指尖坐标。最后计算手心坐标到指尖坐标的单位向量(x1,y1,zl),得到手势方向信息。
在手肘与手腕构成的方向上。利用Kinect获得的双手手肘坐标和手腕坐标,计算手肘到手腕的单位向量(X2,y2,z2),得到手肘方向信息。
得到上述两类方向信息后,本文方法引入K-means聚类算法,对方向信息进行聚类分析。实际情况中,在方向特点上我明年可以凭经验直观地确定为东、南、西、北、东南、西南、东北、西北等8个方向,因此,在可以确定聚类结果数量和选取有代表性的坐标作为这8个聚类的初始中心的情况下,本文方法采用K-means聚类算法获取方向单元。具体的实施步骤如下所示:
(l)设定8个方向的单位向量作为初始化簇心,如(0,0,1)作为方向向北的初始化簇中心;
(2)分别计算每个对象到各个簇中心的欧几里得距离,将对象分配到最近的簇中心;
(3)当数据库中所有对象分配完毕,计算每个簇中所有对象的平均值。
3 实验结果分析
3.1 手势语识别实验
手势语是人们在运用手臂时,所出现的具体动作与体位。它是人类最早使用的、至今仍被广泛运用的一种交际工具。在一般情况下,手势既有处于动态之中的,也有处于静态之中的。在长期的社会实践过程中,手势被赋予了种种特定的含义,具有丰富的表现力。本实验选取了30个常见手势语进行识别实验,通过对图3中的手势语进行识别试验,来验证本文提出的基于RBG-D骨骼追踪技术获取并正确识别手势的可行性。
该实验分以下两个步骤进行:
1)数据采集。对每个手势语采集40个手指语样本,一共1200个样本,其中样本是从4位同学在教室、寝室等环境下采集,且采样者均无神经相关及骨骼相关病史。
2)实验设计。首先从每个手势语样本中随机抽取20个作为训练集,剩下的样本作为测试使用。最后利用600个测试集对本文所提出的基于RGB-D的人体手势动作识别方法进行测试,采用欧几里得距离作为相似性度量准则,并计算其识别率,实验结果如表1所示:
从表1可以看出,本文所提出的基于RGB-D信息的手势检测和识别方法的平均识别率为84.80%,其中一些手势语(如A、C、SH)的识别率达到了90%以上,因此该方法取得了良好的效果。
3.2 图片浏览与缩放测试
通过不同的手势实现相应的功能,挥手进行移动页面,用双手拉伸和上下移动等进行页面的缩放、滚动浏览、移动等操作。当用户想选定某张图片时,只需挥手将光标移动到被选图片上,并做出点击手势,如图4所示:
当用户想缩放选定图片时,只需合拢或张开手掌,图片变回相应地缩小或者放大。如图5所示:
从上面的程序测试结果可以看出,本文所开发的基于RGB-D信息的手势识别方法的虚拟鼠标交互软件满足了人们日常使用电脑的操作需求,创造了一种全新的人机交互方式。
4 结论
本文方法有效地利用了微软Kinect体感设备的优势,通过对人体手势的深度特征信息和Kinect骨骼跟踪技术的使用,并将其有效地与DBSCAN和K-means聚类算法结合,分别从手掌位置和手臂运动方向两个组成部分提取有效的手势识别信息,形成本文所提出的基于RGB-D信息的人体手势动作识别方法,并以此为基础开发出能够控制计算机的体感虚拟鼠标软件,实现一种全新的人机交互方式。但是,该方法目前的手势识别准确率有待进一步提高,这也是未来软件优化的着力点。