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

合集下载

基于深度信息的指尖追踪及手势识别

基于深度信息的指尖追踪及手势识别

基于深度信息的指尖追踪及手势识别顾德;李吉【摘要】This paper presents an algorithm to realize the finger and palm tracking based on the depth information in real time. The recognized actions can be used for hand pose recognition. The depth map of the hands is captured by Kinect, which then converts the depth map to 3D point cloud in a form of pixel matrix. Fingers and direction of palms are calculated by using K-curvature algorithm. Finger names are determined according to their relative distances. Experimental results show that the present method effectively achieves the finger and palm tracking, and is unaffected by light and complex background. This method can apply to hand pose recognition.%提出了一个基于深度信息对手指和手部进行实时跟踪,并可用于手势识别的方案。

用Kinect获取深度信息,然后生成手部的三维点云,进行过滤转换成像素矩阵;使用K-curvature算法获取指尖和手掌方位,然后通过手指之间的相关距离进行手指标定。

实验结果证明该方案识别追踪效果稳定且高效,不受光照和复杂背景影响,能够同时跟踪双手共10个手指和2个掌心的动作轨迹,并用于手势识别。

基于微软Kinect的手势识别技术研究

基于微软Kinect的手势识别技术研究

基于微软Kinect的手势识别技术研究近年来,随着科技的快速发展,各种智能设备也逐渐普及。

其中,基于微软Kinect的手势识别技术备受关注。

这一技术通过使用Kinect摄像头和深度传感器,可以感知人体的运动姿势和动作,并将其转化为相应的指令,实现对设备的控制。

本文就从技术原理、应用场景及发展趋势等方面进行探讨。

一、技术原理微软Kinect是一款专门用于游戏控制的设备,其核心技术在于3D深度摄像头和红外发射器。

摄像头能够捕捉周围环境的深度信息,而红外发射器则能够检测人体的运动姿势。

其中,深度摄像头通过红外线的反射和接收,可以精确地测量物体距离,将其转化为三维坐标。

而红外发射器则可以发射红外信号,以检测人体在空间中的运动。

基于这一技术,Kinect的手势识别功能应运而生。

通过人体骨架模型的建立和动作捕捉算法,Kinect可以识别人体姿态和动作,并将其转化成计算机能够理解的指令。

例如,向左移动手臂可以控制游戏中的角色向左转动,向前伸手可以控制角色前进等等。

同时,Kinect还支持语音控制和面部表情识别等功能,大大提升了用户的交互体验。

二、应用场景手势识别技术作为一种新兴的交互方式,已经得到了广泛的应用。

除了游戏控制以外,其实际应用场景还包括人机交互、智能家居、虚拟现实等领域。

在人机交互领域,手势识别技术可以被应用于机器人控制、医疗诊断、智能办公等方面。

例如,在智能办公场景中,用户可以通过手势控制电脑的开关、程序的启动以及文档的编辑等操作,提高工作效率。

在智能家居领域,手势识别技术可以被应用于智能家电的控制、家庭安防等方面。

例如,在智能家电方面,用户可以通过手势控制灯光的开关、音响的播放以及电视的切换等操作,提高家居生活的便利程度。

在虚拟现实领域,手势识别技术可以被应用于3D模型设计、游戏控制等方面。

例如,在游戏领域中,用户可以通过手势控制游戏角色的动作和攻击技能,提供更为真实的游戏体验。

三、发展趋势手势识别技术虽然已经取得了很大的进展,但还有很多发展空间。

《2024年基于Kinect的手势识别与机器人控制技术研究》范文

《2024年基于Kinect的手势识别与机器人控制技术研究》范文

《基于Kinect的手势识别与机器人控制技术研究》篇一一、引言随着人工智能技术的不断发展,人机交互技术已成为研究热点之一。

其中,基于Kinect的手势识别技术因其高精度、高效率、低成本的优点,得到了广泛的应用。

而将手势识别技术应用于机器人控制,则能够进一步拓展人机交互的范畴,提高机器人的智能化水平。

本文将对手势识别技术和机器人控制技术进行深入的研究和探讨,基于Kinect传感器进行实验和分析。

二、Kinect传感器及其应用Kinect是微软公司开发的一款体感设备,具有捕捉人体动作、语音和手势等功能。

在计算机视觉、人机交互、机器人控制等领域有着广泛的应用。

基于Kinect的手势识别技术,可以通过捕捉人体手部动作的信息,实现对手势的准确识别和解析。

同时,Kinect还可以实时监测人体骨骼的位置和运动状态,从而更精确地完成动作捕捉。

三、手势识别技术研究基于Kinect的手势识别技术,主要通过以下步骤实现:首先,利用Kinect传感器捕捉人体的骨骼信息;其次,通过算法对手部骨骼信息进行提取和预处理;然后,利用机器学习算法对手势进行分类和识别;最后,将识别的手势信息转化为计算机可以理解的指令或命令。

在手势识别技术中,机器学习算法的应用至关重要。

常见的机器学习算法包括支持向量机(SVM)、随机森林(Random Forest)、神经网络等。

这些算法可以通过训练大量的手势样本,提高手势识别的准确性和鲁棒性。

