CN109597485B - 一种基于双指角域特征的手势交互系统及其工作方法 - Google Patents
一种基于双指角域特征的手势交互系统及其工作方法 Download PDFInfo
- Publication number
- CN109597485B CN109597485B CN201811472842.1A CN201811472842A CN109597485B CN 109597485 B CN109597485 B CN 109597485B CN 201811472842 A CN201811472842 A CN 201811472842A CN 109597485 B CN109597485 B CN 109597485B
- Authority
- CN
- China
- Prior art keywords
- gesture
- data
- adjacent
- finger
- leap motion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2411—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/20—Movements or behaviour, e.g. gesture recognition
- G06V40/28—Recognition of hand or arm movements, e.g. recognition of deaf sign language
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Psychiatry (AREA)
- Social Psychology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Multimedia (AREA)
- Image Analysis (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明涉及一种基于双指角域特征的手势交互系统及其工作方法,包括数据采集模块、特征提取模块、手势识别模块、虚拟交互模块。数据采集模块:Leap motion初始化并使用Leap motion采集手势信息;特征提取模块:三维坐标预处理和手势特征提取;手势识别模块:将提取好的双指角域特征输入到SVM‑KNN分类算法中进行手势分类;虚拟交互模块:将Leap motion与Unity3D连接,实现分类后的不同手势对健身房场景内器械的不同交互控制。本发明提高了用户体验度,增强了用户沉浸感。
Description
技术领域
本发明涉及一种基于双指角域特征的手势交互系统及其工作方法,属于智能感知与人机交互的技术领域。
背景技术
手势作为人类使用最频繁的交流方式之一,可以完成人机交互的过程,称之为手势交互。手势交互技术涉及模式识别,图像处理,虚拟现实,人机交互等多个学科领域。目前,手势交互技术在医学,教育,绘画,体感游戏等方面都具有广泛的应用前景和实用价值。例如,在教育领域,使用三维交互软件Unity3D结合Kinect手势识别技术开发的虚拟人体解剖教学系统,增加了教学的逼真性和趣味性,在绘画领域,基于Leap motion开发的虚拟沙画系统,增加了手势交互的乐趣,加深了用户的沉浸感。一个完整的手势交互过程涵盖了数据采集、特征提取、手势识别以及虚拟交互四部分,而其中最为关键的就是手势识别。因此,为了提高手势识别的准确率以及提高用户的需求响应度和交互体验度,研究一种高精度的手势识别算法是有必要的。
目前,国内外对于手势交互系统中手势识别方法的研究有很多,但大多数的手势识别方法都是基于手部轮廓和边缘特征或者手部单指特征进行提取和分类,此类手势特征的弊端是不能全面的表达出人丰富的手势动作,容易造成某一类手指位置和方向信息的遗漏,从而降低手势的识别率和用户在完成虚拟交互时的体验度。
发明内容
针对现有方法的不足,本发明提供了一种基于双指角域特征的手势交互系统,提取手部双指角域特征,旨在提高手势识别率和用户的真实体验度。
本发明还提供了上述一种基于双指角域特征的手势交互系统的工作方法。本发明提高了手势的识别率和用户的交互体验度,增加了交互的乐趣。
术语解释:
1、Leap Motion,是面向PC以及Mac的体感控制器制造公司Leap于2013年2月27日发布的体感控制器。
2、SVM(Support Vector Machine),称为支持向量机,是一种可以训练的机器学习方法,它的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。SVM是用来解决二分类问题的有监督学习算法,在引入了核方法之后SVM也可以用来解决非线性问题。
3、KNN(K-nearest Neighbor Classification),称为K近邻分类算法,它是从训练集中找到和新数据最接近的K条记录,然后根据他们的主要分类来决定新数据的类别。该算法涉及3个主要因素:训练集、距离或相似的衡量、K的大小。
4、Unity3D,是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
本发明的技术方案为:
一种基于双指角域特征的手势交互系统,包括依次首尾连接的数据采集模块、特征提取模块、手势识别模块以及虚拟交互模块;
所述数据采集模块连接特征提取模块,并由数据采集模块指向特征提取模块,所述特征提取模块连接手势识别模块,并由特征提取模块指向手势识别模块,所述手势识别模块连接虚拟交互模块,并由手势识别模块指向虚拟交互模块,所述虚拟交互模块通过获取下一帧的方式反馈回数据采集模块,形成了一个闭环回路。
所述数据采集模块用于:进行Leap motion初始化,获取Leap motion有效视野内的手势关节点三维坐标信息,利用Leap motion双目摄像头获取有效视野范围内的用户手部关节点处的三维坐标信息,手势关节点三维坐标信息包括五个手指和手掌中心点处的三维坐标信息以及方向信息,方向信息是指手指相邻指尖的方向夹角信息,采集范围为M个不同用户身上的S种不同手势(例如:剪刀,石头,布),每个用户的每种手势各采集N次,M≥2,S≥2,N≥50;
所述特征提取模块用于:预处理三维坐标信息和提取手势特征;预处理三维坐标信息是指对基于Leap motion采集的三维坐标信息进行归一化处理,剔除不必要或错误的手势坐标信息;提取手势特征是指提取手势的双指角域特征,包括计算相邻指间的距离以及相邻指尖在手掌平面投影所构成向量的夹角,并将其作为主要的特征进行手势识别;
所述手势识别模块用于:获取手势数据的训练集和测试集,将手势数据集按照随机比例划分为训练集和测试集,手势数据集包含提取好的相邻指尖距离以及相邻指尖在手掌平面投影所构成向量的夹角,将划分好的训练集和测试集输入到SVM-KNN算法中,对S种不同的手势进行识别分类,对分类好的S种手势形成S个不同的.txt数据样本集进行保存;
所述虚拟交互模块用于:一方面,构建Unity3D健身房场景,健身房场景主要通过3Dmax软件绘制,导入到Unity3D中;另一方面,基于搭建好的Unity3D健身房场,完成Leapmotion与Unity3D的连接,将S种手势形成S个不同的数据样本集输入到Unity3D中,实现S类不同手势对健身房场景中某类器械的交互控制。
上述基于双指角域特征的手势交互系统的工作方法,包括以下步骤:
S01:Leap motion初始化;初始化是指通过Leap motion SDK将Leap motion设备连接上位机,并利用Leap Manager函数对Leap motion设备进行开发环境初始化配置的过程;在Leap motion初始化完成后,进入步骤S02。
S02:判断用户手势是否在Leap motion的视距范围内,有效视距是指:Leapmotion传感器的视野取值范围为100-160°,且有效探测距离为25-600mm;如果用户的手势不在Leap motion的视距范围内,则进入步骤S03,否则,进入步骤S03’;
进一步优选的,Leap motion传感器的视野取值范围为150°;
在这里,所获取的坐标值都是有效视距内的三维信息。Leap motion在其有效的探测范围内,可以结合人体的手部骨骼结构对人手的9块骨头,29个关节点进行探测,并且能够将这些手部骨架信息精简为每个关节点的三维坐标信息,利用获取到的有效三维信息,可以很好的判断用户的手势特征。
S03:舍弃手势数据,舍弃不在Leap motion的视距范围内的手势数据;
S03’:保存手势数据,保存在Leap motion的视距范围内的手势数据;
通过进行步骤S03’,在设备采集范围内对M个不同用户身上的S种不同手势依次进行手势数据获取,每个用户的每种手势数据各采集N次,并形成Leap motion手势数据集。
手势数据是指手势关节点数据,手势关节点数据是指利用Leap motion自带的Finger和Palm函数,获取拇指远端指骨、食指远端指骨、中指远端指骨、无名指远端指骨、小指远端指骨以及手掌中心点三维坐标信息,每根手指包括远端指骨、中间指骨、近端指骨和掌骨四个关节点,在这里采集的是五指远端指骨和手掌中心点的三维坐标信息,采用Leapmotion双目摄像头完成手部三维坐标信息的获取。三维坐标信息是指包括了X轴,Y轴和Z轴的位置坐标信息,Leap motion采用的是位置坐标信息处于右手笛卡尔坐标系,该坐标系以平行于Leap motion向右延伸为X轴正半轴,垂直于Leap motion向上延伸为Y轴正半轴,平行于Leap motion向前延伸为Z轴正半轴,根据坐标系规则,提取手势关节点数据;
S04:在步骤S03’保存的手势数据中,利用Leap motion中自带的Finger.tip_velocity(指尖速度)函数依次获取五指指尖的速度vi,i=0,1,2,3,4;例如,获取大拇指指尖速度为:Thumb.tip_velocity,依此类推;
S05:设置阈值t来判断数据有效性,通过设置阈值的方法来判断获取的手势数据是否合理,从而剔除不合理或者错误的三维数据,保留有效的三维坐标。0≤t≤200,单位为mm/s,依次将五指指尖速度vi和阈值t进行比较,如果vi≤t,静止,数据有效,进入步骤S06’;如果vi>t,运动,数据无效,进入步骤S06;
S06:手势运动,并进入步骤S07:
S07:剔除无效数据;
S06’:手势静止;并进入S07’:
S07’:保留有效数据;进入S08。
S08:三维坐标信息归一化处理,为了保证计算的简洁性和准确性,将获取的全部有效数据归一化到(0,1)范围内进行计算;避免较大数据造成计算上的错误。在数据预处理阶段,由于获取的数据量较大,从而容易出现数据上的误判,因此在判断数据有效性的过程中需要不断地在阈值范围内调整和更新t,反复进行数据对比,以获得最佳的阈值取值,从而避免单一对比情况下造成的数据流失,进而保证数据的高精度和手势的完备性。
S09:对步骤S08处理后的手势三维坐标(包括每根手指的远端指骨位置坐标和手掌中心的位置坐标),提取双指角域特征;
判定双指角域内是否只有一组特征值,如果不是,进入步骤S10;否则,进入步骤S10’;
S10:舍弃该特征值;
S10’:计算相邻指尖距离和夹角;
进一步优选的,所述步骤S10’,包括步骤如下:
a、将每根手指的远端指骨位置坐标定义为Fi,i=1,2,3,4,5,手掌中心点位置坐标定义为C;
b、计算相邻指尖距离,在获取到手势三维坐标基础上,计算相邻指尖距离,通过Fi和C得到相邻指尖距离计算公式,如式(Ⅰ)所示:
Dafi=||Fi-Fi-1||/Sj (Ⅰ)
式(Ⅰ)中,Dafi表示对应不同角域内的相邻两个指尖的距离,i=1,2,3,4,5,Sj表示以掌心为中心的五个角域,依据手指指尖方向与手掌方向向量夹角将手指划分到对应好的角域中,j=1,2,3,4,5;算法规定,每个角域最多只有一组特征值,遗漏值置为0;
c、计算相邻指尖角度,相邻指尖角度表示相邻指尖在手掌平面投影所构成向量的夹角,计算公式如式(Ⅱ)所示:
式(Ⅱ)中,Aafi为相邻指尖角度,即相邻指尖在手掌平面投影所构成向量的夹角,i=1,2,3,4,5,C为手掌中心点位置坐标,Fi π是以π为基准的在手掌平面法向量方向上的投影坐标点,Fi π-C为指尖投影与手掌平面所构成向量的夹角;
式(Ⅱ)中除以π进行归一化处理,将相邻指尖角度归一化到[0,1]度范围内进行运算。
当用户做出不同的手势时,所获得的相邻指尖距离和相邻指尖角度是不同的,对M个人的S种不同手势分别采集N次,得到M*N个不同的双指角域特征,将这些特征分别串联起来,构成特征向量,输入到分类器中进行手势识别;
S11:形成训练样本集,对于步骤S10’已经处理好的数据集,按照随机比例将数据集划分为训练集和测试集,并分别保存到单独的两个.txt的文件中;在划分好的训练集和测试集中,均包含了提取好的双指角域特征;
S12:计算相邻样本间欧式距离,计算K个相邻样本的欧式距离;
进一步优选的,所述步骤S12,K个相邻样本的欧式距离的计算公式如式(Ⅲ)所示:
式(Ⅲ)中,D表示相邻两样本间的欧式距离,k表示K个相邻样本,n为样本总数,xk+1和xk为相邻的两个样本取值,分别计算训练集和测试集相邻样本间的欧式距离;
S13:设置距离阈值μ,0≤μ<1,比较D与μ的大小,如果D≤μ,则说明相邻样本距离较近,采用KNN分类;进入步骤S14’;如果D>μ,则说明相邻样本距离较远,采用SVM分类,进入步骤S14;
通过步骤S13不断更新μ值,以获得最合适的距离阈值。
S14’:进行KNN分类,计算相邻样本间的欧式距离后,通过设定不同k值获得不同的手势识别率,k表示K个相邻样本,进而不断调整k值,获得达到最高识别率的k值,从而得到S种手势的识别率,分类后保存为S类手势样本集;进入到步骤S15;
S14:进行SVM分类,导入机器学习算法的SDK,手势分类阶段,为保证数据更好的拟合,在使用SVM算法时采用高斯核函数,即kernel=RBF,包含两个参数gamma和C,gamma为影响参数,C为惩罚参数,将训练集输入到SVM分类器中进行训练,得到稳定的训练集模型,再将测试集输入到SVM分类器中进行测试,将获得的结果与得到的训练集模型进行匹配,从而得到S种手势的识别率;分类后保存为S类手势样本集;进入到步骤S15;
在采用SVM-KNN二重分类算法时,有利于减小手势的误判率,将S(S≥2)种手势进行更清晰地划分,进而提高用户的真实体验度,增加交互乐趣。
S15:将手势样本集输入到Unity3D中;将S类手势样本集输入到Unity3D后台控制程序中;
S15’:Leap motion连接Unity3D,通过将Leap motion的Core Assets核心包导入到Unity3D中,实现Leap motion与Unity3D连接,Core Assets核心包包括手势控制器(HandController)和交互引擎(Interaction Engine);
S15”:将健身房场景导入Unity3D;
进一步优选的,所述步骤S15”,将健身房场景导入Unity3D,包括:
利用3Dmax绘制健身房三维场景,利用3Dmax的三维立体功能,绘制健身房,包括:跑步机、杠铃、举重器、拳击袋、休息椅以及健身房等三维立体图,形成3D健身房场景;3Dmax绘制的健身房场景图在导入Unity3D时,为了避免贴图缺失或者原图失真的情况,在输出场景图时保存为fbx或者obj的格式,将带有fbx或者obj后缀的文件导入到Unity3D中,完成健身房场景的导入。
进一步优选的,为了增强沉浸感,在Unity3D中的三维场景图以第一视角的形式呈现。
S16:与物体虚拟交互,通过手势控制器和交互引擎完成对健身房场景内器械(比如哑铃)的控制;例如:“剪刀”手势控制器械的颜色变(白色变为红色),“石头”手势控制器械的旋转,“布”手势控制器械的静止;
S17:获取下一帧,通过获取下一帧数据流,反馈回Leap motion初始化状态,返回步骤S01,重新进行新一轮的数据采集。通过完成S1-S17,形成了一个手势交互系统的闭环回路。
本发明的有益效果为:
1、传统的指尖特征提取算法都比较复杂,而且受单目摄像头的影响,会导致识别算法失效,鲁棒性不高。本发明直接基于Leap motion提出一种双指角域特征,将不同的手指划分到不同的角域中,对不同角域内的相邻手指进行特征提取,从而将特征更好的进行分离提取。
2、一般的单指特征提取算法无法判断相邻手指的位置和角度关系,从而容易造成对多指手势的误判,本发明直接提取用户手部的双指特征,可以精确的判断五指指尖的距离和投影角度,能够更好的适用于涵盖多个手指信息的手势。
3、使用单一的SVM或者KNN分类算法会导致一些手势样本被误判的情况发生,在一定程度上,无法保证对数据的最大化判决,本发明采用了SVM-KNN二重分类算法,通过设定距离阈值的方法来选择使用哪种分类算法,从而提高了手势数据的判决率和手势识别率。
附图说明
图1为本发明基于双指角域特征的手势交互系统研究框图;
图2为本发明基于双指角域特征的手势交互系统流程图;
图3为本发明基于SVM-KNN二重手势分类算法的仿真效果图;
具体实施方式
下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。
实施例1
一种基于双指角域特征的手势交互系统,如图1所示,包括依次首尾连接的数据采集模块、特征提取模块、手势识别模块以及虚拟交互模块;
数据采集模块连接特征提取模块,并由数据采集模块指向特征提取模块,特征提取模块连接手势识别模块,并由特征提取模块指向手势识别模块,手势识别模块连接虚拟交互模块,并由手势识别模块指向虚拟交互模块,虚拟交互模块通过获取下一帧的方式反馈回数据采集模块,形成了一个闭环回路。
数据采集模块用于:进行Leap motion初始化,获取Leap motion有效视野内的手势关节点三维坐标信息,利用Leap motion双目摄像头获取有效视野范围内的用户手部关节点处的三维坐标信息,手势关节点三维坐标信息包括五个手指和手掌中心点处的三维坐标信息以及方向信息,方向信息是指手指相邻指尖的方向夹角信息,采集范围为M个不同用户身上的S种不同手势(例如:剪刀,石头,布),每个用户的每种手势各采集N次,M≥2,S≥2,N≥50;
特征提取模块用于:预处理三维坐标信息和提取手势特征;预处理三维坐标信息是指对基于Leap motion采集的三维坐标信息进行归一化处理,剔除不必要或错误的手势坐标信息;提取手势特征是指提取手势的双指角域特征,包括计算相邻指间的距离以及相邻指尖在手掌平面投影所构成向量的夹角,并将其作为主要的特征进行手势识别;
手势识别模块用于:获取手势数据的训练集和测试集,将手势数据集按照随机比例划分为训练集和测试集,手势数据集包含提取好的相邻指尖距离以及相邻指尖在手掌平面投影所构成向量的夹角,将划分好的训练集和测试集输入到SVM-KNN算法中,对S种不同的手势进行识别分类,对分类好的S种手势形成S个不同的.txt数据样本集进行保存;
虚拟交互模块用于:一方面,构建Unity3D健身房场景,健身房场景主要通过3Dmax软件绘制,导入到Unity3D中;另一方面,基于搭建好的Unity3D健身房场,完成Leap motion与Unity3D的连接,将S种手势形成S个不同的数据样本集输入到Unity3D中,实现S类不同手势对健身房场景中某类器械的交互控制。
实施例2
实施例1所述的一种基于双指角域特征的手势交互系统的工作方法,如图2所示,包括以下步骤:
S01:Leap motion初始化;初始化是指通过Leap motion SDK将Leap motion设备连接上位机,并利用Leap Manager函数对Leap motion设备进行开发环境初始化配置的过程;在Leap motion初始化完成后,进入步骤S02。
S02:判断用户手势是否在Leap motion的视距范围内,有效视距是指:Leapmotion传感器的视野取值范围为100-160°,且有效探测距离为25-600mm;如果用户的手势不在Leap motion的视距范围内,则进入步骤S03,否则,进入步骤S03’;
在这里,所获取的坐标值都是有效视距内的三维信息。Leap motion在其有效的探测范围内,可以结合人体的手部骨骼结构对人手的9块骨头,29个关节点进行探测,并且能够将这些手部骨架信息精简为每个关节点的三维坐标信息,利用获取到的有效三维信息,可以很好的判断用户的手势特征。
S03:舍弃手势数据,舍弃不在Leap motion的视距范围内的手势数据;
S03’:保存手势数据,保存在Leap motion的视距范围内的手势数据;
通过进行步骤S03’,在设备采集范围内对M个不同用户身上的S种不同手势依次进行手势数据获取,每个用户的每种手势数据各采集N次,并形成Leap motion手势数据集。
手势数据是指手势关节点数据,手势关节点数据是指利用Leap motion自带的Finger和Palm函数,获取拇指远端指骨、食指远端指骨、中指远端指骨、无名指远端指骨、小指远端指骨以及手掌中心点三维坐标信息,每根手指包括远端指骨、中间指骨、近端指骨和掌骨四个关节点,在这里采集的是五指远端指骨和手掌中心点的三维坐标信息,采用Leapmotion双目摄像头完成手部三维坐标信息的获取。三维坐标信息是指包括了X轴,Y轴和Z轴的位置坐标信息,Leap motion采用的是位置坐标信息处于右手笛卡尔坐标系,该坐标系以平行于Leap motion向右延伸为X轴正半轴,垂直于Leap motion向上延伸为Y轴正半轴,平行于Leap motion向前延伸为Z轴正半轴,根据坐标系规则,提取手势关节点数据;
S04:在步骤S03’保存的手势数据中,利用Leap motion中自带的Finger.tip_velocity(指尖速度)函数依次获取五指指尖的速度vi,i=0,1,2,3,4;例如,获取大拇指指尖速度为:Thumb.tip_velocity,依此类推;
S05:设置阈值t来判断数据有效性,通过设置阈值的方法来判断获取的手势数据是否合理,从而剔除不合理或者错误的三维数据,保留有效的三维坐标。0≤t≤200,单位为mm/s,依次将五指指尖速度vi和阈值t进行比较,如果vi≤t,静止,数据有效,进入步骤S06’;如果vi>t,运动,数据无效,进入步骤S06;
S06:手势运动,并进入步骤S07:
S07:剔除无效数据;
S06’:手势静止;并进入S07’:
S07’:保留有效数据;进入S08。
S08:三维坐标信息归一化处理,为了保证计算的简洁性和准确性,将获取的全部有效数据归一化到(0,1)范围内进行计算;避免较大数据造成计算上的错误。在数据预处理阶段,由于获取的数据量较大,从而容易出现数据上的误判,因此在判断数据有效性的过程中需要不断地在阈值范围内调整和更新t,反复进行数据对比,以获得最佳的阈值取值,从而避免单一对比情况下造成的数据流失,进而保证数据的高精度和手势的完备性。
S09:对步骤S08处理后的手势三维坐标(包括每根手指的远端指骨位置坐标和手掌中心的位置坐标),提取双指角域特征;
判定双指角域内是否只有一组特征值,如果不是,进入步骤S10;否则,进入步骤S10’;
S10:舍弃该特征值;
S10’:计算相邻指尖距离和夹角;包括步骤如下:
a、将每根手指的远端指骨位置坐标定义为Fi,i=1,2,3,4,5,手掌中心点位置坐标定义为C;
b、计算相邻指尖距离,在获取到手势三维坐标基础上,计算相邻指尖距离,通过Fi和C得到相邻指尖距离计算公式,如式(Ⅰ)所示:
Dafi=||Fi-Fi-1||/Sj (Ⅰ)
式(Ⅰ)中,Dafi表示对应不同角域内的相邻两个指尖的距离,i=1,2,3,4,5,Sj表示以掌心为中心的五个角域,依据手指指尖方向与手掌方向向量夹角将手指划分到对应好的角域中,j=1,2,3,4,5;算法规定,每个角域最多只有一组特征值,遗漏值置为0;
c、计算相邻指尖角度,相邻指尖角度表示相邻指尖在手掌平面投影所构成向量的夹角,计算公式如式(Ⅱ)所示:
式(Ⅱ)中,Aafi为相邻指尖角度,即相邻指尖在手掌平面投影所构成向量的夹角,i=1,2,3,4,5,C为手掌中心点位置坐标,Fi π是以π为基准的在手掌平面法向量方向上的投影坐标点,Fi π-C为指尖投影与手掌平面所构成向量的夹角;
式(Ⅱ)中除以π进行归一化处理,将相邻指尖角度归一化到[0,1]度范围内进行运算。
当用户做出不同的手势时,所获得的相邻指尖距离和相邻指尖角度是不同的,对M个人的S种不同手势分别采集N次,得到M*N个不同的双指角域特征,将这些特征分别串联起来,构成特征向量,输入到分类器中进行手势识别;
S11:形成训练样本集,对于步骤S10’已经处理好的数据集,按照随机比例将数据集划分为训练集和测试集,并分别保存到单独的两个.txt的文件中;在划分好的训练集和测试集中,均包含了提取好的双指角域特征;
S12:计算相邻样本间欧式距离,计算K个相邻样本的欧式距离;
K个相邻样本的欧式距离的计算公式如式(Ⅲ)所示:
式(Ⅲ)中,D表示相邻两样本间的欧式距离,k表示K个相邻样本,n为样本总数,xk+1和xk为相邻的两个样本取值,分别计算训练集和测试集相邻样本间的欧式距离;
S13:设置距离阈值μ,0≤μ<1,比较D与μ的大小,如果D≤μ,则说明相邻样本距离较近,采用KNN分类;进入步骤S14’;如果D>μ,则说明相邻样本距离较远,采用SVM分类,进入步骤S14;
通过步骤S13不断更新μ值,以获得最合适的距离阈值。
S14’:进行KNN分类,计算相邻样本间的欧式距离后,通过设定不同k值获得不同的手势识别率,k表示K个相邻样本,进而不断调整k值,获得达到最高识别率的k值,从而得到S种手势的识别率,分类后保存为S类手势样本集;进入到步骤S15;
S14:进行SVM分类,导入机器学习算法的SDK,手势分类阶段,为保证数据更好的拟合,在使用SVM算法时采用高斯核函数,即kernel=RBF,包含两个参数gamma和C,gamma为影响参数,C为惩罚参数,将训练集输入到SVM分类器中进行训练,得到稳定的训练集模型,再将测试集输入到SVM分类器中进行测试,将获得的结果与得到的训练集模型进行匹配,从而得到S种手势的识别率;分类后保存为S类手势样本集;进入到步骤S15;
在采用SVM-KNN二重分类算法时,如图3所示,横坐标1-5表示随机采集的五类手势,纵坐标0.3-1.0表示五类手势对应的识别率,通过SVM,KNN和SVM-KNN三类算法对手势进行分类仿真对比,可以看到SVM-KNN二重分类算法的效果优于其他两种分类算法,识别率达到最高。所以采用SVM-KNN二重分类算法有利于减小手势的误判率,将S(S≥2)种手势进行更清晰地划分,进而提高用户的真实体验度,增加交互乐趣。
S15:将手势样本集输入到Unity3D中;将S类手势样本集输入到Unity3D后台控制程序中;
S15’:Leap motion连接Unity3D,通过将Leap motion的Core Assets核心包导入到Unity3D中,实现Leap motion与Unity3D连接,Core Assets核心包包括手势控制器(HandController)和交互引擎(Interaction Engine);
S15”:将健身房场景导入Unity3D;包括:
利用3Dmax绘制健身房三维场景,利用3Dmax的三维立体功能,绘制健身房,包括:跑步机、杠铃、举重器、拳击袋、休息椅以及健身房等三维立体图,形成3D健身房场景;3Dmax绘制的健身房场景图在导入Unity3D时,为了避免贴图缺失或者原图失真的情况,在输出场景图时保存为fbx或者obj的格式,将带有fbx或者obj后缀的文件导入到Unity3D中,完成健身房场景的导入。为了增强沉浸感,在Unity3D中的三维场景图以第一视角的形式呈现。
S16:与物体虚拟交互,通过手势控制器和交互引擎完成对健身房场景内器械(比如哑铃)的控制;例如:“剪刀”手势控制器械的颜色变(白色变为红色),“石头”手势控制器械的旋转,“布”手势控制器械的静止;
S17:获取下一帧,通过获取下一帧数据流,反馈回Leap motion初始化状态,返回步骤S01,重新进行新一轮的数据采集。通过完成S1-S17,形成了一个手势交互系统的闭环回路。
实施例3
根据实施例2所述的一种基于双指角域特征的手势交互系统的工作方法,其区别在于:Leap motion传感器的视野取值范围为150°。
Claims (6)
1.一种基于双指角域特征的手势交互系统的工作方法,所述手势交互系统包括依次首尾连接的数据采集模块、特征提取模块、手势识别模块以及虚拟交互模块;
所述数据采集模块用于:进行Leap motion初始化,获取Leap motion有效视野内的手势关节点三维坐标信息,手势关节点三维坐标信息包括五个手指和手掌中心点处的三维坐标信息以及方向信息,方向信息是指手指相邻指尖的方向夹角信息,采集范围为M个不同用户身上的S种不同手势,每个用户的每种手势各采集N次,M≥2,S≥2,N≥50;
所述特征提取模块用于:预处理三维坐标信息和提取手势特征;预处理三维坐标信息是指对基于Leap motion采集的三维坐标信息进行归一化处理,剔除不必要或错误的手势坐标信息;提取手势特征是指提取手势的双指角域特征,包括计算相邻指尖的距离以及相邻指尖在手掌平面投影所构成向量的夹角,并将其作为主要的特征进行手势识别;
所述手势识别模块用于:获取手势数据的训练集和测试集,将手势数据集按照随机比例划分为训练集和测试集,手势数据集包含提取好的相邻指尖距离以及相邻指尖在手掌平面投影所构成向量的夹角,将划分好的训练集和测试集输入到SVM-KNN算法中,对S种不同的手势进行识别分类,对分类好的S种手势形成S个不同的.txt数据样本集进行保存;
所述虚拟交互模块用于:一方面,构建Unity3D健身房场景,导入到Unity3D中;另一方面,基于搭建好的Unity3D健身房场,完成Leap motion与Unity3D的连接,将S种手势形成S个不同的数据样本集输入到Unity3D中,实现S类不同手势对健身房场景中某类器械的交互控制;其特征在于,包括以下步骤:
S01:Leap motion初始化;
S02:判断用户手势是否在Leap motion的视距范围内,有效视距是指:Leap motion的视野取值范围为100-160°,且有效探测距离为25-600mm;如果用户的手势不在Leap motion的视距范围内,则进入步骤S03,否则,进入步骤S03’;
S03:舍弃手势数据,舍弃不在Leap motion的视距范围内的手势数据;
S03’:保存手势数据,保存在Leap motion的视距范围内的手势数据;
通过进行步骤S03’,在设备采集范围内对M个不同用户身上的S种不同手势依次进行手势数据获取,每个用户的每种手势数据各采集N次,并形成Leap motion手势数据集;手势数据是指手势关节点数据,手势关节点数据是指拇指远端指骨、食指远端指骨、中指远端指骨、无名指远端指骨、小指远端指骨以及手掌中心点三维坐标信息,三维坐标信息是指包括了X轴,Y轴和Z轴的位置坐标信息,位置坐标信息处于右手笛卡尔坐标系,该坐标系以平行于Leap motion向右延伸为X轴正半轴,垂直于Leap motion向上延伸为Y轴正半轴,平行于Leap motion向前延伸为Z轴正半轴,根据坐标系规则,提取手势关节点数据;
S04:在步骤S03’保存的手势数据中,依次获取五指指尖的速度vi,i=0,1,2,3,4;
S05:设置阈值t来判断数据有效性,0≤t≤200,单位为mm/s,依次将五指指尖速度vi和阈值t进行比较,如果vi≤t,静止,数据有效,进入步骤S06’;如果vi>t,运动,数据无效,进入步骤S06;
S06:手势运动,并进入步骤S07:
S07:剔除无效数据;
S06’:手势静止;并进入S07’:
S07’:保留有效数据;进入S08;
S08:三维坐标信息归一化处理,将获取的全部有效数据归一化到(0,1)范围内进行计算;
S09:对步骤S08处理后的手势三维坐标,提取双指角域特征;
判定双指角域内是否只有一组特征值,如果不是,进入步骤S10;否则,进入步骤S10’;
S10:舍弃该特征值;
S10’:计算相邻指尖距离和夹角;
当用户做出不同的手势时,所获得的相邻指尖距离和相邻指尖角度是不同的,对M个人的S种不同手势分别采集N次,得到M*N个不同的双指角域特征,将这些特征分别串联起来,构成特征向量,输入到分类器中进行手势识别;
S11:形成训练样本集,对于步骤S10’已经处理好的数据集,按照随机比例将数据集划分为训练集和测试集,并分别保存到单独的两个.txt的文件中;在划分好的训练集和测试集中,均包含了提取好的双指角域特征;
S12:计算相邻样本间欧式距离,计算K个相邻样本的欧式距离;
S13:设置距离阈值μ,0≤μ<1,比较D与μ的大小,D表示相邻两样本间的欧式距离,如果D≤μ,则说明相邻样本距离较近,采用KNN分类;进入步骤S14’;如果D>μ,则说明相邻样本距离较远,采用SVM分类,进入步骤S14;
S14’:进行KNN分类,计算相邻样本间的欧式距离后,通过设定不同k值获得不同的手势识别率,k表示K个相邻样本,进而不断调整k值,获得达到最高识别率的k值,从而得到S种手势的识别率,分类后保存为S类手势样本集;进入到步骤S15;
S14:进行SVM分类,导入机器学习算法的SDK,手势分类阶段,在使用SVM算法时采用高斯核函数,即kernel=RBF,包含两个参数gamma和C,gamma为影响参数,C为惩罚参数,将训练集输入到SVM分类器中进行训练,得到稳定的训练集模型,再将测试集输入到SVM分类器中进行测试,将获得的结果与得到的训练集模型进行匹配,从而得到S种手势的识别率;分类后保存为S类手势样本集;进入到步骤S15;
S15:将手势样本集输入到Unity3D中;
S15’:Leap motion连接Unity3D,通过将Leap motion的Core Assets核心包导入到Unity3D中,实现Leap motion与Unity3D连接,Core Assets核心包包括手势控制器和交互引擎;
S15”:将健身房场景导入Unity3D;
S16:与物体虚拟交互,通过手势控制器和交互引擎完成对健身房场景内器械的控制;
S17:获取下一帧,通过获取下一帧数据流,反馈回Leap motion初始化状态,返回步骤S01,重新进行新一轮的数据采集。
2.根据权利要求1所述的基于双指角域特征的手势交互系统的工作方法,其特征在于,Leap motion的视野取值为150°。
3.根据权利要求1所述的基于双指角域特征的手势交互系统的工作方法,其特征在于,所述步骤S10’,包括步骤如下:
a、将每根手指的远端指骨位置坐标定义为Fi,i=1,2,3,4,5,手掌中心点位置坐标定义为C;
b、计算相邻指尖距离,在获取到手势三维坐标基础上,计算相邻指尖距离,通过Fi得到相邻指尖距离计算公式,如式(Ⅰ)所示:
Dafi=||Fi-Fi-1||/Sj (Ⅰ)
式(Ⅰ)中,Dafi表示对应不同角域内的相邻两个指尖的距离,i=1,2,3,4,5,Sj表示以掌心为中心的五个角域,依据手指指尖方向与手掌方向向量夹角将手指划分到对应好的角域中,j=1,2,3,4,5;每个角域最多只有一组特征值,遗漏值置为0;
c、计算相邻指尖角度,相邻指尖角度表示相邻指尖在手掌平面投影所构成向量的夹角,计算公式如式(Ⅱ)所示:
式(Ⅱ)中,Aafi为相邻指尖角度,即相邻指尖在手掌平面投影所构成向量的夹角,i=1,2,3,4,5,C为手掌中心点位置坐标,Fi π是以π为基准的在手掌平面法向量方向上的投影坐标点,Fi π-C为指尖投影与手掌平面所构成向量的夹角;
式(Ⅱ)中除以π进行归一化处理,将相邻指尖角度归一化到[0,1]范围内进行运算。
5.根据权利要求2-4任一所述的基于双指角域特征的手势交互系统的工作方法,其特征在于,所述步骤S15”,将健身房场景导入Unity3D,包括:
利用3Dmax绘制健身房三维场景,形成3D健身房场景;在输出场景图时保存为fbx或者obj的格式,将带有fbx或者obj后缀的文件导入到Unity3D中,完成健身房场景的导入。
6.根据权利要求5所述的基于双指角域特征的手势交互系统的工作方法,其特征在于,在Unity3D中的三维场景图以第一视角的形式呈现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811472842.1A CN109597485B (zh) | 2018-12-04 | 2018-12-04 | 一种基于双指角域特征的手势交互系统及其工作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811472842.1A CN109597485B (zh) | 2018-12-04 | 2018-12-04 | 一种基于双指角域特征的手势交互系统及其工作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109597485A CN109597485A (zh) | 2019-04-09 |
CN109597485B true CN109597485B (zh) | 2021-05-07 |
Family
ID=65960816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811472842.1A Active CN109597485B (zh) | 2018-12-04 | 2018-12-04 | 一种基于双指角域特征的手势交互系统及其工作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109597485B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110070065A (zh) * | 2019-04-30 | 2019-07-30 | 李冠津 | 基于视觉以及语音智能的手语系统以及通讯方法 |
CN110263742A (zh) * | 2019-06-26 | 2019-09-20 | 北京字节跳动网络技术有限公司 | 用于识别图像的方法和装置 |
CN110263743B (zh) * | 2019-06-26 | 2023-10-13 | 北京字节跳动网络技术有限公司 | 用于识别图像的方法和装置 |
CN110390281B (zh) * | 2019-07-11 | 2023-03-24 | 南京大学 | 一种基于感知设备的手语识别系统及其工作方法 |
US20240069641A1 (en) * | 2019-10-17 | 2024-02-29 | Sony Group Corporation | Information processing apparatus, information processing method, and program |
CN111142663B (zh) * | 2019-12-27 | 2024-02-02 | 恒信东方文化股份有限公司 | 一种手势识别方法及手势识别系统 |
CN111222581A (zh) * | 2020-01-13 | 2020-06-02 | 山东汇贸电子口岸有限公司 | 一种基于改进分类算法的云存储手势识别系统及方法 |
CN111709320B (zh) * | 2020-05-28 | 2023-04-18 | 杭州电子科技大学 | 一种基于密度峰值聚类特征选择的三维手写字符识别方法 |
CN114387626B (zh) * | 2022-03-23 | 2022-08-26 | 合肥的卢深视科技有限公司 | 一种手势分类方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101612738B1 (ko) * | 2014-12-24 | 2016-04-15 | 해성옵틱스(주) | 카메라를 이용한 손가락 개수 검출 방법 |
CN105868715A (zh) * | 2016-03-29 | 2016-08-17 | 苏州科达科技股份有限公司 | 一种手势识别方法、装置及手势学习系统 |
CN106383586A (zh) * | 2016-10-21 | 2017-02-08 | 东南大学 | 一种孤独症谱系障碍儿童训练系统 |
CN106598227A (zh) * | 2016-11-15 | 2017-04-26 | 电子科技大学 | 基于Leap Motion和Kinect的手势识别方法 |
CN107024989A (zh) * | 2017-03-24 | 2017-08-08 | 中北大学 | 一种基于Leap Motion手势识别的沙画制作方法 |
US9767345B2 (en) * | 2012-01-17 | 2017-09-19 | Leap Motion, Inc. | Systems and methods of constructing three-dimensional (3D) model of an object using image cross-sections |
CN108664877A (zh) * | 2018-03-09 | 2018-10-16 | 北京理工大学 | 一种基于三维深度数据的动态手势识别方法 |
-
2018
- 2018-12-04 CN CN201811472842.1A patent/CN109597485B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9767345B2 (en) * | 2012-01-17 | 2017-09-19 | Leap Motion, Inc. | Systems and methods of constructing three-dimensional (3D) model of an object using image cross-sections |
KR101612738B1 (ko) * | 2014-12-24 | 2016-04-15 | 해성옵틱스(주) | 카메라를 이용한 손가락 개수 검출 방법 |
CN105868715A (zh) * | 2016-03-29 | 2016-08-17 | 苏州科达科技股份有限公司 | 一种手势识别方法、装置及手势学习系统 |
CN106383586A (zh) * | 2016-10-21 | 2017-02-08 | 东南大学 | 一种孤独症谱系障碍儿童训练系统 |
CN106598227A (zh) * | 2016-11-15 | 2017-04-26 | 电子科技大学 | 基于Leap Motion和Kinect的手势识别方法 |
CN107024989A (zh) * | 2017-03-24 | 2017-08-08 | 中北大学 | 一种基于Leap Motion手势识别的沙画制作方法 |
CN108664877A (zh) * | 2018-03-09 | 2018-10-16 | 北京理工大学 | 一种基于三维深度数据的动态手势识别方法 |
Non-Patent Citations (5)
Title |
---|
Hand Gesture Recognition for Post-stroke Rehabilitation Using Leap Motion;Wen-Jeng Li et al.;《Proceedings of the 2017 IEEE International Conference on Applied System Innovation》;20170524;正文第1页右栏第2段-第2页右栏第5段以及附图2 * |
Hand gesture recognition using fourier descriptors;Heba M. Gamal et al.;《2013 8th International Conference on Computer Engineering & Systems (ICCES)》;20140109;全文 * |
Hand gesture recognition with leap motion and kinect devices;G. Marin et al.;《2014 IEEE International Conference on Image Processing (ICIP)》;20141030;全文 * |
基于KNN算法的空间手势识别研究与应用;张硕;《中国优秀硕士学位论文全文数据库 信息科技辑》;20171015;全文 * |
基于Leap Motion的动态手势识别;童政;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150515;正文第13-15页以及附图2-4 * |
Also Published As
Publication number | Publication date |
---|---|
CN109597485A (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109597485B (zh) | 一种基于双指角域特征的手势交互系统及其工作方法 | |
CN107301370B (zh) | 一种基于Kinect三维骨架模型的肢体动作识别方法 | |
WO2018120964A1 (zh) | 一种基于深度信息和骨骼信息的姿势矫正方法 | |
CN104571482B (zh) | 一种基于体感识别的数字设备操控方法 | |
CN107808143A (zh) | 基于计算机视觉的动态手势识别方法 | |
Feng et al. | Depth-projection-map-based bag of contour fragments for robust hand gesture recognition | |
US20130335318A1 (en) | Method and apparatus for doing hand and face gesture recognition using 3d sensors and hardware non-linear classifiers | |
CN107688391A (zh) | 一种基于单目视觉的手势识别方法和装置 | |
Cheng et al. | Image-to-class dynamic time warping for 3D hand gesture recognition | |
CA2973126A1 (en) | Systems and methods of monitoring activities at a gaming venue | |
CN105536205A (zh) | 一种基于单目视频人体动作感知的上肢训练系统 | |
CN105107200B (zh) | 基于实时深度体感交互与增强现实技术的变脸系统及方法 | |
Linqin et al. | Dynamic hand gesture recognition using RGB-D data for natural human-computer interaction | |
JP2016014954A (ja) | 手指形状の検出方法、そのプログラム、そのプログラムの記憶媒体、及び、手指の形状を検出するシステム。 | |
Kumar et al. | A hybrid gesture recognition method for American sign language | |
CN107329564B (zh) | 基于手势智能感知和人机协同机制的人机猜拳方法 | |
Li et al. | A novel hand gesture recognition based on high-level features | |
Anwar et al. | Feature extraction for indonesian sign language (SIBI) using leap motion controller | |
Amaliya et al. | Study on hand keypoint framework for sign language recognition | |
Boruah et al. | Development of a learning-aid tool using hand gesture based human computer interaction system | |
CN107220634A (zh) | 基于改进d‑p算法与多模板匹配的手势识别方法 | |
CN107292295A (zh) | 手势分割方法及装置 | |
Xu et al. | A novel method for hand posture recognition based on depth information descriptor | |
CN106512391B (zh) | 一种双手手势识别方法及基于其的模拟驾驶系统、方法 | |
Shahjalal et al. | An approach to automate the scorecard in cricket with computer vision and machine learning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |