基于Kinect的虚拟放风筝系统设计
刘晋钢1,韩 燮 2,侯欢欢1,周晓青1
(1.太原工业学院计算机工程系,山西太原030008;2.中北大学大数据学院,山西太原030051)
摘 要: 为了在虚拟环境中实现风筝放飞效果,采用Kinect作为输入设备,利用体感设备的骨骼跟踪技术,定义手臂上举、振臂和双手交叉模拟放风筝的常用姿势,设计了虚拟放风筝系统,让用户通过手臂动作在虚拟环境中放飞风筝。在WPF平台上实现风筝场景设计和风筝运动时的动画设计。通过单元测试和集成测试,表明系统使用骨骼数据跟踪技术结合用户自定义手势,操作合理,WPF动画实现场景及风筝运动突破了传统动画限制,用户能在虚拟场景中体验到放风筝的乐趣。
关键词: 体感设备;虚拟放风筝;骨骼跟踪;WPF
0 引言
风筝在中国有着十分悠久的历史,与民俗、民风及精神文化生活密切相关,放风筝是一种深受民众喜爱的游戏和体育项目。关于风筝的起源,世界上有很多不同的说法,其中相当一部分人认为风筝起源于中国,大约在公元8世纪时由中国传到世界各地[1]。然而常规的放风筝活动都在室外进行,易受场地、天气、季节等诸多复杂因素的影响。随着计算机游戏系统的发展,在室内基于虚拟环境放飞风筝成为可能。
于泽升等[2]提出采用基于加权动态时间规整模板匹配手势识别算法,结合Kinect的手势识别,实现了家居设备的智能控制;刘小建等[3]提出使用深度信息进行多特征提取的手势识别算法,结合Kinect深度信息定位人手;华中师范大学田元等[4]提出用人物进行实时手势识别方法,平均识别率可达97%;邓瑾雯[5]结合Kinect人物和姿势识别技术实现智能家居系统;内蒙古大学钱锟[6]用Kinect摄像机作为数据采集设备,结合彩色图像及骨骼数据信息,对静态手语和动态孤立词手语实现识别,取得较好效果;张冕等[7]采用支持向量机SVM的机器学习方法分类识别操作人员的手势,将手势映射为机器人的运动,通过手势对机器人进行运动控制。实验表明配电作业机器人智能人机交互方法可行;哈尔滨工业大学雷程等[8]针对移动机器人的交互控制,给出了基于Kinect全向移动平台构型,并推导出正逆运动学模型。
Kinect应用广泛,文献[9]将Kinect用于模拟训练人员高浸润定位,文献[10]将其用于虚拟试衣,文献[11]将其用于深度数据指尖检测,文献[12]将其用于智能小车控制系统,文献[13]对Kinect采集的三维数据进行修复和融合,文献[14]对Kinect点云数据超限补偿信息融合,文献[15]使用Kinect对坐姿意图进行判断研究。这些研究成果表明Kinect在虚拟仿真方面有良好的应用前景。
1945年8月,抗战胜利后,汤甲真满心欢喜地越级一年多,插入时迁安化兰田(今湖南省涟源市)的长沙妙高峰中学高中三年级就读。一年后的冬天,汤甲真考入正从辰溪迁回长沙的湖南大学经济系就读。
Study of fat ethoxylate sulfonate and its application performances in liquid detergents 10 25
本文以放风筝为例,提出基于Kinect的虚拟放风筝系统设计。该系统使用Kinect设备采集放风筝的常用姿态,将手势识别扩充到手臂的实时姿态识别,借助WPF的动画模拟放风筝画面。
在音乐教师对很多学生进行音乐课程教学的过程中,因为缺乏创新教学及素质教学的认知,且教师自身对音乐课程普遍存在着一定程度的轻视性。这种综合原因导致在进行相关教育的过程中,教师知识停留在呆板的课本知识教学,缺乏对待音乐的本质——情感。这种现象导致在进行初中音乐教学的过程中,往往引发的是学生对整个教学过程的轻视。
1 关键技术
本系统结合Kinect骨骼绑定技术,利用Microsoft Visual Studio 2010开发工具在WPF平台下进行开发。
1.1 Kinect
Kinect是一种3D体感摄影机,包含即时语音辨识、影像辨识、动态捕捉、麦克风输入、社群互动等功能。微软Kinect依靠相机捕捉三维空间中的用户运动,无需使用任何控制器。该系统还能辨识人脸,可以使用户自动连上游戏,可辨认不同的声音并接受命令,使系统操作更加简易[16]。
1.2 WPF
在WPF的三维坐标系中,原点一般位于在WPF中创建的三维对象中心。三维坐标的X轴正方向朝右,Y轴正方向朝上,Z轴正方向从原点向外朝向观察者。WPF三维空间坐标系如图2所示。
Windows Presentation Foundation(WPF)是微软新一代图形展示系统。WPF提供了统一的编程模型、语言和框架,还有全新的多媒体交互用户图形界面[17]。
1.2.2 WPF图形基础
WPF集成了2D矢量图、光栅图片、文本、音频、视频、动画、3D图形,所有这些特性都构建在DirectX之上。
WPF的基本设计原则是元素合成思想,将元素合成思想融入到WPF的图形系统中。
1.2.3 WPF坐标系
当使用WPF创建图形时,应该知道图形显示在什么地方,需要对WPF中的坐标系统有一定的认识。
本设计关键在于姿势识别和风筝动画。
伴随社会的全面发展,城市交通运输体系不断完善,轨道车辆在城市交通体系中扮演着越来越重要的角色。对于轨道车辆来讲,车门系统的安全性整个车辆的稳定运行,而轨道车辆的车门系统受到多方面因素的影响,容易出现多种类型的故障。为了切实保证城市轨道车辆的安全稳定运行,必须要对车系统故障进行有效的诊断。
2.3 Hsp90α对肺癌诊断价值评估 ROC曲线分析显示,血浆Hsp90α在肺癌诊断中的最佳临界值为61.37 ng/mL,当以最佳临界值作为cut-off值时,其灵敏度为93.10%,特异度为62.50%,ROC曲线下面积为0.857。表明Hsp90α检测在肺癌诊断中具有较高的灵敏性,在肺癌早期诊断中具有一定临床意义,见图3。
1.2.1 WPF简介
图1 WPF默认二维坐标系
图2 WPF三维坐标系统
1.3 骨骼绑定
时间模型以事件驱动方式获取骨骼数据,这种方式更加准确、灵活。应用程序给SkeletonFrameReady事件传递一个事件处理函数。如果下一帧骨骼数据已经准备好,就会立即调用该事件的回调函数。因而Kinect应用要实时获取骨骼数据,通过调用OpenSkeletonFrame()函数实现。
图3 骨骼绑定
使用 NUI(Natural User Interface)操纵计算机。NUI指一类自然用户界面,需要人们以最自然的方式(如语言和文字)与机器互动。此外,需要一种应用程序编程接口API(Application Programming Interface),它可提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,但不需要访问源码,也不用理解内部工作机制。
NEWS评分是一种用于反映患者病理生理状况并识别各种潜在风险的评分法,其在常规基础项上增加了对吸氧与经皮血氧饱和度的评估,虽然因过度依赖仪器而而存在一定的假阳性率,但其临床指导价值依然非常强[1]。中医危重症评分是一种基于传统医学、同样具有反映病理生理状况与识别潜在风险的评分法,相较于NEWS评分在欧美各级医院的广泛应用,中医危重症评分的应用尚不够广泛,其临床应用价值也未得到广泛承认。本文选取收治的624例危重疾病患者,试探究两种评分法在危重症预测上的一致性。现报告如下。
(3)Skeleton对象。Skeleton对象所属类定义了一系列字段描述骨骼信息,这些骨骼信息包括描述骨骼的位置以及骨骼中关节点可能的位置信息。
强龙压不过地头蛇,茶园泼了化学水他工厂不赔能脱身。谈到后来还不是松了口。不赔可以啊,你把那些泼出去的污水收回去。
1.3.1 骨骼数据获取方式
NUI骨骼API提供了两种应用模型:轮询模型和时间模型[20]。
轮询模型是读取骨骼事件最简单的方式。通过调用SkeletonStream类的 OpenNextFrame()函数实现。该函数可指定下一帧骨骼数据的等待时间,当数据已经准备好或超出等待时间时,此函数便会返回Kinect的下一帧骨骼数据。
在Kinect中,20个关节点可以表示一个骨架,如图3所示。当用户进入Kinect的视野范围时,Kinect可自动把用户 20个关节点的位置找到,并且通过(x,y,z)坐标表示[18]。当用户在Kinect面前做很多复杂的动作时,客户端可通过关节点的位置变化执行操作。获取Kinect数据流有 PM(Polling Model)模型和 EM(Event Model)模型[19]。
本系统需要实时采集用户动作,故选择时间模型获取骨骼数据。
1.3.2 骨骼对象模型
Kinect For Windows SDK中,骨骼追踪有4个重要对象 ,它们是SkeletonStream、SkeletonFrame、Skeleton 和Joint。骨骼对象模型如图4所示。
图4 骨骼对象模型
下面针对骨骼对象模型中的对象作简要说明。
(1)SkeletonStream对象。SkeletonStream通过注册SkeletonFrameReady事件或AllFramesReady事件的方式获取骨骼帧数据,即通过事件模型获取数据。同时也可调用OpenNextFrame方法,通过轮询模型获取数据。
(2)SkeletonFrame对象。该对象通过 SkeletonStream产生,使用时间模型从事件的参数中调用OpenSkeleton-Frame。
对于所有获取的骨骼数据至少应包含3类信息:①相关骨骼跟踪状态。骨骼跟踪状态可分为被动模式和主动模式。被动模式仅包括位置数据,主动模式包括完整的骨骼数据,即20个关节点的空间位置信息;②唯一的骨骼跟踪 ID,用于分配给视野中的用户,也称为深度数据中的ID;③用户质心位置,该值仅在被动模式下可用。
(4)Joint对象。Joint用来定义追踪关节点数据,图4描述了可追踪的所有关节点,每个关节点都有JointTrackingState(关节点的跟踪状态及方式)、JointType(关节点类型)和Position(关节点位置)3个属性。
劳动供给的“零工化”本质上是依托资源、技能乃至兴趣爱好并利用碎片化时间的供给模式[5]。劳动供给的“零工化”同时满足了供给方和需求方的利益:对于供给方而言,劳动者一方面可以根据自己的资源、技能乃至兴趣爱好提供劳动服务而不是依托于企业命令提供劳动,而且还可以自由地管理劳动时间和劳动地点,从而提高了自身满足感和工作效率;对于需求方,如果为了满足某些需求特别是碎片化、个性化、即时性的需求而雇佣全职工人提供服务,就需要承担的长期工资以及福利支出,这往往得不偿失,而使用“零工”一方面不需要签订长期用工合同,能够降低成本,另一方面可以根据需求订制个性化服务,从而更加精确的满足自身的需求。
2 系统分析与设计
2.1 系统分析
系统采用WPF相关技术,结合Kinect的骨骼绑定,重点是虚拟放风筝系统中玩家的姿势识别。系统UI设计包含登录页面,场景页面、风筝页面和游戏页面,这些页面采用WPF动画实现,系统功能如图5所示。
图5 系统功能结构
在WPF二维坐标系中,左上角是坐标原点,向右为X轴正方向,向下为Y轴正方向,WPF默认二维坐标系如图1所示。
2.2 姿势识别
玩家姿势设计从3个关键动作模拟放飞风筝的真实体验。图6给出了系统用到的3种姿势:①左手高举过头,风筝待飞,姿势如图6(a)所示;②右手高举过肩,风筝起飞,振臂,风筝飞高、飞远。振臂姿势如图6(b)中的箭头所示;③双手在身前交叉转动,风筝飞低,收线,风筝落地,姿势如图6(c)所示。
图6 系统3种姿势
2.3 风筝动画
风筝放飞场景使用WPF动画进行绘图。通过动画可以创建真实的动态用户界面,实现风筝的待飞、起飞、飞高、飞远和收线画面。
2.3.1 WPF动画
WPF动画与传统动画相比实现方式更简洁,可以与XAML无缝集成,运行起来比传统动画更流畅。这是因为传统动画在UI线程上需要修改UI控件的属性(按钮宽度),因此DispatcherTimer操作与其它操作一样,需要放置到Dispatcher队列中,但它并不能保证恰好在该时间间隔内。从某种意义上讲,它不适合动画这种间隔很短的计时。
动画流畅性取决于每秒更新的帧数,也就是常说的帧率。人眼睛上限是70帧,而传统动画代码是每秒20帧的帧率,所以精度不够高、帧率受限制。而WPF动画是根据计算机性能和当前进程的繁忙程度尽可能增大帧率,WPF的动画远大于20帧,因此要流畅很多。
2.3.2 路径动画
WPF包含了线性插值动画、关键帧动画和路径动画3种类型,这3种动画都位于System.Windows.Media.Animation命名空间里,本系统使用最多的是路径动画。
前茬作物为夏大豆的旱地或水田,不积水,具备灌排水条件,地块较平整,交通便利,适宜机械化作业。目标产量:210公斤/亩。
有学者对形成EKC机理的收入效应和结构效应提出了质疑。从收入效应看,当环境资源的消费不具有排他性时,人们很难有意愿以可持续发展的方式使用环境资源,此时对环境资源消费需求的增加,必定会导致生态环境质量的恶化。从结构效应看,产业结构的改变只是影响经济的产出结构,消费结构如果没有随之改变,资源密集型产品(包括环境污染密集型产品)的需求只有通过进口来满足,也就是说,资源密集型产业只是在国际间转移,本国生态环境压力的下降实际上是以他国生态环境压力的上升为代价的,[16]因此,用结构效应解释EKC难于有说服力。
图7 蝴蝶风筝起飞路径动画页面
路径动画表现方式是修改数值使其符合PathGeometry对象描述的形状,并且让元素沿着路径移动。虽然可通过控制动画旋转和偏移实现对象的移动,但路径动画更专业,实现更加简洁明了。WPF中有3种路径动画类,其中使用最多的是MatrixAnimationUsingPath路径动画,它用来控制对象的MatrixTransform。本系统起飞动画如图7所示。
3 测试
本系统对Kinect硬件有依赖性,故需对系统进行单元测试和集成测试。在单元测试中选取风筝动画与骨骼追踪测试,风筝动画测试用例如表1所示。
表1 风筝动画测试用例
表1中,3个输入函数是 StarAnimate、HighFarAnimate和FlyDownAnimate。3个函数的功能分别是起飞、飞高飞远和收线。测试结果与期望结果完全吻合,功能实现正常。
利用Kinect骨骼绑定,对准确标定人体的20个关键点位置进行追踪并进行姿势识别,测试结果与预期一致。表2是集成测试用例。
水利行业能力不断夯实。与农牧厅、林业厅共同组建了74个乡镇农牧综合服务中心,每个乡镇农牧服务落实2~3个水利编制,填补了西藏长期以来没有乡镇水管机构和人员的空白。建成130处水文水位站、8处水情信息中心站、599处雨量站、13处水质分中心和水质站、9处水文巡测基地和应急机动测验队以及90条中小河流预警预报系统。圆满完成水利普查任务。
表2 集成测试用例
集成测试选择春天场景下的蝴蝶风筝,如图8、图9所示。通过左手高举过头手势,风筝处于待飞状态,见图9(a);右手过肩,风筝起飞,见图9(b),与图7页面相一致。
图8 风筝场景
图9 风筝待飞、起飞
振臂实现风筝高飞,如图10(a)所示;双手胸前交叉,收线,风筝落地如图10(b)所示。
图10 风筝高飞、收线
4 结语
本文将Kinect与WPF动画技术相结合,让用户通过手臂动作在虚拟环境中放飞风筝,单元测试和集成测试表明设计达到预期效果。Kinect是一种更自然的人机交互方式,用户在虚拟环境下放飞风筝,不受恶劣天气影响,提高了Kinect体感交互产品的用户体验,可享受放风筝的乐趣。把Kinect作为输入设备用于体感游戏开发具有一定的推广价值。
限幅机构是一种安装在钻具轴向中间位置的定点解锁外部支撑装置[17]。如图3所示,限幅机构在钻取采样过程中的动作时序主要包括:1)飞行工作阶段钻杆限幅;2)浅层钻进阶段钻杆扶正导向;3)解锁触发;4)深层钻进阶段避让钻机;5)抵达预定钻进深度。
参考文献:
[1] 陆诗晴.马来西亚的风筝文化[J].世界文化,2017(2):61-63.
[2] 于泽升,崔文化,史添玮.基于 Kinect手势识别的应用与研究[J].计算机科学,2016,43(11):568-571.
[3] 刘小建,张元.基于多特征提取和SVM分类的手势识别[J].计算机工程和设计,2017,38(4):953-958.
[4] 田元,王学璠,王志锋,等.基于 Kinect的实时手势识别方法[J].计算机工程与设计,2018,39(6):1721-1726.
[5] 邓瑾雯.Kinect人物和姿势识别技术在智能家居系统中的应用研究[D].南宁:广西大学,2018.
[6] 钱锟.手语识别系统设计[D].呼和浩特:内蒙古大学,2018.
[7] 张冕,黄颖,梅海艺,等.基于Kinect的配电作业机器人智能人机交互方法[J].山东大学学报,2018,48(5):103-108.
[8] 雷程,孙立宁,陈国栋.基于Kinect的全向移动平台视觉伺服控制研究[J].机械与电子,2018,36(8):61-65.
[9] 王洪源,刘佳宁,陈鹏艳,等.基于Kinect的模拟训练人员高浸润定位与数据接口[J].科技创新导报,2018(16):136-137.
[10] 万燕,陈林下.基于Kinect的虚拟试衣相关技术的研究[J].智能计算机与应用,2018,8(4):63-68.
[11] 徐春凤,王蒙蒙,翟宏宇,等.基于 Kinect深度信息的指尖检测[J].长春理工大学学报:自然科学版,2017,40(6):115-118.
[12] 杨琼楠,张苗苗,杨聪锟,等.基于Kinect手势识别的智能小车控制系统设计[J].国外电子测量技术,2018,37(9):85-89.
[13] 韩紫婷,崔志玲.基于Kinect的三维数据修复和融合算法[J].电子世界,2018(9):19-21.
[14] 刘慧,潘成凯,沈跃,等.基于 SICK和 Kinect的植株点云超限补偿信息融合[J].农业机械学报,2018,49(10):284-291.
[15] 吴剑锋,马梦鑫,蒋濛婷,等.基于Kinect的坐姿意图判断及其应用研究[J].计算机应用与软件,2018,35(10)194-199.
[16] JOHN DARBY,MARIA B.SANCHEZ,PENELOPE B,et al.An evaluation of 3d head pose estimation using the microsoft kinect v2[J].Gait&Posture,2016(2):1841-1850.
[17] 刘晋钢,熊风光,况立群.WPF编程基础[M].北京:清华大学出版社,2018.
[18] 蒲兴成.基于改进 Hu矩算法的 Kinect手势识别[J].计算机工程,2016,42(7):165-172.
[19] 范美常.基于骨骼跟踪的虚拟装配技术[D].秦皇岛:燕山大学,2016.
[20] 刘晋钢,刘卫斌,刘晋霞.Kinect与Unity3D数据整合技术在体感游戏中的应用研究[J].电脑开发与应用,2014,27(11):7-11.
Design of Virtual Kite Flying System Based on Kinect
LIU Jin-gang1,HAN Xie2,HOU Huan-huan1,ZHOU Xiao-qin1
(1.Computer Engineering Department,Taiyuan Institute of Technology,Taiyuan 030008,China;2.Data Science and Technology,North University of China,Taiyuan 030051,China)
Abstract: In order to achieve the effect of kite flying in virtual environment,Kinect is used as a data input device in the system.Developers simulate gestures of flying a kite by means of arm lifting,arm swing and arms crossing,based on bone tracking technology of Kinect.The system realizes the design of the kite scene and the animation design of the kite movement.Users fly kites in the virtual environment by arm movements.Unit test and integrated test show it is reasonable to use bone data tracking technology and combine user defined gestures.WPF animation of scene and kite movement break through the restriction of traditional animation,which makes users experience the fun of flying kites in virtual scene.
Key Words: Kinect;virtual kite flying;bone binding;WPF
DOI: 10.11907/rjdk.182715
开放科学(资源服务)标识码(OSID):
中图分类号: TP319
文献标识码: A
文章编号: 1672-7800(2019)007-0100-04
收稿日期: 2018-11-13
基金项目: 国家自然科学基金项目(61672473);山西省回国留学人员科研项目(2015-079)
作者简介: 刘晋钢(1975-),女,太原工业学院计算机工程系副教授,研究方向为人机交互;韩燮(1964-),女,博士,中北大学大数据学院教授、博士生导师,研究方向为虚拟现实、计算机仿真。
(责任编辑:杜能钢)
标签:体感设备论文; 虚拟放风筝论文; 骨骼跟踪论文; WPF论文; 太原工业学院计算机工程系论文; 中北大学大数据学院论文;