此外,深度学习算法在手势识别中也得到了广泛的应用,如卷积神经网络(CNN)等。

四、机器人控制技术研究机器人控制技术是实现人机交互的关键技术之一。

基于Kinect的手势识别技术可以实现对机器人的控制。

在机器人控制中,需要将识别的手势信息转化为机器人的运动指令或动作。

这需要借助于计算机视觉技术和运动规划技术。

计算机视觉技术可以实现对机器人周围环境的感知和识别,从而为机器人的运动规划提供依据。

运动规划技术则可以根据机器人的任务需求和周围环境信息,规划出最优的运动轨迹和动作。

基于Kinect的手势识别算法研究及应用

基于Kinect的手势识别算法研究及应用
sensor
Digital TV simulation control
割方法¨-及基于人为增加限制的方法(如有些系统要求使用者
0引

戴上有色手套∞1)。手势的特征提取是影响手势识别率的关键 因素,目前特征值的选取有很多方法。7J1:选择手掌区域、手掌 中心及手的倾斜度,或提取手掌轮廓区域的几何特征或手掌的 运动轨迹等进行分析识别;在手势识别环节,识别方法可以分为 基于规则的手势识别。9 o和基于机器学习的手势识别¨””1。其 中基于机器学习的手势识别方法通过学习大量的训练样本特征 向量来确定分类器,是一种鲁棒性较高的手势识别方法。目前 手势识别中人手分割与定位主要是从彩色的视频帧图像或静态 图像中提取颜色及形状等信息进行手势的定位与识别,但颜色 特征易受光照变化和人手肤色等因素的影响使得在复杂背景下
trajectories
using Kinect and extracts the
tangent.ande
of
trajectory
as the feature,then employs the improved hidden Markov model to the proposed dynamic hand gestures recognition algorithm
technology.In order
to
improve the performance of Kinect—based hand gesture recognition,we propose the static hand gestures recognition algorithm,which is based
that the
proposed static hand gestures recognition algorithm obtains hi【sher recognition rate.The palm

基于深度信息的指尖追踪及手势识别

基于深度信息的指尖追踪及手势识别
b a c k g r o u nd . Th i s me t h o d c a n a p p l y t o ha n d po s e r e c o g n i t i o n.
Ke y wo r d s : d e p t h d a t a ; i f n g e r t i p d e t e c t i o n ; g e s t u r e r e c o g n i t i o n ; Hu ma n - Ma c h i n e I n t e r a c t i o n ( HCI )

要: 提 出 了一 个基 于深度 信 息对手指 和 手部进行 实时跟 踪 , 并可用 于手 势识别 的方案 。用 K i n e c t 获取 深度信
息, 然后生成手部 的三维点云 , 进行 过滤转换成像素矩 阵; 使用K - c u r v a t u r e 算法获取 指 尖和手掌方位 , 然后通 过手 指 2 1Leabharlann 40 6 2 , Ch i na
GU De ,LI Ji . Ha nd a nd ing f e r t r a c ki n g b a s e d o n Ki ne c t de pt h i n f o r ma t i o n .Co mp ut e r En g i ne e r i n g a n d Appl i c a —
s h o w t ha t t h e p r e s e nt me t h o d e f f e c t i v e l y a c h i e v e s t h e in f g e r a n d p a l m t r a c k i n g ,a n d i s u n a f f e c t e d b y l i g ht a n d c o mp l e x

3基于Kinect深度信息的手势识别_王艳

3基于Kinect深度信息的手势识别_王艳

第28卷第1期2013年2月北京信息科技大学学报Journal of Beijing Information Science and Technology UniversityVol.28No.1Feb.2013文章编号:1674-6864(2013)01-0000-05基于Kinect 深度信息的手势识别王艳,张奇志(北京信息科技大学自动化学院,北京100192)摘要:设计了一种基于Kinect 深度信息和双阈值分割的运动手势识别算法。

结合OpenCV 和OpenNI ,在vs2010环境下实现了该算法。

利用Kinect 的深度摄像头获取深度图像;对该图像进行双阈值分割,获取手部图像;再对手部图像进行形态学处理,获取完整的手形;最后,利用OpenNI 的手势生成器GestureGenerator 对手势进行跟踪识别。

利用深度图像进行手势识别,通过双阈值分割,不仅去除了背景干扰,也能去除一部分前景干扰。

用不同颜色点、圆和线的形式表示各种手势,可以清晰地实时显示识别效果。

关键词:手势识别;Kinect ;深度信息;手势生成中图分类号:TP 24文献标志码:A Gesture recognition based on Kinect depth informationWANG Yan ,ZHANG Qi-zhi(School of Automation ,Beijing Information Science and Technology University ,Beijing 100192,China )Abstract :An algorithm of moving gesture recognition based on the depth information of Kinect and dual threshold segmentation is designed.The algorithm is realized under VS2010by integrating OpenCV and OpenNI.Firstly ,the depth camera of Kinect is used to get the depth image.Secondly ,the dual thresholds are used to segment the image to get the image of just hand.Then morphology process is performed for the image to achieve more integrity hand shape.Finally ,the GestureGenerator of OpenNI is utilized to track and recognize the gesture.In this method ,the obstructions of background and part of foreground are removed by dual threshold segmentation.Points ,circles and lines in different colors are used to describe the gestures ,so the results of recognition can be clearly shown in real time.Key words :gesture recognition ;Kinect ;depth information ;gesture generation收稿日期:2012-09-17基金项目:国家自然科学基金资助项目(11172047,11072038);北京市属高等学校人才强教深化计划资助项目(PHR201106131)作者简介:王艳(1987—),女,四川资阳人,硕士研究生,主要从事手势识别方面的研究。

