一种基于LeapMotion手势识别的沙画制作方法与流程

文档序号:11589639阅读:1990来源:国知局
本发明属于沙画制作方法
技术领域
,具体涉及一种基于leapmotion手势识别的沙画制作方法。
背景技术
:随着虚拟现实技术的发展以及人们对计算机图形学、计算机视觉等相关科目的研究,手势识别技术发展为近些年来人机交互领域的热门研究课题。手势识别可分为基于机械传感设备的手势识别和基于视觉的手势识别两大类。与基于机械传感设备的手势识别相比,基于视觉的手势识别方式在实现过程中具有方便、高效、灵活、自然等诸多优势,但是因为该类方法大多需要依赖摄像头采集手势图像信息,并且需要经过手势图像分割、图像预处理、手势特征提取等繁琐的过程,因而易受到光线、复杂环境的影响而导致识别不精确、实时性较差。在众多体感设备中,leapmotion以毫米级近距离捕获手运动的极大优势成为当前结合手势识别技术和虚拟现实技术最有代表性的装置,为实现人机交互带来了新的灵感。沙画创作是21世纪初期新兴的一种艺术创作方式,沙子动画搭配流畅跌宕的背景音乐给人们带来全新的视听感受。但是,现场沙画表演要求演出者随时携带投影设备、沙画方桌、大量细沙等必备工具,而且对现场表演环境及光线有诸多要求,再加上现场沙画表演的作品不具有多次欣赏及传播的缺陷。技术实现要素:本发明的目的是解决传统的现场沙画表演大受追捧但受到环境、光线等因素的局限,提供一种基于leapmotion手势识别的沙画制作方法。为解决上述技术问题,本发明采用的技术方案为:一种基于leapmotion手势识别的沙画制作方法,包括以下步骤:1)数据采集:将leapmotion集成到unity3d中,通过leapmotion获得手势的hand、finger、tool、vector和gesture几类数据;2)特征提取:从hand、finger、tool、vector和gesture几类数据中提取以下特征值作为手势分类的重要依据:palmposition、handdirection、palmnormal、fingertipsposition、length;3)沙画手势设计:在unity3d中定义“点”、“抹”、“划”、“擦”、“撒”五种简单的沙画手势,并根据不同手势定义每种手势作画时的部位;4)手势识别:依据提取的palmposition、handdirection、palmnormal、fingertipsposition、length特征值,采用src算法实现手势识别过程,在unity3d中显示出相应的手势名称;5)落沙效果的实现:利用unity3d中的粒子系统模拟沙子下落的效果,当识别出手势为“撒沙”时,unity3d切换作画平台角度,以便更清晰的看到沙子从手中落下的效果;6)沙画绘制:采用leapmotion实现手势跟踪,实时追踪手势的位置坐标及运动方向,按照定义好的手势在沙画平台上完成虚拟沙画的绘制。leapmotion能精确检测手、手指及类似手指的工具的三维坐标信息,捕捉精度高达0.01mm。与单目相机相比,leapmotion不易受局部遮挡、背景环境等外部因素的影响,更适用于手势识别与跟踪。unity3d软件具有很好的跨平台性,支持windows、苹果、安卓等多种主流终端,并且unity3d具有粒子系统、场景编辑、动画项目等内置功能,能轻松实现系统交互设计、二维ui界面开发、三维场景驱动及漫游等需求。所述步骤2)中除了提取palmposition、handdirection、palmnormal、fingertipsposition、length特征值之外,还包括通过角域划分的方法引入指尖角度及指尖距离两个新增的特征向量作为手势识别依据,以便提高手势识别的准确率。所述步骤4)中采用src算法实现手势识别的过程为:首先输入训练好的手势样本集x∈rm×n和一个待测样本y∈rm,归一化x的每一列得到统一的单位l2范数,利用(a1*)=argmin||a||1s×t×||y-qa||2<ε解决l1范数最小化问题,最后通过计算残余ri(grest)=||y-qai||2,满足所求残差值最小,确认待测样本y所在的种别。所述步骤6)采用leapmotion实现手势跟踪的过程中加入手势的起止判断:设定手的运动速度vt与运动方向变化率δat两个数据的合理阈值p和q,当vt和δat同时满足p>δat和q>vt时,表示当前手势位于起始点或是结束点,一定程度消除手的振颤,从而更精确的实现leapmotion的手势跟踪。所述手的运动速度vt与运动方向变化率δat的获取方法为:沙画绘画过程中手指的位置坐标与运动时间的关系可用表示,采用如下公式计算手指的运动方向:速度方向变化率δat=at-at-1;手的运动速度本发明采用以上技术方案,利用leapmotion采集人手数据信息,加入角域划分的方法优化原特征向量提取算法,同时利用src算法识别沙画手势;手势若存在,leapmotion将利用强大的tbd跟踪技术实时监测人手各指尖位置及运动方向,加入开始点与结束点的判断并改进该判断方法以改善其跟踪算法带来的自颤的缺陷,最后根据本文自行定义的沙画手势语义驱动虚拟手完成沙画创作。本发明提出的基于leapmotion手势识别的沙画制作方法能够直接获取手的特征信息,无需进行繁琐的数据预处理及特征向量提取过程。与
背景技术
相比,本发明具有过程简单、识别效果精准的优势,并且跟踪效果更加稳定,能够很好地适用在虚拟沙画系统中。附图说明图1是手势特征值分布图;图2-6是五种手势在leapmotionvisualizer中的效果图;图7是“划沙”效果图;图8是“擦沙”效果图;图9是“抹沙”效果图;图10是“点沙”效果图;图11是“撒沙”效果图;图12是本发明实施例中人手手指实时位置坐标与运动数据。具体实施方式本实施例中的一种基于leapmotion手势识别的沙画制作方法,包括以下步骤:1)数据采集:首先需要从leapmotion官网下载leap_motion_sdk_windows_2.3.1软件安装包将leapmotion安装到电脑终端;为了将leapmotion集成到unity3d,需要下载leapmotionunitycoreassetsv2.3.1包并将其引入到unity3d中。leapmotionapi从leapmotion捕捉的帧数据中获得手势的hand、finger、tool、vector和gesture等几类数据,若leapmotion成功检测到人手并且该手不离开设备的视野范围时,leapmotion会给它设置一个唯一的不可更改的id号,然后绑在controller对象上的listener子类会立即触发其内部定义的onframe()回调函数同步输出该id号的人手的手指的实时坐标与运动数据(见附图12);2)特征提取:从hand、finger、tool、vector和gesture几类数据中提取以下特征值作为手势分类依据:palmposition、handdirection、palmnormal、fingertipsposition、length(见图1);同时,为提高手势识别的准确率,加入角域划分的方法同时引入指尖角度及指尖距离两个新增的特征向量,使用优化后的特征向量组作为重要的手势分类识别依据(见表1)。然后实现特征向量标准化:将各值归约至[0,1]的区间内,其中,将ai的值按比例缩小至[0.5,1]区间。特征向量优化前后的手势识别率对比结果可以看出优化的有效性(见表2)。表1优化后的特征向量组表2识别率对比3)沙画手势设计:在unity3d中定义“点”、“抹”、“划”、“擦”、“撒”五种简单的沙画手势,并根据不同手势定义每种手势作画时的部位(见表3);连接leapmotion设备后可在leapmotionvisualizer中查看每种手势的效果(见图2至图6);表3手势语义定义手势识别手指个数手指作画部位实现效果“点”食指与拇指指尖“抹”整个手掌整个手掌“划”单个手指且为食指食指指尖“擦”单个手指且为拇指大拇指手指外侧“撒”手指个数为0—出现该手势时,出现落沙效果4)手势识别:依据提取的palmposition、handdirection、palmnormal、fingertipsposition、length特征值及新增的指尖角度、指尖距离特征值,采用src算法对手势进行分类识别,每组实验单人单个手势20次,共10人参与实验,将所有获取的样本数据分成两大类,一类样本用于学习与训练,另一类用于测试与验证。首先输入训练好的手势样本集x∈rm×n和一个待测样本y∈rm,归一化x的每一列得到统一的单位l2范数,利用(a1*)=argmin||a||1s·t·||y-qa||2<ε解决l1范数最小化问题,最后通过计算残余ri(grest)=||y-qai||2,满足所求残差值最小,确认待测样本y所在的种别,最终在unity3d中显示出相应的手势名称;5)落沙效果的实现:当手势识别过程识别到“撒沙”手势时利用unity3d中的粒子系统模拟沙子下落效果。选择菜单栏中“gameobject”下的“particlesystem”创建粒子系统,在inspector视图中的particlesystem组件面板设置particlesystem初始化模块、emission、shape、sizeoverlifetime、renderer等几个模块,完成沙子的基本属性、运动状态及运动生命周期的设置,满足沙子下落的预期效果;由于粒子团的生命周期结束后粒子会消失,不会出现沙子在平面堆积的效果,因此,需要简单模拟沙子落在平面上时堆积的效果;最后编写sandpainting脚本文件,当识别出“撒沙”手势后,unity3d粒子系统启动,并且在该脚本文件中设置切换camera视角,从而更好的看出落沙的效果(见图11);6)沙画绘制:采用leapmotion实现手势跟踪,leapmotion采用的是tbd技术实现手势跟踪,沙画作画过程中手指的位置坐标与运动时间的关系可用表示,手指的运动方向理论上来说是曲线的切线方向,但是leapmotion采集的是离散的点数据,因此采用如下公式计算手指的运动方向:由此,可以计算出某时刻手的运动速度为:运动速度趋于0仅仅是判定手势起始点或终止点的必要条件,当手指在空中写一个类似“w”这样的折线时,除去起止点外的其他三个拐点位置处的速度也趋近于0,但是这三个点明显不是手势起止点。因此,还需计算轨迹中相邻两点的速度方向变化率:δat=at-at-1。通过训练选择合适的经验值p和q并且同时满足p>δat和q>vt,表示当前手势位于起始点或是结束点,本实施例选取p取q取3mm/s。手势识别成功后,按照定义好的手势语义在沙画平台上完成虚拟沙画的绘制,实验结果见图7至图11。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1