CN109933206A - 一种基于Leap Motion的手指无接触绘图方法及系统 - Google Patents
一种基于Leap Motion的手指无接触绘图方法及系统 Download PDFInfo
- Publication number
- CN109933206A CN109933206A CN201910232829.7A CN201910232829A CN109933206A CN 109933206 A CN109933206 A CN 109933206A CN 201910232829 A CN201910232829 A CN 201910232829A CN 109933206 A CN109933206 A CN 109933206A
- Authority
- CN
- China
- Prior art keywords
- gesture
- finger
- data
- leap motion
- palm
- 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.)
- Granted
Links
- 230000033001 locomotion Effects 0.000 title claims abstract description 90
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000003068 static effect Effects 0.000 claims abstract description 18
- 230000007246 mechanism Effects 0.000 claims abstract description 17
- 238000010422 painting Methods 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims abstract description 7
- 238000004891 communication Methods 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 46
- 230000009131 signaling function Effects 0.000 claims description 17
- 238000012360 testing method Methods 0.000 claims description 17
- 238000012549 training Methods 0.000 claims description 15
- 230000003287 optical effect Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 7
- 238000004088 simulation Methods 0.000 claims description 5
- 230000009471 action Effects 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 4
- 238000009432 framing Methods 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 3
- 230000003993 interaction Effects 0.000 abstract description 6
- 238000012706 support-vector machine Methods 0.000 description 20
- 238000011161 development Methods 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000003238 somatosensory effect Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 230000006698 induction Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 101100270004 Escherichia coli (strain K12) appX gene Proteins 0.000 description 2
- 101100270005 Escherichia coli (strain K12) appY gene Proteins 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000005452 bending Methods 0.000 description 2
- 210000000988 bone and bone Anatomy 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007654 immersion Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000007630 basic procedure Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000003973 paint Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种基于Leap Motion的手指无接触绘图方法及系统,采用SVM算法进行静态手势识别,采用静态手势和运动追踪数据约束性条件相结合的方法识别动态手势,根据识别的静态手势和动态手势判断用户手势动作,应用QT信号槽机制实现识别后的手势数据与绘画系统之间的通信,不同的手势动作对应不同事件,响应不同的处理,再将运动追踪数据中食指指尖在传感器观察坐标系下的位置映射为屏幕坐标系下画笔的位置,实现图形和线条的绘制,完成手指无接触绘图。本发明具备趣味性以及更加自然的人机交互方式,灵活度与自由度更高,具备良好的互动性;且容易被接受和掌握,尤其适合老人和孩童群体,具有广泛的应用前景。
Description
技术领域
本发明属于智能体感绘画技术领域,具体涉及一种基于Leap Motion的手指无接触绘图方法及系统。
背景技术
近年来,随着计算机软硬件的发展,越来越多的新科技新技术从科幻小说中走进了人们的生活。智能体感技术作为一门新兴技术,一经问世便受到世人的瞩目。作为一种新型人机交互模式,体感设备颠覆了人们对计算机输入设备的认知,相比起键盘和鼠标等传统输入设备,体感设备融合了计算机领域更多高新技术,为用户提供了更加方便、更加自由、更加舒适的使用体验,因而受到许多电子产品爱好者的追捧。许多硬件设备厂商也瞅准了时机,投入大量人力物力用于智能体感设备的开发;基于智能体感设备的应用软件和游戏开发也吸引了许多软件行业从业人员的兴趣。
所谓体感设备,就是指通过若干传感器检测现实场景中实体的位置和运动,并从中提取出计算机能够识别的信息,进而实现人机交互的电子设备。体感设备按照其原理主要可以分为两类:惯性感测和光学感测。其中惯性感测设备需要用户手持游戏手柄以检测用户的位置和手掌的运动,光学感测依靠光学传感器检测用户的物理参数,真正实现了“手指无接触”。
目前,市面上流行的光学感测体感设备主要是微软公司研发的Kinect和Leap公司研发的Leap Motion。Kinect配合XBOX游戏主机,其有效感应范围比较大,但精确度有限,适合家庭使用;Leap Motion控制器小巧玲珑,感应范围有限,但精确度高,能够感测人手的每一个关节点,更适合个人使用。目前,Leap Motion已经发展至第四代,可以搭载VR眼镜使用,用户带上特制的头盔就能够自由自在徜徉在虚拟世界中,无需任何手柄或手环。
发明内容
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于LeapMotion的手指无接触绘图方法及系统,有效感应范围大,识别准确率高。
本发明采用以下技术方案:
一种基于Leap Motion的手指无接触绘图方法,其特征在于,采用SVM算法进行静态手势识别,采用静态手势和运动追踪数据约束性条件相结合的方法识别动态手势,根据识别的静态手势和动态手势判断用户手势动作,应用QT信号槽机制实现识别后的手势数据与绘画系统之间的通信,不同的手势动作对应不同事件,响应不同的处理,再将运动追踪数据中食指指尖在传感器观察坐标系下的位置映射为屏幕坐标系下画笔的位置,实现图形和线条的绘制,完成手指无接触绘图。
具体的,以手指的点击动作作为动态手势,应用SVM算法对伸出手指的动作进行识别,然后调用Leap Motion API得到手指指尖的速度,当指尖向正前方的速度大于阈值的时候触发按下按钮事件;当指尖向后方运动的速度达到某个阈值时触发释放按钮事件;手指在短时间内按下和弹起判定为单击事件;手势识别完成后,按照结果的不同触发不同的事件做出绘画响应。
进一步的,选取由手指到掌心的距离和手指方向与手掌方向的夹角作为特征向量,通过Leap Motion API获得指尖和掌心的坐标,得到指尖到掌心的距离;然后根据指尖在手掌平面上的投影的坐标计算与手指方向向量的夹角;对距离值进行标准化处理,构造特征向量集;给不同手势对应的特征向量加上不同标签,将特征向量集均匀分为训练集和测试集,将训练集转化为LIBSVM指定的格式,调用SVMTRAIN进行模型的训练,得到模型文件model.txt;应用模调用SVMPREDICT函数对测试集数据进行预测,返回预测结果对应的标签,与测试集原来的数据进行比较,得出预测准确度;最后通过不断调整LIBSVM参数C和gamma的值,并重复模型训练和预测步骤,优选出准确度最高的C和gamma的搭配,得到最优模型。
更进一步的,指尖到掌心的距离Fi计算如下:
Fi=||Pi-C||
其中,i=1,2,3,4,5,Pi为指尖坐标,C为掌心坐标。
更进一步的,夹角Ai计算如下:
其中,Pi'为指尖Pi在手掌平面上的投影,i=1,2,3,4,5,D为手指方向向量。
更进一步的,特征向量集S计算如下:
S=(F1,F2,F3,F4,F5,A1,A2,A3,A4,A5)
其中,Fi为指尖到掌心的距离,i=1,2,3,4,5。
具体的,应用QT信号槽机制进行通信的步骤如下:
S201、实现并重写leapMotion的监听者类,并使该类继承QOBJECT类,使其可以使用信号槽机制;
S202、在SampleListener类中定义信号函数getGestureData(appX,appY,res),将参数设置为手当前的坐标值和当前手势对应的标号整型值;
S203、定义参数与信号函数一致的槽函数,并将槽函数与信号函数进行连接,槽函数对信号函数发射的数据进行处理,依据坐标值和相应手势含义实现绘画工具的选择、绘画、空操作等功能,实现手指无接触绘画。
进一步的,步骤S203中,依据手指坐标当前所属的绘画区域、工具选择区域、具体某一工具的包围矩形区域及手势含义的逻辑运算判断实现对绘画的控制,手势含义包括模拟鼠标单击的点击手势,模拟鼠标弹起的弹起手势以及模拟鼠标移动的伸出食指手势)。
本发明的另一个技术方案是,一种基于Leap Motion的手指无接触绘图系统,包括Leap Motion控制器、手势识别子模块和绘画子模块;
Leap Motion控制器通过传感器获得手部运动追踪数据,同时通过Leap MotionAPI对硬件设备进行控制;
手势识别子模块利用Leap Motion控制器采集的手部运动追踪数据进行分析,识别出不同手势,向绘画子模块发送消息;
绘画子模块接收手势识别子模块发出的消息和数据采集子模块获得的数据,并做出响应。
具体的,Leap Motion控制器上设置有两个红外线摄像头和一个光学传感器,能够识别人的双手和长条状工具,并定位各个关键点的位置与速度;手部运动追踪数据包括如下:
手类:提供与手有关的物理量,包括手掌的法向量和手臂的伸展方向;
手臂:一个类似于骨骼的对象,提供手臂的方向、长度、宽度和端点;
手指类:提供指尖的位置和速度以及手指指向的方向;
指骨类:将手指分为四段,每段用一个对象来表示并提供了每节指骨的位置坐标信息;
摄影机图像:提供Leap Motion控制器拍摄的原始图像,原始图像数据被封装成帧,并作为监听者对象回调函数的传入参数,根据onFrame函数获取数据并进行处理。
与现有技术相比,本发明至少具有以下有益效果:
本发明一种基于Leap Motion的手指无接触绘图方法,应用SVM算法能够有效识别静态手势,依靠Leap Motion API提供的数据,能够实现简单的动态手势的识别,操作性较强;采用QT图形用户界面框架,相比较高校中使用的MFC图形用户框架,QT功能更加强大,跨平台能力更强,图形界面更加美观,拥有比较优良的人机交互界面,实现了手指无接触绘图,使VR交互游戏的玩家们摆脱了游戏手柄的依赖,可以使用双手自由地绘画,改善了这类游戏的游戏体验。
进一步的,SVM即支持向量机,是机器学习领域一种广义线性分类器,能够按照监督学习的方式对数据进行二元分类,其决策边界是对学习样本求解的最大边距超平面。该模型使用铰链损失函数计算经验风险并在求解系统中加入了正则化项以优化结构风险,是一个具有稀疏性和稳健性的分类器。本发明所使用的分类器是在SVM线性分类器的基础上通过核方法实现的非线性多分类SVM,可以针对数据集进行多种手势数据的分类。该算法实现简单,可操作性强,效率高,识别准确率较高,能够满足手势识别和手势控制的目的。
进一步的,应用SVM分类器进行手势识别的关键是特征向量的选取,合适的特征值能够有效区分不同手势数据。考虑到本发明所设计的手势比较简单,不同手势的差异点主要集中在手指的弯曲程度和手掌的张开程度,故选取手指指尖到掌心的距离作为衡量手指弯曲程度的指标,手指与手的方向向量之间的夹角作为衡量手掌张开程度的指标。经过实际测试,以手指到掌心的距离和手指方向和手掌方向的夹角作为特征向量值进行手势识别的实际效果还是比较准确的,达到预期目标。
进一步的,QT信号槽机制与windows下消息机制类似,消息机制是基于回调函数,QT中用信号与槽来代替函数指针,使程序更安全简洁。相比于回调函数,QT信号槽机制具备如下优点:回调函数是函数指针的一种用法,如果多个类都关注某个类的状态变化,此时需要维护一个列表,以存放多个回调函数的地址。对于每一个被关注的类,都需要做类似的工作,因此这种做法效率低,不灵活。QT使用信号与槽机制来解决这个问题,程序员只需要指定一个类含有哪些信号函数、哪些槽函数,QT会处理信号函数和槽函数之间的绑定。当信号函数被调用时,QT会找到并执行与其绑定的槽函数。允许一个信号函数和多个槽函数绑定,QT会依次找到并执行与一个信号函数绑定的所有槽函数,这种处理方式更灵活。另外,QT信号与槽机制降低了QT对象的耦合度。激发信号的QT对象无须知道是哪个对象的哪个槽需要接收它发出的信号,它只需要做的是在适当的时间发送适当的信号就可以了,而不需要知道也不关心它的信号有没有被接收到,更不需要知道哪个对象的哪个槽接收到了信号。同样地,对象的槽也不知道是哪些信号关联了自己,而一旦关联信号和槽,QT就保证了适合的槽得到了调用。即使关联的对象在运行时被删除。应用程序也不会崩溃。
本发明还公开了一种基于Leap Motion的手指无接触绘图系统,相比于传统绘画系统,本系统具备更具有趣味性和更加自然的人机交互方式。用户用手控制绘画系统,相比于鼠标操作而言,灵活度与自由度更高,体验更好,该绘画系统具有良好的拓展性,可结合VR技术,为用户带来沉浸式的绘画体验。
进一步的,Leap Motion作为一款光学感测的体感控制器,拥有两个红外线摄像头和一个光学传感器,最大的好处就是使用户摆脱了手柄的束缚。相比起一些使用手柄的体感控制器,Leap Motion完全解放了用户的双手。用户可以不接触任何外部设备,只需在空中挥动双手,做出几个简单的动作,就能被系统捕获和识别,好处自然是不言而喻的。LeapMotion的光学传感器是采集数据的重要元件,结合红外线摄像头拍摄的画面,Leap Motion控制器就能计算出人手各个关节点的位置、速度等运动追踪数据,按照人手的结构这些数据被分成五类,分别为手类、手臂类、手指类,指骨类和额外的摄影机图像类。这五类数据被封装成帧,并按照对象间的组合关系相互关联,形成了统一的整体,为基于Leap Motion的程序开发提供便利。
综上所述,本发明具备趣味性以及更加自然的人机交互方式,灵活度与自由度更高,具备良好的互动性;容易被接受和掌握,尤其适合老人和孩童群体,具有广泛的应用前景。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明的绘画系统示意图;
图2为,其中,(a)为Leap Motion感应区域图,(b)为Leap Motion设备坐标系图,(c)为手掌法向量与方向向量示意图,(d)为手指方向示意图;
图3为指骨对象化示意图;
图4为手势识别流程图。
具体实施方式
本发明提供了一种基于Leap Motion的手指无接触绘图方法,采用“静态手势+运动追踪数据约束性条件”相结合的方法识别动态手势,一定程度上改善了识别准确率。经过手势识别,就能够判断出用户的手势,不同的手势对应不同的事件,响应不同的处理,再将运动追踪数据中食指指尖在传感器观察坐标系下的位置映射为屏幕坐标系下画笔的位置,就能实现图形和线条的绘制。
本发明一种基于Leap Motion的手指无接触绘图方法,包括步骤如下:
S1、采用支持向量机算法进行手势识别;
对于静态手势,使用SVM算法进行识别,对于动态手势,根据静态手势识别的结果和运动追踪数据综合判断,SVM算法可以进行静态手势的识别,动态手势的识别则通过静态手势和运动追踪数据综合判断。动态手势是手指的点击动作,先应用SVM算法对伸出手指的动作进行识别,然后再调用Leap Motion API得到手指指尖的速度,当指尖向正前方的速度大于阈值的时候触发按下按钮事件;当指尖向后方运动的速度达到某个阈值时触发释放按钮事件。手指在短时间内按下和弹起,就判定为单击事件。手势识别完成后,按照结果的不同触发不同的事件,再由绘图系统做出响应。
选取由手指到掌心的距离和手指方向与手掌方向的夹角作为特征向量,手势识别的步骤如下:
S101、通过Leap Motion API获得指尖Pi和掌心C的坐标,计算指尖到掌心的距离Fi;
指尖到掌心的距离Fi计算如下:
Fi=||Pi-C||
其中,i=1,2,3,4,5;
S102、根据指尖Pi在手掌平面上的投影Pi'的坐标计算CPi'与手指方向向量D的夹角Ai;
S103、对距离值进行标准化处理,构造特征向量集S;
S=(F1,F2,F3,F4,F5,A1,A2,A3,A4,A5);
S104、给不同手势对应的特征向量加上不同标签,按照7:3的比例将特征向量集均匀分为训练集和测试集,将训练集转化为LIBSVM指定的格式,调用SVMTRAIN进行模型的训练,得到模型文件model.txt;
S105、应用模调用SVMPREDICT函数对测试集数据进行预测,返回预测结果对应的标签,与测试集原来的数据进行比较,得出预测准确度;
S106、不断调整LIBSVM参数C和gamma的值,并重复模型训练和预测步骤,优选出准确度最高的C和gamma的搭配,得到最优模型即可。
S2、应用QT信号槽机制实现识别后的手势数据与绘画系统之间的通信,进而实现用手控制绘画系统;
S201、实现并重写leapMotion的监听者类,并使该类继承QOBJECT类,使其可以使用信号槽机制;
S202、在SampleListener类中定义信号函数getGestureData(appX,appY,res),将参数设置为手当前的坐标值和当前手势对应的标号整型值。
SampleListener::onFrame(const Leap::Controller&)方法会对手势的数据逐帧作出反应,在该方法中发射信号;
S203、在绘画系统中定义参数与信号函数一致的槽函数,并将槽函数与信号函数进行连接,槽函数将及时对信号函数发射的数据进行处理,依据坐标值和相应手势含义实现绘画工具的选择、绘画、空操作等功能,从而实现手指无接触绘画系统。
实现方法为:依据手指坐标当前所属区域(绘画区域、工具选择区域、具体某一工具的包围矩形区域)及手势含义(包括模拟鼠标单击的点击手势,模拟鼠标弹起的弹起手势以及模拟鼠标移动的伸出食指手势)的逻辑运算判断实现对绘画系统的基本控制。
本发明基于Leap Motion的手指无接触绘图方法所用到的硬件设备是LeapMotion控制器。是一种较为简单直接的将体感交互设备和绘画系统结合的方案,LeapMotion控制器安装有两个红外线摄像头和一个光学传感器,能够识别人的双手和长条状工具,并精确定位各个关键点的位置与速度。每一时刻的数据被封装成帧,通过驱动程序输入计算机中,开发人员可以调用SDK提供的API进行基于Leap Motion的应用开发。手指无接触绘图就是用手指代替画笔,在不接触任何键盘、鼠标、游戏手柄的情况下在计算机上绘画。整个绘画系统被分为数据采集、手势识别、绘图程序三部分。
数据采集由Leap Motion控制完成,所得数据通过API传递给手势识别部分。
手势识别是从运动追踪数据中分析出当前用户正在做什么手势,主要应用了机器学习领域的相关算法,如支持向量机(SVM)模型、动态时间规整(DTW)模型、隐马尔可夫(HMM)模型、BP神经网络模型、长短期记忆网络(LSTM)模型等。这些算法针对静态手势、动态轨迹的识别效果比较好,但是对于动态手势的识别却存在或多或少的问题。
同时,本发明绘画系统具有良好的拓展性,可结合VR技术,为用户带来沉浸式的绘画体验。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中的描述和所示的本发明实施例的组件可以通过各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明是实现一套手指无接触绘图方法,该方法需要Leap Motion硬件设备和Leap Motion SDK的支持。本发明在Leap Motion API基础上,按照软件工程的思维,按照可行性分析、需求分析、系统设计、详细设计、方法实现、方法测试等步骤进行软件的研发工作,最终实现了绘画方法的基本功能。具体来说,分为以下几个步骤:
1、可行性分析
通过浏览网页和查阅文献,项目组了解到目前VR游戏正处在发展初期,许多游戏玩家虽然听说过这类游戏,但并没有亲自尝试过,这主要是受制于游戏主机价格的高昂。但可以肯定的是,随着游戏软硬件设备的普及,硬件价格的下降和软件价格的升高将会成为一个必然的趋势。国产VR游戏相比较欧美、日本等国起步较晚,但潜在市场非常广大,发展前进十分看好。在未来,VR游戏将取代传统电视主机游戏称为游戏行业新的霸主。本项目研究的手指无接触绘图正迎合了目前游戏产业的发展趋势,着力解决VR游戏开发中其中一个方面的问题。如果项目能够研发成功,将能够为方兴未艾的VR游戏开发行业提供重要的参考。
2、需求分析
软件开发具有复杂性、一致性、可变性与不可见性等特性,这些固特性导致了软件开发的困难性。作为一个项目成功与否的重要标志,软件需求将贯穿软件开发的各个阶段,指导软件开发各个环节的工作。需求分析主要分为功能需求分析、非功能性需求、约束性条件等几部分组成组成。
2.1、功能性需求
绘图系统的基本功能是图形的绘制,用户使用食指完成各种图形的绘制,包括点、线、多边体、椭圆等;其次,各种按钮的点击功能也是靠食指实现的,食指向前做出按压的动作表示按钮的按下,食指向后做出弹起的动作表示按钮的弹起;握拳表示绘画的开始和结束;手的抓取和释放表示画布的放大与缩小。表1所示手势功能设计列举了绘图系统中采用的一些手势,其中既有动态手势也有静态手势。静态手势自始至终没有任何比变化,某一时刻只要识别出某一种手部姿态当即做出判断;动态手势是一个连续变化的过程,不同时刻对应的手部姿态也不同,为了简化设计,动态手势被分成了三个状态,即手势的开始状态判定,手势的运行状态判定和手势的结束状态判定。综合运用以上手势,可以实现绘图程序绝大部分的功能。
表1手势设计
2.2、非功能性需求与约束性条件
本发明主要在Windows操作平台上运行,其实质是一个Windows桌面应用程序,采用了图形化的用户交互界面。系统界面采用QT框架,QT相比较MFC界面元素更加丰富,组件设计更加美观,开发难度也比较小。软件对客户机配置要求不高,windows XP/7/8/10平台下都能够流畅使用本系统进行手指无接触绘图。
3、系统设计
请参阅图1,本发明一种基于Leap Motion的手指无接触绘图系统,包括数据采集子模块、手势识别子模块和绘画子模块,三个子模块高内聚、松耦合,组成了一个完整的系统。
数据采集子模块通过Leap Motion硬件传感器和驱动程序获得手部运动追踪数据,同时通过Leap Motion API对硬件设备进行控制;
手势识别子模块利用采集的数据进行分析,识别出不同手势,向绘图系统发送消息;
绘画子模块接受手势识别发出的消息和数据采集子模块获得的数据,并做出响应。
各部分具体功能如下所述:
3.1、数据采集子模块
请参阅图2,数据采集就是将传感器感知的手部运动追踪数据传回计算机中进行处理,Leap Motion API为开发人员提供了监听者类,通过继承该类可以获得传感器传回的运动追踪数据。运动追踪数据由人手部各个关键点的位置坐标和运动速度组成,在此基础上API还提供了强大的类库可以计算角度、距离等物理量。所有的物理量都以设备坐标系为基准,其中z轴平行于Leap Motion控制器镜面指向使用者,x轴平行于镜面指向右侧,y轴垂直于镜面向上,整个控制器所能探测的范围是一个倒立的四棱台,当用户的手处于控制器的有效感应区域时,就能够获得运动追踪数据。
具体来讲,Leap Motion API提供的运动追踪数据主要包括五类:
手类:提供与手有关的物理量,包括手掌的法向量和手臂的伸展方向;
手臂:一个类似于骨骼的对象,提供手臂的方向、长度、宽度和端点;
手指类:提供指尖的位置和速度以及手指指向的方向;
指骨类:Leap Motion将人的手指分为四段,每段用一个对象来表示并提供了每节指骨的位置坐标等信息,如图3所示;
摄影机图像:提供Leap Motion控制器拍摄的原始图像。这些数据被封装成帧,并作为监听者对象回调函数的传入参数,开发人员可以该对象的onFrame函数中获取数据并进行处理。
3.2、手势识别子模块
手势识别子模块处理采集的数据,分析并判断手势的类型,并发送不同的消息给主程序模块。手势识别的算法有很多种,这里采用的算法是SVM算法,SVM算法理解容易,实现简单,上手比较快。
请参阅图4,使用SVM算法的基本流程为:
构造特征向量集,按比例分配训练集和测试集,用训练集生成SVM预测模型,再用测试集去测试,运用交叉检验和网格化优化的方法提高预测准确度。动态手势的识别是在静态手势的基础上运用Leap Motion API提供的各项数据,设置不同的阈值来判断动态手势开始、运行、结束等状态的改变来实现的。
3.3、绘画子模块
绘画子模块主要负责界面的绘制、组件的设置以及响应来自手势识别模块发出的消息等功能,其中消息响应是该模块核心。类似其他桌面应用程序,本发明绘图系统也是由事件驱动运行的。Leap Motion控制器替代了鼠标的一部分功能,因而就要编写相应的消息响应机制。这里用到的消息响应机制是QT中的信号槽,该机制是实现Leap Motion模块和主程序模块连接的关键。顾名思义,信号槽分为两部分,信号的发出者在接收到数据并进行手势识别后,调用不同的信号函数,该函数和对应槽函数已经预先被connect函数连接,信号发出后,该信号连接至的槽函数被系统调用,执行不同手势代表的操作。
4、方法实现和测试
基于以上的需求分析和系统设计,便可以进行代码实现。本系统采用QT框架、c++语言编写而成,使用的集成开发环境是Visual Studio。项目组使用Leap Motion控制器记录下了不同手势的数据,将其分为训练集和测试集,用训练集训练SVM分类器模型,用测试集进行准确度测试。通过修改SVM分类器的参数,获得了较高的准确度。再将手势识别模块与其他部分集成在一起,基本实现了预定功能。用户可以使用双手完成简单的绘制和涂鸦。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
Claims (10)
1.一种基于Leap Motion的手指无接触绘图方法,其特征在于,采用SVM算法进行静态手势识别,采用静态手势和运动追踪数据约束性条件相结合的方法识别动态手势,根据识别的静态手势和动态手势判断用户手势动作,应用QTQT信号槽机制实现识别后的手势数据与绘画系统之间的通信,不同的手势动作对应不同事件,响应不同的处理,再将运动追踪数据中食指指尖在传感器观察坐标系下的位置映射为屏幕坐标系下画笔的位置,实现图形和线条的绘制,完成手指无接触绘图。
2.根据权利要求1所述的方法,其特征在于,以手指的点击动作作为动态手势,应用SVM算法对伸出手指的动作进行识别,然后调用Leap Motion API得到手指指尖的速度,当指尖向正前方的速度大于阈值的时候触发按下按钮事件;当指尖向后方运动的速度达到某个阈值时触发释放按钮事件;手指在短时间内按下和弹起判定为单击事件;手势识别完成后,按照结果的不同触发不同的事件做出绘画响应。
3.根据权利要求1或2所述的方法,其特征在于,选取由手指到掌心的距离和手指方向与手掌方向的夹角作为特征向量,通过Leap Motion API获得指尖和掌心的坐标,得到指尖到掌心的距离;然后根据指尖在手掌平面上的投影的坐标计算与手指方向向量的夹角;对距离值进行标准化处理,构造特征向量集;给不同手势对应的特征向量加上不同标签,将特征向量集均匀分为训练集和测试集,将训练集转化为LIBSVM指定的格式,调用SVMTRAIN进行模型的训练,得到模型文件model.txt;应用模调用SVMPREDICT函数对测试集数据进行预测,返回预测结果对应的标签,与测试集原来的数据进行比较,得出预测准确度;最后通过不断调整LIBSVM参数C和gamma的值,并重复模型训练和预测步骤,优选出准确度最高的C和gamma的搭配,得到最优模型。
4.根据权利要求3所述的方法,其特征在于,指尖到掌心的距离Fi计算如下:
Fi=||Pi-C||
其中,i=1,2,3,4,5,Pi为指尖坐标,C为掌心坐标。
5.根据权利要求3所述的方法,其特征在于,夹角Ai计算如下:
其中,Pi'为指尖Pi在手掌平面上的投影,i=1,2,3,4,5,D为手指方向向量。
6.根据权利要求5所述的方法,其特征在于,特征向量集S计算如下:
S=(F1,F2,F3,F4,F5,A1,A2,A3,A4,A5)
其中,Fi为指尖到掌心的距离,i=1,2,3,4,5。
7.根据权利要求1所述的方法,其特征在于,应用QT信号槽机制进行通信的步骤如下:
S201、实现并重写leapMotion的监听者类,并使该类继承QOBJECT类,使其能够使用信号槽机制;
S202、在SampleListener类中定义信号函数getGestureData,将参数设置为手当前的坐标值和当前手势对应的标号整型值;
S203、定义参数与信号函数一致的槽函数,并将槽函数与信号函数进行连接,槽函数对信号函数发射的数据进行处理,依据坐标值和相应手势含义实现绘画工具的选择、绘画、空操作等功能,实现手指无接触绘画。
8.根据权利要求7所述的方法,其特征在于,步骤S203中,依据手指坐标当前所属的绘画区域、工具选择区域、具体某一工具的包围矩形区域及手势含义的逻辑运算判断实现对绘画的控制,手势含义包括模拟鼠标单击的点击手势,模拟鼠标弹起的弹起手势以及模拟鼠标移动的伸出食指手势。
9.一种基于Leap Motion的手指无接触绘图系统,其特征在于,包括Leap Motion控制器、手势识别子模块和绘画子模块;
Leap Motion控制器通过传感器获得手部运动追踪数据,同时通过Leap Motion API对硬件设备进行控制;
手势识别子模块利用Leap Motion控制器采集的手部运动追踪数据进行分析,识别手势并向绘画子模块发送消息;
绘画子模块接收手势识别子模块发出的消息和Leap Motion控制器获得的数据,并做出响应进行绘画。
10.根据权利要求9所述的绘图系统,其特征在于,Leap Motion控制器上设置有两个红外线摄像头和一个光学传感器,能够识别双手和长条状工具,并定位各个关键点的位置与速度;手部运动追踪数据包括如下:
手类:提供手掌的法向量和手臂的伸展方向;
手臂:提供手臂的方向、长度、宽度和端点;
手指类:提供指尖的位置和速度以及手指指向的方向;
指骨类:将手指分为四段,每段用一个对象表示并提供每节指骨的位置坐标信息;
摄影机图像:提供Leap Motion控制器拍摄的原始图像,原始图像数据被封装成帧,并作为监听者对象回调函数的传入参数,根据onFrame函数获取数据并进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910232829.7A CN109933206B (zh) | 2019-03-26 | 2019-03-26 | 一种基于Leap Motion的手指无接触绘图方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910232829.7A CN109933206B (zh) | 2019-03-26 | 2019-03-26 | 一种基于Leap Motion的手指无接触绘图方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109933206A true CN109933206A (zh) | 2019-06-25 |
CN109933206B CN109933206B (zh) | 2022-03-08 |
Family
ID=66988262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910232829.7A Expired - Fee Related CN109933206B (zh) | 2019-03-26 | 2019-03-26 | 一种基于Leap Motion的手指无接触绘图方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109933206B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515455A (zh) * | 2019-07-25 | 2019-11-29 | 山东科技大学 | 一种基于Leap Motion和局域网内协同的虚拟装配方法 |
CN112115840A (zh) * | 2020-09-11 | 2020-12-22 | 桂林量具刃具有限责任公司 | 一种图像测量仪器的手势识别方法 |
CN112121280A (zh) * | 2020-08-31 | 2020-12-25 | 浙江大学 | 一种心音盒的控制方法及控制系统 |
CN112149574A (zh) * | 2020-09-24 | 2020-12-29 | 济南大学 | 一种面向陪护机器人的意图柔性映射方法及装置 |
CN113570679A (zh) * | 2021-07-23 | 2021-10-29 | 北京百度网讯科技有限公司 | 一种图形绘制方法、装置、设备以及存储介质 |
CN113657243A (zh) * | 2021-08-13 | 2021-11-16 | 黄理鑫 | 一种针对非接触式仿生学遥控手势性能影响的测试方法 |
CN113961067A (zh) * | 2021-09-28 | 2022-01-21 | 广东新王牌智能信息技术有限公司 | 基于深度学习的非接触式涂鸦绘制方法与识别交互系统 |
CN114931746A (zh) * | 2022-05-12 | 2022-08-23 | 南京大学 | 基于笔式和触屏交互的3d游戏的交互方法、装置及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160184469A1 (en) * | 2014-12-24 | 2016-06-30 | University Of Central Florida Research Foundation, Inc. | System for detecting sterile field events and related methods |
CN106598227A (zh) * | 2016-11-15 | 2017-04-26 | 电子科技大学 | 基于Leap Motion和Kinect的手势识别方法 |
CN107024989A (zh) * | 2017-03-24 | 2017-08-08 | 中北大学 | 一种基于Leap Motion手势识别的沙画制作方法 |
-
2019
- 2019-03-26 CN CN201910232829.7A patent/CN109933206B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160184469A1 (en) * | 2014-12-24 | 2016-06-30 | University Of Central Florida Research Foundation, Inc. | System for detecting sterile field events and related methods |
CN106598227A (zh) * | 2016-11-15 | 2017-04-26 | 电子科技大学 | 基于Leap Motion和Kinect的手势识别方法 |
CN107024989A (zh) * | 2017-03-24 | 2017-08-08 | 中北大学 | 一种基于Leap Motion手势识别的沙画制作方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515455A (zh) * | 2019-07-25 | 2019-11-29 | 山东科技大学 | 一种基于Leap Motion和局域网内协同的虚拟装配方法 |
CN110515455B (zh) * | 2019-07-25 | 2023-03-03 | 山东科技大学 | 一种基于Leap Motion和局域网内协同的虚拟装配方法 |
CN112121280A (zh) * | 2020-08-31 | 2020-12-25 | 浙江大学 | 一种心音盒的控制方法及控制系统 |
CN112115840A (zh) * | 2020-09-11 | 2020-12-22 | 桂林量具刃具有限责任公司 | 一种图像测量仪器的手势识别方法 |
CN112149574A (zh) * | 2020-09-24 | 2020-12-29 | 济南大学 | 一种面向陪护机器人的意图柔性映射方法及装置 |
CN113570679A (zh) * | 2021-07-23 | 2021-10-29 | 北京百度网讯科技有限公司 | 一种图形绘制方法、装置、设备以及存储介质 |
CN113657243A (zh) * | 2021-08-13 | 2021-11-16 | 黄理鑫 | 一种针对非接触式仿生学遥控手势性能影响的测试方法 |
CN113961067A (zh) * | 2021-09-28 | 2022-01-21 | 广东新王牌智能信息技术有限公司 | 基于深度学习的非接触式涂鸦绘制方法与识别交互系统 |
CN113961067B (zh) * | 2021-09-28 | 2024-04-05 | 广东新王牌智能信息技术有限公司 | 基于深度学习的非接触式涂鸦绘制方法与识别交互系统 |
CN114931746A (zh) * | 2022-05-12 | 2022-08-23 | 南京大学 | 基于笔式和触屏交互的3d游戏的交互方法、装置及介质 |
CN114931746B (zh) * | 2022-05-12 | 2023-04-07 | 南京大学 | 基于笔式和触屏交互的3d游戏的交互方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109933206B (zh) | 2022-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109933206A (zh) | 一种基于Leap Motion的手指无接触绘图方法及系统 | |
US20220236808A1 (en) | Dynamic, free-space user interactions for machine control | |
US9690982B2 (en) | Identifying gestures or movements using a feature matrix that was compressed/collapsed using principal joint variable analysis and thresholds | |
Kjeldsen et al. | Toward the use of gesture in traditional user interfaces | |
US6175954B1 (en) | Computer programming using tangible user interface where physical icons (phicons) indicate: beginning and end of statements and program constructs; statements generated with re-programmable phicons and stored | |
US10241639B2 (en) | Dynamic user interactions for display control and manipulation of display objects | |
Kjeldsen | Visual interpretation of hand gestures as a practical interface modality | |
CN105308536A (zh) | 用于显示器控制和定制姿势解释的动态用户交互 | |
CN103218041A (zh) | 增强的基于相机的输入 | |
CN102335510B (zh) | 人机互动系统 | |
US10599324B2 (en) | Hand gesture API using finite state machine and gesture language discrete values | |
US11617953B2 (en) | Virtual object interaction scripts | |
CN104407696B (zh) | 移动设备的虚拟球模拟及控制的方法 | |
CN110866468A (zh) | 一种基于无源rfid的手势识别系统及方法 | |
CN112541375A (zh) | 一种手部关键点识别方法及装置 | |
CN113052078A (zh) | 空中书写轨迹识别方法、装置、存储介质及电子设备 | |
Annachhatre et al. | Virtual Mouse Using Hand Gesture Recognition-A Systematic Literature Review | |
CN111860086A (zh) | 基于深度神经网络的手势识别方法、装置及系统 | |
Liu et al. | COMTIS: Customizable touchless interaction system for large screen visualization | |
CN110750193B (zh) | 一种基于人工智能的场景拓扑确定方法和装置 | |
Han et al. | Connecting users to virtual worlds within MPEG-V standardization | |
CN110262660A (zh) | 基于Kinect体感设备虚拟抛掷盛接系统 | |
Friedman et al. | Using a brain-computer interface in highly-immersive virtual reality | |
Singhvi et al. | Virtual Gaming Using Gesture Recognition Model | |
Bernardes et al. | Comprehensive model and image-based recognition of hand gestures for interaction in 3D environments |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220308 |
|
CF01 | Termination of patent right due to non-payment of annual fee |