基于KINECT深度图像信息的手势轨迹识别及应用

基于KINECT深度图像信息的手势轨迹识别及应用

收稿日期:2012-01-12;修回日期:2012-04-10基金项目:国家科技部国际合作项目(2010DFA12160);重庆市科技攻关资助项目(STC ,2010AA2055);国家自然科学基金资助项目(51075420,60905066);重庆市教委科学技术研究项目(KJ100516)作者简介:张毅(1966-),男,重庆人,教授,博导,主要研究方向为机器人及应用、数据融合、信息无障碍技术(zhangyi99@263.net );张烁(1986-),女,河南商丘人,硕士研究生,主要研究方向为图像传感与处理;罗元(1972-),女,湖北人,教授,博士,主要研究方向为机器视觉、智能信号处理、数字图像处理;徐晓东(1981-),男,山东潍坊人,博士研究生,主要研究方向为机器人视觉、人—机器人交互研究.基于Kinect 深度图像信息的手势轨迹识别及应用*张毅1a,张烁1a,罗元1b ,徐晓东2(1.重庆邮电大学a.自动化学院;b.光电工程学院,重庆400065;2.电子科技大学自动化学院,成都611731)摘要:为实现基于Kinect 深度图像信息的手势轨迹识别,提出了一种基于隐马尔可夫模型(HMM )的手势轨迹识别的方法。

首先采用新型Kinect 传感器获取图像深度信息;然后通过OpenNI 的手部分析模块获得手心的位置,提取轨迹特征;最后利用隐马尔可夫模型训练有效的轨迹样本并实现轨迹的识别。

实验结果证明,该方法能有效地识别手势轨迹,并可用于控制智能轮椅的运动。

关键词:手势轨迹识别;Kinect 传感器;OpenNI ;隐马尔可夫模型中图分类号:TP311.52文献标志码:A文章编号:1001-3695(2012)09-3547-04doi :10.3969/j.issn.1001-3695.2012.09.092Gesture track recognition based on Kinect depthimage information and its applicationsZHANG Yi 1a ,ZHANG Shuo 1a ,LUO Yuan 1b ,XU Xiao-dong 2(1.a.Institute of Automation ,b.Institute of Optoelectronics Engineering ,Chongqing University of Posts &Telecommunications ,Chongqing 400065,China ;2.School of Automation ,University of Electronic Science &Technology of China ,Chengdu 611731,China )Abstract :In order to realize the gesture track recognition based on the depth image information got by the Kinect sensor ,this paper presented a new method.First ,it used Kinect sensor to obtain depth image information.Then it obtained the position of palm through OpenNI hand analysis module ,and extracted trajectory feature.Finally ,it adopted Hidden Markov model (HMM )trained effective track sample and achieved track recognition.Experiments results show that the presented method can effectively identify the gesture track ,and apply to control intelligent wheelchair.Key words :gesture track recognition ;Kinect sensor ;OpenNI ;HMM近年来,鉴于手势具有直观性、自然性的特点,其已成为人机交互的一种重要手段[1,2]。

基于Kinect深度图像的指尖检测与手势识别

基于Kinect深度图像的指尖检测与手势识别

基于Kinect深度图像的指尖检测与手势识别高晨;张亚军【摘要】Aiming at the problem that hand gesture recognition system based on ordinary camera is susceptible to the different lighting conditions and complex background, a fingertip detection and hand gesture recognition algorithm based on Kinect depth image is proposed. First, we get depth image by Kinect sensor. Then the hand region is extracted by putting the depth of thresholds on hand point detected by using OpenNI library. Fingertip detection based on convex hull and curvature is proposed. After the number of fingertips and the location of fingertips being detected, it calculates a feature vector including the number of fingers, the angles between fingertips and horizontal of the hand, the angles between two consecutive fingers, and the distance between fingertips and hand center point. Finally, a support vector machine(SVM) is applied to identify nine scheduled number hand gesture. Five experimenters are invited to perform 9 different hand gestures in the complex environment, which each gesture is repeated at thirty times and the angle of hand gesture is different every time. The experiment results show that this algorithm can detect the number and location of fingertips, and the recognition rate of nine hand gesture is 97.1% on average. This proposed method uses simple features and has good robustness, also it is real-time.%针对基于普通摄像头的手势识别系统在不同光照条件和复杂环境下易受影响的问题,提出一种基于kinect深度图像进行指尖检测和手势识别的算法.首先利用Kinect传感器获取深度图像,再利用OpenNI手部跟踪器检测出手部的位置,根据手部位置对手势进行深度阈值分割.提出一种结合凸包和曲率检测指尖的算法,检测出指尖数目和位置后,计算出包括指尖和手掌水平方向的夹角、相邻两个指尖夹角以及指尖与掌心的距离的特征向量,最后利用支持向量机(SVM)对预定的9种数字手势进行识别.实验邀请5位实验者在复杂环境下每个手势做30次,每次的手势角度不同,实验结果表明该方法能够准确检测出指尖的数目和位置,9种数字手势平均识别率达到97.1%,该方法使用特征简单,实时性好,有较好的鲁棒性.【期刊名称】《计算机系统应用》【年(卷),期】2017(026)004【总页数】6页(P192-197)【关键词】Kinect传感器;指尖检测;支持向量机;手势识别【作者】高晨;张亚军【作者单位】北京化工大学机电工程学院,北京 100029;北京化工大学机电工程学院,北京 100029【正文语种】中文不同于以往的鼠标、键盘等交互设备, 手势作为一种新的人机交互方式, 不需要直接接触, 这种人机交互方式更接近人与人之间的交流. 手势识别系统可以通过摄像头获取包含手势的图像信息, 根据图像信息解释手势的含义, 成熟的手势识别系统已经开始应用于很多领域, 如体感游戏, 智能电视, 医疗设备, 手语识别和机器人控制等[1-3].采用普通摄像头获取图像信息进行手势识别容易受到光照和背景的影响, 针对此问题, 文献[4]通过给使用者佩带有颜色的手套来分割手势. 但是当背景有和手套颜色一样的物体时, 仍会影响手势的分割, 并且文献[4]使用的普通摄像头在光线不足的情况无法检测到手势. 而微软推出的Kinect摄像头可以同时获取彩色图像和深度图像信息, 利用深度图像进行手势识别可以避免光照和环境的影响.近几年基于Kinect的指尖检测和手势识别已经有相关的研究, 文献[5]采用三维手势模型, 将手部分成21个不同的部分, 然后使用支持向量机(SVM)做分类器识别常用的手语. 但是其模型复杂, 运算量大, 实时性较差. 文献[6]和[7]都采用深度阈值分割手势区域,默认手势区域是距离摄像头最近的, 但是当手掌和手臂垂直的情况下就会将手臂也分割出来, 降低手势识别的准确率. 文献[8]使用距离直方图来识别手势, 而文献[9]综合了距离特征和曲率特征使用多级支持向量机来识别手势. 文献[10]通过从深度图像中分割手部区域, 并建立表观特征, 再用决策树识别手势. 文献[8-10]使用的特征都较复杂, 需要的计算量较大.针对上述问题本文提出一种把指尖数目, 手部方向, 掌心和指尖距离以及指尖相对于手部水平方向夹角作为特征向量, 再通过支持向量机的方法进行手势识别的算法, 如图1所示.主要的工作步骤如下:Step 1. 检测到手部区域, 将手部区域从复杂背景中分割出来;Step 2. 根据分割出来的手势区域, 计算出手掌掌心、手部水平方向, 再结合凸包和曲率检测指尖, 最后计算出指尖相对于手部水平方向的夹角, 相邻指尖之间的夹角和指尖与掌心的距离;Step3. 最后采集9种预设数字手势样本, 用支持向量机方法训练识别手势. Kinect摄像头可以同时获取深度图像和RGB彩色图像, 并且支持骨骼跟踪和动作识别. Kinect一共有三个摄像头, 左边镜头为红外线发射器, 中间镜头是一般常见的RGB 彩色摄像头, 右边镜头是由红外线CMOS 摄像头所构成的 3D 深度传感器. 根据深度传感器可以获取摄像头一定范围内物体与摄像头的距离.2.1 基于OpenNI的手势检测通过开源库OpenNI可以检测到挥手、前推和举起三种预设手势动作并获得手部掌心的坐标. 本文采用识别效果较好的前推动作和挥手动作, 手部对着Kinect摄像头前推或者挥手时, 即可检测到手部区域,并且给出掌心的粗略坐标, 识别效果如图2所示. 距离摄像头越近的点灰度值越大, 离摄像头远的点灰度值越小, 红色的点为识别出来的掌心位置, 从图2可以发现OpenNI给出的掌心位置不准确, 本文将根据手部轮廓的最大内切圆重新计算掌心坐标.2.2 基于深度阈值的手势分割Kinect获取到的深度数据为16位, 若使用不带用户ID的方式存储深度值, 则16位中的低12位为深度值, 即最大值为4096, 其代表4.096m. 通过OpenNI获得的粗略掌心坐标包括二维坐标和深度值, 本文采用双深度阈值方法分割手势区域, 对掌心深度d在加减阈值T范围内的像素按照式(1)进行二值化, 公式如下所示:式(1)中d为掌心的深度值, T为手掌厚度的深度阈值, H(x, y)为分割后手部深度图像中点(x, y)所对应的像素值, D(x, y)为深度图像中点(x, y)所对应的深度值.为了避免手臂和手腕的干扰, 取距离掌心长宽一定的矩形作为包含手势的感兴区域, 分割效果如图3所示, 从图3(b)中可以看到经过式(1)分割出的手部区域, 其边缘存在锯齿, 会对之后的指尖检测造成干扰,针对此问题, 本文采用中值滤波和形态学开闭运算对其进行去除噪声处理, 使手部边缘平滑, 效果如图3(c)所示.3.1 手部边缘检测为了获取手部轮廓的特征, 本文采用Canny边缘检测算法, 边缘检测即检测出图像亮度变化大的区域, Canny 边缘检测算法是对信噪比和定位之乘积的最优化逼近算子, 用来计算图像边缘的梯度幅度和相位值,选取合理幅度阈值来确定边缘点[11]. 从抑制噪声方面来讲, Canny边缘检测子不容易受到噪声的干扰, 而相同尺度下LOG算子却容易受到噪声的干扰, 抑制噪声的能力要弱一些. 此外, 由于Canny边缘检测算子采用两种不同的阈值分别检测强边缘和弱边缘, 并且当弱边缘和强边缘相连时, 只将弱边缘包含在输出图像中, 故而Canny算子更容易检测出真正的弱边缘, 因此本文采用Canny边缘检测来提取手部轮廓. 检测效果如图4所示.3.2 计算手掌掌心位置通过OpenNI获得的手掌掌心坐标不够准确, 本文通过计算手部轮廓的最大内切圆来确定手掌掌心坐标和掌心圆半径. 首先计算手部轮廓内每个点到轮廓边界距离的最小值, 找出其中最大距离值所对应的点即为掌心点, 距离即掌心圆半径. 这个过程计算量会很大, 影响手势识别的实时性, 因此本文不计算感兴区间内的所有点, 而是每隔N个点计算一个点, 经过实验验证当N=4时可以保证速度和准确性. 求出的掌心圆如图5所示.3.3 计算手部水平方向为了计算指尖的相对位置, 要先计算手部水平方向, 如图6所示, xh为手部水平方向, α为手部水平方向和x轴方向的夹角, θ为手部主轴和x轴方向的夹角, 这两个夹角可以根据文献[12]中提出的方法, 利用图像中心矩计算, 公式如下所示:式(2)中θ为手部主轴和水平方向的夹角, α为手部水平方向和x轴水平方向的夹角, (2,0)mu和(0,2)mu为图像的二阶中心矩.3.4 指尖检测3.4.1 凸包结合曲率检测指尖算法本文采用凸包算法与曲率检测算法相结合的算法, 可以精确的获得指尖的位置, 首先求出包围手部轮廓的最小外接圆, 然后利用OpenCV计算机视觉开源库中函数convexHull和convexityDefects求出包含手部轮廓的凸包和凸缺陷, 手部轮廓的凸包和凸缺陷模型如图7所示, A、B、C等为手部轮廓的凸缺陷, 凸缺陷包括起始点Ps、终止点Pe、缺陷上距离轮廓凸包最远的点pd, 凸包缺陷深度Id. 根据指尖的几何特征, 指尖点应该满足的条件如下所示:1) 凸缺陷深度应该大于掌心圆半径, 但小于手部轮廓最小外接圆半径, 即ra<Id<rb.2) 凸缺陷起始点和终止点的夹角应小于90°, 即θα<90o.3) 指尖点附近最小曲率值应小于60°, 即θk<60o.检测指尖时首先将满足上述条件(1)和(2)的凸缺陷的起始点和终止点保存到点集Ap中, 并且删除重复和距离过近的点, 然后以点集Ap中的点Pi为原点, 在手部轮廓中各取Pi之前和之后的10个点, 计算这20个点的K曲率, 即向量(Ai(j), Ai(j-k))与(Ai(j), Ai(j+k))之间的夹角, 若点Pi的K曲率值小于60°并且是20个点中K曲率值最小的点, 则其为指尖点. 本文算法相比较于传统的K曲率检测指尖运算量小, 只需要计算凸缺陷起始点和终止点极其附近的20个点的K曲率, 同时有效地排除了两个手指指尖的凹点, 通过实验验证当K取值30时效果最好.上述三个条件虽然能较好的满足基本的指尖检测, 但是也存在一些不足, 如只有一个指尖时, 是没有凸缺陷满足条件1)和2), 此时我们把凸缺陷起始点和终止点夹角并且凸缺陷深度Id大于阈值Td的凸缺陷起始点和终止点存储到点集Ap中, 然后通过上述方法计算点集Ap中点的K曲率通过条件3)来检测指尖. 3.4.2计算指尖点与手部水平方向夹角在获得了掌心圆、手部方向, 指尖坐标等特征之后, 接下来计算指尖点和手部水平方向的夹角, 以及相邻两个指尖与掌心的夹角. 如图8所示, 分别计算每个指尖与手部水平方向的夹角α[i](i=0, 1, 2, 3, 4),在计算相邻两个指尖和掌心形成的夹角β[i](i=0, 1, 2, 3), 最后计算每个指尖和掌心指尖的距离D[i](i=0, 1, 2, 3, 4), 最后把计算得到的结果保存到特征向量数组中, 如式(4)所示:式(4)中fV储存特征向量的数组, N为指尖数目, []iα为每个指尖和手部水平方向的夹角, []iβ为相邻两个指尖的夹角, D[]i为每个指尖与掌心的距离.在得到手部特征向量之后, 要设计分类器根据每种手势的特征对手势进行分类. 本文采用支持向量机作为分类器, 支持向量机具有能有效发现目标函数的全局最优解, 最大化决策边界等特点13. 在解决线性问题中, SVM 能直接在该空间中划分出分割平面, 但在实际问题中更多的是非线性的问题, 支持向量机首先在低维空间中完成计算, 然后通过核函数将输入空间映射到高维特征空间, 最终在高维特征空间中构造出最优分离超平面, 从而把平面上本身不好分的非线性数据分开, 常用的核函数包括多项式核函数、径向基(RBF)核函数和 Sigmoid 核函数. 本文采用径向基函数, 因为其模型简单, 参数相对较少, 可以有效的把非线性问题转换为线性问题, 并经过实验验证径向基核函数的效果最好.为了验证本文提出方法的可靠性和准确性, 本文使用内存8G, CPU为Intel(R)*************************的笔记本作为处理平台, 使用微软Kinect一代摄像头采集图像, 通过使用开源库OpenNI、Opencv进行编程, 编程环境为VS2015, 实验包括指尖检测和手势识别两个部分, 实验过程中光照环境不稳定, 实验者与Kinect摄像头距离约为1m.5.1 指尖检测实验分析本文分别对指尖数目为0到5的六种情况进行测试, 测试过程中, 指尖的方向不断变化, 测试结果如图9所示. 然后将每种指尖数目的视频序列保存1000帧, 每隔5帧提取1帧, 共提取200帧, 统计出检测结果如表1所示.通过图9和表1可以看出, 本文提出的结合凸包和曲率检测指尖的算法平均准确率可以达到97.9%,在手部运动的过程中能准确的检测出指尖的位置和数目, 可以有效排除手腕处的干扰点, 针对不同方向的指尖都可以准确检测出来, 具有较好的鲁棒性. 同时可以看出1个手指和三个手指的误判比其他的多, 因为三个手指的情况较多, 在手指没伸直的情况下, 容易造成误判, 而一个手指则因为无法使用凸包和曲率结合算法, 容易受手腕干扰, 不同光照下的检测效果如图10所示.5.1 数字手势识别实验为了验证本文提出的手势识别算法, 本实验针对如图11所示的9种数字手势进行识别, 实验前先构建训练样本数据库, 邀请5位实验者针对每个手势做10次, 要求每个手势的角度不同, 总共采集450张样本图像, 然后对样本图像进行训练, 计算每张样本图像对应的特征向量并保存结果. 训练完成之后, 为了验证算法的鲁棒性, 再邀请另外的5个人实时检测手势, 每个手势做30次, 即测试样本图像共1350张, 每种手势的识别率如表2所示.从图11和表2可以看出, 用指尖与掌心的距离、指尖与手部水平方向的夹角以及相邻指尖之间的夹角作为特征向量可以明确的表示出每种手势的特征, 平均手势识别率可以达到97.1%, 其中手势3和手势6误检率最高, 因为手势3不是正对着摄像头时容易因为遮挡而识别错误, 手势6因为在运动过程中小拇指会因为噪声干扰而误判为手势8. 每帧手势识别处理时间平均为0.015秒, 实时性比较好. 本文方法与常用的HOG+SVM、几何特征、模板匹配方法14相比使用的特征简单, 计算量小, 准确率也相差不多.本文通过使用Kinect深度图像信息进行指尖检测和手势识别, 有效地解决了在不同光照条件和复杂背景下指尖检测和手势识别的难题, 提出一种结合凸包和曲率检测指尖算法, 避免传统曲率检测误判点多和凸包检测位置不准确的缺点. 检测出指尖后, 提出一种需要样本少, 方法简单的手势识别算法, 该方法利用指尖与手部水平方向夹角, 相邻指尖夹角以及指尖和掌心距离作为特征向量, 使用支持向量机做分类器.通过实验证明该算法手势识别精度较高, 指尖检测较准确, 能够在不同光照条件和复杂背景下进行检测,鲁棒性较好.但是本文提出的方法在手指并在一起等一些特殊情况无法准确检测出指尖, OpenNI的手部跟踪器效果不是很好, 在有遮挡的情况会跟丢手部区域, 在今后的工作中研究更精确, 鲁棒性更好的跟踪算法.1 孙丽娟,张立材,郭彩龙.基于视觉的手势识别技术.计算机技术与发展,2008,18(10):214–216.2 易靖国,程江华,库锡树.视觉手势识别综述.计算机科学, 2016,43(6A):103–108.3 李勇,高文,姚鸿勋.基于颜色手套的中国手指语字母的动静态识别.计算机工程与应用,2002,17:55–58.4 Lamberti L, Camastra F. Real-time hand gesture recognition using a color glove. Springer Proc. of the 16th International Conference on Image Analysis and Processing, 2011, 6978(1): 365–373.5 Keskin C, Kirac F, et al. Real time hand pose estimation using depth sensors. IEEE International Conference on Computer Vision Workshops, 2011, 28(5): 1228–1234.6 王艳,张奇志.基于Kinect深度信息的手势识别.北京信息科技大学学报,2013,28(1): 22–26.7 邓瑞,周玲玲,应忍冬.基于Kinect深度信息的手势提取与识别研究.计算机应用研究,2013,30(4):1263–1265.8 Ren Z, Yuan J, Zhang Z. Robust hand gesture recognition based on finger earth mover’s distance with a commodity depth cam era. Proc. of ACM Conference on Multimedia. 2011. 1093–1096.9 Domini F, Donadeo M, Marin G. Hand gesture recognition with depth data. ARTEMIS ’13 Proc. of the 4th ACM/IEEE International Workshop on Analysis and Retrieval of Tracked Events and Motion in Imagery Stream. 2013. 9–1610 曹雏清,李瑞峰,赵立军.基于深度图像技术的手势识别方法.计算机工程,2012,38(8):16–18.11 薛丽霞,李涛,王佐成.一种自适应的Canny边缘检测算法.计算机应用研究,2012,27(9):3588–3590.12 Liao SX, Pawlak M. Image Analysis by Moments. The University of Manitoba Winnipeg, 1993.13 祁亨年.支持向量机及其应用研究综述.计算机工程,2004, 30(10):6–9.14 刘淑萍,刘羽,淤俊,汪增福.结合手指检测的HOG特征的分层静态手势识别.中国图像图形学报,2015,20(6):781–788.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Transactions on Computer Science and TechnologyMarch 2014, Volume 3, Issue 1, PP.9-14 Fingertip Detection and Gesture Recognition Based on KinectDepth DataBinjue Zheng#, Liaoyin Zhao, Yixuan WangInstitute of Computer Application Technology, Hangzhou Dianzi University, Hangzhou Zhejiang 310018, China#Email:zheng0211@AbstractVision-based gesture recognition is a key technique to achieve a new generation of human-computer interaction. This paper proposes a research program for fingertip detection and gesture recognition using depth information. The depth information of an image is captured using Microsoft access sensors, and threshold segmentation combined with the k-means clustering algorithm is used to obtain the hand image. The shape of the hand external convex hull detection combined with hand external contour detection is used to determine the fingertip. Vectors between each of the fingertips and the palm as well as the relative position of the relationship between the fingers are used for finger recognition. The finger gesture recognition of digital signal of 1~5 is conducted through the classification. The experimental results show that the research scheme can accurately detect finger, and hand gestures recognition rate is more than 95%.Keywords: Hand Gesture Recognition; Fingertip Detection; Human-computer Interaction; Depth Data基于Kinect深度信息的手指检测与手势识别*郑斌珏,赵辽英,王毅轩杭州电子科技大学计算机应用研究所,浙江杭州310018摘要:基于视觉的手势识别是实现新一代人机交互的关键技术。

本文提出了一种使用深度信息进行手指检测和手势识别的研究方案。

利用微软Kinect传感器获取图像深度信息,通过阈值分割和K-均值聚类算法获取手部图像。

手型外部凸包检测结合手部外部轮廓检测实现指尖的确定,根据每个指尖到掌心的矢量和手指间的相对位置关系实现手指识别,通过手指的分类实现对数字手势1~5的手势识别。

实验结果表明,该研究方案能准确检测手指,手势识别率超过95%。

关键词:手势识别;指尖检测;人机交互;深度信息引言随着计算机技术的发展,人们对人机交互有了更高层次的要求。

相比较鼠标,键盘等接触式的操作方式,自然而直观的手势更符合人的自然行为,是新一代人机交互的主要方法,在虚拟现实、远程控制和交通等领域逐渐得到应用[1]。

自动手势识别成为近年来的一个研究热点[2-4]。

手势识别的初期研究主要集中在机器设备上,例如数据手套,即一个类似手套的传感器。

计算机通过它可以获取手部各关节数据。

该方法虽能精确的识别手势,但是设备昂贵且掩盖了手势自然的表达方式[5]。

为此,学者们提出了基于视觉的手势识别方法。

目前研究的手势识别系统主要分为基于RGB图像和基于深度图像。

其中前者研究时间比较长,方法众多,但依然没有一个很好的方法解决问题。

与RGB图像相比,深度图像具有物体三维特征信息,即深度信息。

由于深度图像不受光源照射方向及物体表面的发射特性的影响,而且不存在阴影,不受颜色相近信号影响,所以可以更准确地识别手势。

*国家基金资助(61171152), 浙江省自然科学基金项目资助(LY13F020044)2010年微软推出了用于Xbox360的体感外设3D摄像机Kinect[6],而且还提供了支持硬件的软件开发包和应用程序开发接口。

Kinect功能强大且相对廉价,研究者广泛采用它获取深度信息。

目前基于Kinect深度信息的手势识别方法主要有两类。

一类是基于骨架识别获取手势位置[7]进而识别手势。

这类方法使用Kinect SDK 时必须要在摄像头全身可见的条件下才能进行较为准确的识别。

另一类是深度信息转换为2D信息[8],通过支持向量机训练后识别。

这类方法需要构造训练样本,并且不能识别手指。

郭康德等人[9]提出一种基于视觉技术的手指识别,这种方法能跟踪指尖但没有涉及手势识别。

利用深度图像不受肤色的影响的特点,本文提出了一种基于Kinect深度信息检测手指,不需要特征提取和训练,快速实现手势识别的方法。

1手势提取1.1计算实际深度Kinect获得的深度数据以像素为单位记录。

在进行手势识别时需要根据实际距离的大小进行距离判定,Kinect返回的深度值不是实际距离,而是一个相对数据。

故首先要把以像素为单位的数据转换成以实际距离为单位的数据。

设Kinect返回的的某一点深度值为d raw,根据Kinect的校准过程,可求得相应的实际距离深度值为(1)其中:K = 0.1236 m,O = 0.037 m。

根据实际距离深度值,可求得像素位置为( i,j,d)的实际位置( x,y,z) ,其转换式(2)其中:s = 0.0021。

1.2 基于阈值分割获取手部图像获得实际深度数据后,遍历深度矩阵的每个值,获取距离最小值。

根据一般做手势的时候,手部在整个身体最前面且与身体有一定距离。

所以在最小值的基础上加上一个固定的值作为阈值。

这种方法的好处是,距离范围不固定,当手的距离变化时,获取数据的范围也会动态变化。

图1给出了基于阈值分割获取的手部图像。

图1基于阈值分割获取的手部图像1.3 基于聚类算法区分左右手基于阈值的分割技术只能把手势从背景中分割出来,不能区分两只手。

k均值算法根据像素在2D空间的位置,把所有像素划分为两个聚类中心,初始化k为2。

每个聚类区域代表一只手。

然后计算各个样本到聚类中的距离,把样本归到离它最近的那个聚类中心所在的类。

计算新形成的每一个聚类的数据对象的平均值来得到新的聚类中心,如果相邻两次的聚类中心没有任何变化,说明样本调整结束,聚类准则函数已经收敛。

在每个手部的像素点划分好后,如果在两只手的中心距离小于提前定义的一个值,两个聚类将合并成一个。

图2给出了经过K均值聚类算法判断的左右手,两只手用不同的颜色表示。

图2经过K均值聚类算法判断左右手结果2手指检测2.1凸包算法在做手势的时候,手指经常远离手掌中心,而且指尖离的最远。

根据这个情况建立数学模型。

因为凸包包含指尖的点,基于Graham's Scan 算法[10]找到手型外部的凸包。

具体过程如下:首先选取基点。

在手部图像中选取y坐标最小的一点H,当作基点。

如果存在多个点的y坐标都为最小值,则选取x坐标最小的一点。

排除坐标相同的点。

如图3中,y坐标最小点H为基点。

图3凸包算法中基点示意图然后按照其它各点和基点构成的向量与x轴的夹角进行排序。

当加入一点时,必须考虑到前面的线段是否会出现在凸包上。

从基点开始,凸包上每条相邻的线段的旋转方向应该一致,并与扫描的方向相反。

如果发现新加的点使得新线段与上线段的旋转方向发生变化,则可判定上一点必然不在凸包上。

按照上述步骤进行扫描,直到点集中所有的点都遍历完成,即得到凸包。

如图4所示,与相邻的和旋转方向不一致,被判定不在凸包上,与相邻的线段旋转方向都一样,因此在凸包上。

图4凸包算法中线段示意图2.2 手部轮廓检测手部轮廓检测采用Moore neighborhood算法[11]实现。

定义N(a)为像素a的八个领域像素。

p表示为当前轮廓像素。

C表示检测到的轮廓点集合,初始化为空集合。

轮廓检测算法描述如下:1)从上面到下面,并从左到右,在荧幕上扫描所有像素,直到发现手部的像素s就判定为起始点。

2)设置当前轮廓像素p为s,设置初始像素的领域。

3)把p插入C中,然后计算N(p)的领域。

4)从p开始顺时针方向的遍历N(p)的领域知道另外一只手的像素r被找到。

5)把q设置为p,p从新的轮廓像素r开始,然后重复步骤3直到遍历到起始点s,或者检测像素超过最大值。

检测到手部的轮廓后,计算轮廓内接圆的中心坐标得到掌心。

手掌中心被用来计算手指的位置。

2.3 识别手指手指识别首先要确定指尖,通过计算那些既在凸包上又在轮廓上的点来找到指尖。

算法描述如下:1)初始化C序列为既是凸包上的点又是轮廓上的点的集合。

2)遍历C序列上每个点p0,取其左右q1和q2点,分别计算它们到p0的矢量值为和。

3)计算和的夹角为。

如果,,则确定为指尖,否则返回2)重新检查下一个候选点。

指尖检测示意图如图5所示,其中白线连接区域表示凸包,黄线连接区域表示手部轮廓,红色点表示检测得到的指尖。

图5经过手指检测得到指尖的位置和手掌的中心找到指尖点之后,可以与掌心做差值,得到从掌心到指尖的矢量。

根据矢量长度和手指间的相对位置识别手指。

两个手指之间距离相差最大的是大拇指和食指,小拇指离大拇指最远,中指离食指最近,剩下的是无名指。

图6所示的是手指识别结果,各个手指都被准确地识别出。

(a) 大拇指(b)中指(c)食指(d)小拇指图6 手指识别结果这种凸包结合轮廓的算法,比起k-curvature算法[12],一开始可以排除了两个手指之间间隙这种情况。

算法鲁棒性和效率更高。

3手势识别经过上面一系列的算法,现在我们获得了关于手指和手势的信息有手掌中心位置,手指个数,指尖的坐标和手指的向量。

相关文档
最新文档