版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要PAGEIVPAGE15基于体感技术的碰撞球游戏设计与开发摘要体感技术是一项利用人体肢体动作识别外界感应的一门技术,它可以让人们可以很直接地用自身的肢体动作,与周边的设备或某种环境互动,而且不需要使用任何复杂的其他外在设备,便可让人们身临其境地与内容进行互相“交流”。此次毕业课程设计是利用微软公司的Kinect体感设备作为捕捉人体动作识别的工具来获取到人体骨骼模型,然后通过VisualStudio开发工具,来实现设计出一个能够满足人们简单娱乐的小球碰撞游戏。该系统利用Kinect传感器红外摄像头侦测、捕捉用户肢体及骨骼动作,将采集到的红外线图像和Kinect的原始参数进行一系列复杂的计算,从而获得人体三维深度流数据信息,以此来创建成相关的骨骼模型,再将整合形成的原始模型转换成虚拟角色,当用户发出挥手、抬脚、说话等动作时,该虚拟角色通过识别该人体骨骼模型的关键部位进行动作触发,使小球做出相应的动作。毕业课程应用Kinect设备,其具备当今最先进的人机交互技术、人体运动分析技术和骨骼提取技术,是对相关技术的一次大胆尝试。其中,人机交互技术在许多领域得到了广泛应用。人体运动分析技术也有了可观的发展,实质上能够捕捉人体的动作是实现人体运动分析的前提。骨骼提取作为捕捉人体动作的重要一环,也日益得到学术界的关注,骨架是表现图像拓扑的一个重要特征,是表示物体形状的一种有效形式,其信息量少,但又能较完整描述物体的几何性质,因此在图像检索、模式识别和虚拟运动等领域得到了广泛的应用。市场上涉及到的行业有虚拟试衣,体感游戏,购物商城,虚拟会议等等。但体感技术提取人体信息不够灵敏,技术还有待提高。关键词:体感,Kinect,小球碰撞,虚拟角色,骨骼模型
TheTechnologyOfSomatosensoryBasedOnCollisionBallGameDesignAndDevelopmentABSTRACTMotion-sensingtechnologyisauseofhumanbodymovementrecognitionoutsidetheinductionofaforeigntechnology,asthenameimplies,itcanletpeoplecandirectlyusetheirbodymovements,interactionswiththesurroundingequipmentorsomekindofenvironment,andthere'snoneedtouseanyotherouterequipmentcomplex,canmakepeoplemorevividlyandcontentto"communicate"witheachother.ToimproveefficiencyThisdesignistouseMicrosoft'sdevicebodyfeelingequipmentascapturehumanmotionrecognitiontooltogettothehumanbodyskeletonmodel,thenthroughVisualStudiodevelopmenttoolstodesignacansatisfypeoplesimpleballcollisionofentertainmentgames.ThesystemUSESsensorsinfraredcameradevicedetection,capturinguserbodyandbonemoves,thecollectedinfraredimageandtoaccesstheoriginalparameterscalculationofacomplexsetof3ddepthstreamdatainformationforthehumanbody,inordertocreatearelevantbonemodel,andthenintegratedformoftheoriginalmodelistransformedintoavirtualcharacter,whentheusersenttowave,liftthefoot,theactionsuchasspeaking,thevirtualcharacterbyidentifyingthekeypartsofthehumanbodyskeletonmodelforactiontriggers,maketheballmakesthecorrespondingaction.Asthefieldofpatternrecognitionandartificialintelligencetechnologylevelunceasingenhancement,makestheman-machineinteractiontechniquehasbeenwidelyappliedinmanyfields.Atthesametime,inrecentyears,humanmotionanalysistechnologyhasconsiderabledevelopment,inessence,tocapturetheactionofthehumanbodyisthepremisetorealizehumanmovementanalysis.Skeletonextraction,asanimportantpartofthehumanbodymovements,isbecomingmoreandmoreattentionbytheacademiccircle,andalsoanimportantfeatureskeletontopologyistokeeptheimage,isaneffectiveformofsaidobjectshape,thelesstheamountofinformation,butalsocancompletedescriptiongeometricpropertiesoftheobject,soinimageretrieval,patternrecognitionandthevirtualmovement,andotherfieldshasbeenwidelyused.Butmotion-sensingtechnologytoextracthumanbodyinformationsensitiveenoughtotechnologyneedstobeimproved.KEYWORDS:Motion-sensing,Kinect,Smallballcollision,Virtualcharacter,Skeletonmodel前言目录15123前言 130593第1章绪论 3170641.1引言 3309261.1.1国内外研究现状 412101.1.2本文的主要内容 5139021.1.3章节安排 616441第2章Kinect传感器的结构及工作原理 7108662.1Kinect硬件部分 7266412.1.1Kinect基础介绍 7158132.1.2系统级芯片 8180842.1.3红外投影机 9115252.1.4彩色摄像头和红外摄像头 9230602.1.5麦克风阵列 9186232.2Kinect传感器的软件系统 1061202.2.1Kinect的核心NUIAPI 1189282.2.2KinectAudioDMO 12314402.2.3WindowsSpeechSDK 1286802.3深度图像的获取技术 1350132.4Kinect获取深度图的原理 1428321第3章基于深度图像的骨架提取 16241823.1检测方法 1662703.1.1传统的检测方法 16267533.1.2深度摄像头实现目标检测与分割 17281813.1.3基于最优阈值的方法 18278223.2骨骼提取 20128853.2.1人体骨架空间 2037733.2.2关节定位 2123644第四章小球碰撞游戏开发 23189894.1建立游戏模块 23161594.2基于C#编程 2476234.2.1定义小球模块 2480074.2.2定义游戏模式 25125224.2.3碰撞类型 26212494.2.4界面显示 2810294.2.5语音识别模块 29226054.3游戏体验 3524042第5章总结与展望 37236505.1论文主要工作 37120315.2展望 376474结论 393961谢辞 4015212参考文献 4117152附录 43前言随着当今社会的高速发展,人们的工作效率也越来越高,生活节奏也逐步加快,这些都与计算机的迅猛发展密不可分。现今社会,基本有人类的地方就有计算机,也没有哪个行业可以真正与计算机脱离开来。提高人类计算机的使用效率,改变人类使用计算机的时间是现实亟待解决的问题既是节约时间,又可以提高工作效率,还可以提高人们娱乐和交流方式。人机交互是研究人与计算机及其相互作用的技术,其研究目的在于利用所有可能的信息通道进行人-机交流,提高交互的自然性和高效性。目前人与计算机交互的方式往往局限于鼠标与键盘,正是由于这种传输方式的单一性阻碍了人机交互的进一步发展,人机交互中输入输出效率之间的差距变的越来越大。随着科学技术的高速发展,更高层次的人机交互理念对交互方式提出了巨大的需求,众多科研人员开始对新的交互技术的多通道界面展开研究,目前的研究内容主要是集中在手势输入、语音识别及感觉反馈等方面。而Kinect体感技术的出现促进人机交互的发展,具有重要意义,Kinect作为新一代的体感设备,可以依靠实时捕捉使用者的动作、面部识别及语音识别就可以达到输入功能。这一特性很好地填补了现有人机交互技术的缺陷,并且促使Kinect体感技术成为人机交互领域中的一个研究热点。在于人们可以很直接地使用肢体动作,与周边的装置或环境互动,而无需使用任何复杂的控制设备,便可让人们身历其境地与内容做互动。可以说这项技术是目前人机交互技术中最前沿、最热的领域之一,它将开启人机交互的新时代。自微软Kinect红外深度感应器发布以来,国内外对其技术和应用上的研究都取得了比较多且富有创造性的成果。Kinect感应器最初是作为微软XBOX游戏机的体感外设发布的,后经热心开发者建立起OpenNI的软件框架,Kinect在计算机方面的研究和应用才逐步获得了较大的影响力。现阶段微软已经为此款深度感应器发布了官方的驱动程序及SDK,更进一步推动了体感技术的开发应用。Kinect在国内外的研究动态,在人体骨架识别和建模方面,利用SDK,华中科技大学的WeiShen和微软公司的KeDeng等人提出了基于模型的人体骨架修正和标记方法,较好地解决了获取人体动作视频中的遮挡问题。此外,微软剑桥研究院的ShahramIzadi等人则利用深度摄像头开发了一套实时三维重建和交互系统,系统通过摄像头对所见物体进行三维重建,并实现了操作者在虚拟空间中的实时交互。可以说传感器方面的革新使人体骨架建模有了更优的解决方案,为基于人体骨架识别和运动跟踪方面的应用开拓了广阔的前景。另一方面我们也认识到Kinect技术目前应用不是很广泛,其深度探测技术还不够成熟,其每秒只能拍摄30帧,这样的动作捕捉不但不能准确分辨,也会造成很大的延时。只能适合缓慢的动作,这使得其应用范围受到一定局限,难以实现一些需要快速做出相关肢体动作来控制设备内容的实时运作。所以未来需要对其精确度提升有很大的要求,最近也获知Kinect2已经在国外发售,有望能实现自然语音识别、更准确的面部识别和更详细的人体运动捕捉能力。本次毕业课题是以Kinect体感技术来实现一个碰撞球的游戏系统,硬件平台就是微软的XBOX360。软件开发工具MicrosoftVisualStudio进行系统开发。开发所用语言为C#。通过Kinect红外摄像头设采集用户动作,将采集到的三维深度流数据信息通过编程算法和图像处理,在Kinect平台上创建成相关的骨骼模型,再将整合成的原始模型转换成虚拟角色,当用户发出动作时,该虚拟角色也将相应的做出与之同步的动作触发,从而控制场景中的小球运动和碰撞。这样可以根据游戏体验增强家人之间的互动关系,促进孩子与家长之间的沟通协作性。在整个设计过程中要针对小球碰撞游戏的情况解决以下一些问题。如何能够将Kinect采集到的深度数据转化为相应的骨骼模型来操纵小球运动。并通过相关算法提高获取到的骨骼模型的识别精度,并实时跟踪用户的肢体动作,减少动作的延时。提高玩家体验游戏效果的真实性。第1章绪论1.1引言人机交互从只有一个维度的绿色字符控制台界面(CLI),到有鼠标操作两个维度的图形用户界面(GUI),再到现在的多点触摸(Multi-Touch)在手机、平板电脑等移动终端上得到了广泛的应用,无疑又引爆了消费者对自然交互的渴望,但交互体验还停留在二维平面的阶段,同时随着摄像头、GPS、重力感应等各类传感器的普及,虚拟现实和增强现实大放异彩,在虚拟与现实世界重叠的同时,又有了眼球跟踪、语音识别、人脸识别等让技术更好理解人类的手段。Kinect正是在这样的背景中诞生的,使人机交互技术从二维的世界扩展到三维的空间,而且是进入到了非接触的交互体验之中。Kinect是微软于2010年发布的一种三维体感摄像机,它具有骨骼跟踪、人脸识别、麦克风输入、语音识别等功能。因此,可以很好的利用Kinect进行人机交互,而人体运动分析更是人机交互中目前研究的重点和热点方向。人体运动分析有着广阔的应用前景,主要包括以下几个方面的应用[1]:(1)智能监控系统,例如在一些智能监控场合,通过对人脸识别、步态分析决定是否容许其进入该区域。比如说在银行、机场等安全要求比较高的地区,可以通过监控,发现可疑人员并发出报警。(2)虚拟现实,例如可以对用户在真实物理空间中的姿态进行有效的分析理解。(3)智能用户接口,计算机可以通过计算机视觉信息,实现人机交互。比如机器人通过摄像头捕捉人体运动信息并加以理解并作出合适的反应。(4)运动分析,例如在舞蹈,体操运动的训练中,通过分析关键节点的运动来指导纠正练习者的动作等。(5)基于模型的视频编码,例如通过建立人脸、人体的参数化模型,达到较高的压缩效果,对人体运动分析的研究具有重要意义。1.1.1国内外研究现状日常生活中的智能监控系统、体育运动竞技研究、动画制作等许多领域都需要对人体运动状态进行分析。要实现人体运动的分析,就必须对人体运动的状态进行捕获,通过采集得到的数据对人体关节点进行定位获得准确的运动参数。目前捕获人体运动的方法有很多,但是最直接的方法,还是通过摄像头进行捕获。因为通过摄像头获取的图像和视频不仅包含了许多运动信息,而且摄像头不会对人的运动产生任何约束,因此,人体运动方面的研究,几乎都是使用摄像头作为输入信息进行研究的。人体运动捕捉的研究开始于1980年,由于它的广泛应用,国内外的学者对此进行了大量研究,提出了许多运动捕捉和姿态估计的方法。基于视频的人体运动分析主要是从摄像机拍摄的图像序列中分析每一帧的人体运动状态,对人的行为进行识别。通过不同的运动分析方法可以从图像中提取出不同的信息。北京理工大学徐枫等人使用无标记运动捕捉的方法获得任意时刻人体对应的骨骼和三维模型[2]。T.Drummond等人通过检测运动物体的边缘信息,可以快速恢复图像的三维模型,具有较高的实时性[3]。美国科学家Moon等人提出了采用形状编码的方法对外轮廓进行描述,利用外轮廓信息来进行运动捕捉[4]。武汉理工大学教授李豪杰等人研究出了自顶向下和自底向上的运动捕捉方法[5],自顶向下的捕捉方法又称为基于模型的方法,该方法根据已知的条件,将人体模型与图像进行匹配,建立一些约束,以获得人体姿态参数。该方法主要包括:(1)微分法建立一个目标函数,通过雅克比矩阵建立模型微分和图像坐标的联系[6],本方法收敛速度较快,但不适合跟踪大幅度的运动。(2)动力学法在预测时与图像某些相关数据间生成一种类似于弹簧弹力的力,根据这种类似于弹簧弹力的力修正模型参数,直到匹配成功[7]。本方法可以跟踪较大幅度的运动,但却不能保证其收敛性。(3)Kalman滤波利用目标的动态信息首先对前一时刻的状态进行预测,然后利用前一时刻的估计值和现在时刻的观测值来更新对状态变量的估计,求出现在时刻的估计值[9],本方法可以描述跟踪过程中的某些不确定信息,鲁棒性较高,但本方法要求系统状态和噪声是单峰分布,很难满足现实要求。自底向上的捕捉方法又称为非模型的方法,该方法通过对底层特征的跟踪,对图像进行处理分析,从中提取感兴趣的特征,将它们与待识别目标的特征相比较,选取最相似的部分,以此确定待识别目标在图像中的位置,获取人体姿态信息。该方法主要包括:(1)特征跟踪法,首先在首帧中标注出人体的关键点位置,然后通过后续帧中通过跟踪建立起帧与帧之间的关系,最后获取不同的时刻人体的姿态参数[10]。(2)标记法是作为指导对人体的轮廓进行标记,从而获得姿态信息[11]。(3)模板匹配法是以边缘为特征,通过形状关联匹配从模板库中找到最相近的样例,通过这个样例获得输入图像的二维关节点位置,然后使用Taylor[12]级数法恢复出三维的人体姿态。姿态估计主要可以分为两种:一种是标记出图像的每个像素点所在的人体部位,通过图像的全局特征进行匹配分析,然后经过聚合可以得到人体各关节点的位置,进而实现运动捕捉。东北师大副教授林鹏等人通过构建深度图样本库,提取训练样本中的局域梯度特征,利用随机森林学习得到分类器,并对图像进行单点分类,计算人体各关节点[13],他们利用AdaBoost多示例学习算法训练部位检测器,然后利用各部位检测器对样本测试,从而将样本转化为特征向量,再用SVM方法对这些向量进行学习,得到最终的部位组合分类器[14]。1.1.2本文的主要内容本文主要分析了骨骼定位研究的背景和意义,介绍了国内外相关的研究工作,包括运动捕捉和人体姿态估计的定位方法,分析了它们的优缺点,然后选择了下面的研究方法:使用微软的深度摄像头Kinect提取深度图像作为输入信息,然后,利用最优阈值法实现人体与背景的分割,通过算法进行骨架提取,在骨架上确定初始的关节点,通过人体的固有特性来最终确定实际关节点的位置。1.1.3章节安排本文从理论和实验两个方面,对基于Kinect的骨骼定位中的深度图像背景分割、骨架提取、骨骼定位进行了研究。具体章节安排如下:第一章提出了本课题研究的背景和意义,对国内外有关人体骨骼定位的方法进行了总结和归纳。第二章介绍了Kinect的软硬件结构、获取深度图像的基本原理、深度图像的校正以及Kinect的机器学习技术。第三章阐述了基于深度图像的骨架提取,提出了一种基于最优阈值的图像分割方法,利用该方法实现了人体与背景的分割;使用数学形态学的方法对人体的剪影图进行了去噪,实现了人体骨架的提取。第四章主要进行研究小球碰撞游戏的开发,以及相应流程图,基于微软的C#进行编程,并达到了预期目标。第五章对全文进行了总结和展望,本次课题成果存在的问题,并探讨了未来的研究方向。第1章标题第2章Kinect传感器的结构及工作原理2.1Kinect硬件部分2.1.1Kinect基础介绍Kinect是微软在2009年6月2日的E3大展上。正式公布的XBOX360体感周边外设。Kinect实物图如图2-1所示:Kinect彻底颠覆了游戏的单一操作。使人机互动的理念更加彻底的展现出来。不需要使用任何控制器,它依靠相机捕捉三维空间中玩家的运动。微软指出它会让系统更加简易操作来吸引大众。可以说人们利用它能够直接地使用肢体动作,与周边的装置或环境互动,而无需使用任何复杂的控制设备,便可让其身历其境地与内容做互动。Kinect是一种3D体感摄影机(开发代号“ProjectNatal”),同时导入了即时动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能玩家可以通过这项技术在游戏中开车、与其他玩家互动、通过互联网与其他Xbox玩家分享图片和信息等。图2-1Kinect设备外观Kinect传感器主要由以下部件组成:不同的芯片;三块主板;外壳、底座;用于仰角控制的传动马达电动机;USB线;散热风扇;红外投影机;彩色摄像头;红外摄像头;四个麦克风阵列等,拆解后的Kinect如图2-2所示:图2-2拆解后的Kinect外壳、底座及4个不同类型的螺钉。MovingTouch传动马达电动机(用于仰角控制)散热风扇彩色摄像头红外摄像头红外投影机麦克风阵列3部分主板14种关键芯片2.1.2系统级芯片Kinect使用的是PrimeSense公司生产的PS1080系统级芯片。PS1080芯片拥有很强的并行计算能力,可控制近红外光源,然后进行图像编码并主动投射近红外光谱。同时,通过一个标准的CMOS图像传感器接收投影的红外光谱并且将编码后的反射斑点图像传输给PS1080芯片,PS1080芯片对此进行处理并生成深度图像。PS1080芯片是一个多感应系统,能提供同步深度图像、彩色图像和音频流,它通USB2.0物理层协议将所有数据传送到主机。另外,PS1080芯片适用于所有深度获取算法均在PS1080芯片上运行的各种主机CPU,主机只需要运行最低限度的USB通信层。通过这种设计,即便是计算能力有限的主机设备也具备获取深度图像的能力。2.1.3红外投影机红外投影机是位于Kinect最左边的镜头,它与最右侧的红外摄像头配合使用。PS1080芯片对红外光源进行控制,以便通过红外光编码影像放映场景。红外投影机主动投射近红外光谱,照射到粗糙物体、或者是通过一个类似于毛玻璃的透明散射体而导致光谱发生扭曲,然后形成无规则分布的反射斑点,进而能被红外摄像头读取。它的光源是一类普通激光光源,该光波波长为830nm,可以持续输出,符合IEC60825-1标准中的一级安全要求,对人体没有害。2.1.4彩色摄像头和红外摄像头Kinect是通过彩色摄像头和红外摄像头来获取图像的,彩色摄像头用来获取RGB图像,红外摄像头用来获取深度图像,两者的分辨率都为640×480。红外摄像头是一个标准的CMOS图像传感器,负责接收发出的红外光,并将红外光编码图像传给PS1080芯片,PS1080芯片负责处理红外图像,然后逐帧生成准确的场景深度图像。为了生成更准确的传感器信息,PS1080芯片会执行“PrimeSense”注册过程。注册就是将RGB图像和深度图像进行对应,产生像素相互对应的图像,即RGB图像中的每个像素分别与深度图像中的一个像素对应。这能让应用程序准确了解收到的RGB图像中每个像素的深度信息。所有传感器信息(深度图像、RGB图像和音频)通过一个USB2.0接口传送给主机,且时间准确。2.1.5麦克风阵列由于Kinect的三个镜头的分布不对称,因此Kinect麦克风阵列的分布也是不对称的,这样才能保持质量分布的均衡,麦克风阵列布局如图2-3所示:图2-3Kinect麦克风阵列布局Kinect的音频系统采用了四元线性麦克风阵列技术。麦克风阵列中含有四个相互独立的小型麦克风,这四个小型麦克风呈线性排列,每个麦克风之间相隔数厘米,这些麦克风可以捕捉多声道立体声,然后通过数字信号处理等组件,根据麦克风阵列接听声音的时间差来判断声源方向。从元件上看,除了Kinect的四个麦克风阵列以外,还配置了WolfsonMicroelectronicsWM8737G芯片用于进行本地的音频信号处理。与一般的单麦克风数据相比,Kinect采用的阵列技术包含有效的噪声消除和回波抑制(AcousticEchoCancellation,AEC)算法,同时采用波束成形(Beamforming)技术,通过每个独立设备的响应时间确定音源位置,并尽可能避免环境噪声的影响。2.2Kinect传感器的软件系统Kinect传感器提供原始数据流给SDK,这些数据流包括深度数据流、彩色图像数据流和音频数据流。通过KinectSDK可以直接获取这些原始传感器数据流,并在此基础上进行较为底层的应用开发。此外,KinectSDK封装了骨骼跟踪等高层NUIAPI供应用程序调用,从而进一步开发动作识别、体感操作和智能监控等应用。应用层API包括三大组件,分别是:(1)NUIAPI:SDK的核心,用来处理彩色图像流、深度图像数据、骨骼跟踪和控制/管理Kinect设备等。(2)KinectAudioDMO:提供波束成形和音源定位功能。(3)WindowsSpeechSDK:提供音频、语音、多媒体API集以及微软语音识别功能。2.2.1Kinect的核心NUIAPI[15]NUI(网络用户标识)API是Kinect的核心API。它支持“流处理”和“设备管理”的功能,主要包括:(1)Kinect传感器与计算机的连接、访问和关闭。(2)访问从Kinect传感器上传输的图像和深度数据流。(3)通过对图像和深度数据的处理来进行骨骼跟踪。KinectforWindowsSDK的驱动程序最多支持4个Kinect设备连接在同一台计算机上。NUIAPI具有设备枚举的方法,可以判断已连接设备的数量。应用程序可以通过枚举来获得各个Kinect设备的名称,单独使用或设置其属性。初始化NUIAPI和使用Kinect传感器的步骤如下:(1)获得Kinect实例,代码如下:KinectSensorsensor=(fromsensorToCheckinKinectSensor.KinectSensorswheresensorToCheck.Status==KinectStatus.ConnectedselectsensorToCheck).FirstOrDefault();以上为LINQ查询表达式,可以使用LINQ的foreach语法进行当前活动,连接Kinect传感器进行遍历。代码如下:foreach(KinectSensorkinectinKinectSensor.KinectSensors){if(kinect.Status==KinectStatus.Connected){kinectSenosr=kinect;break;}}(2)调用KinectSensor.Start方法初始化并启动Kinect传感器。(3)注册相关事件,如视频流或深度数据到来的事件、骨骼跟踪事件,并基于这些事件调用SDK提供的相关API进行处理,代码如下:KinectSensor.ColorFrameReadyKinectSensor.DepthFrameReadyKinectSensor.SkeletonFrameReadyKinectSensor.AllFrameReady如果同时使用多台Kinect,开发者可以指定其中一个作为当前骨骼跟踪的设备。(4)调用KinectSensor.Stop方法关闭Kinect传感器。如果应用程序初始化并启动Kinect传感器,在未正常关闭前,如果Kinect传感器被意外拔出,则该事件可以被捕捉。2.2.2KinectAudioDMOKinect麦克风阵列基于语音识别的类库之上,主要API包括DMO(DirectXMediaObject,DirectX多媒体对象)和MSAPI语音识别(MicrosoftSpeechRecognitionAPI)。KinectSDK中的AudioAPI对DMO进行了封装,并针对Kinect传感器的麦克风阵列进行了优化。KinectSDK中包含一个托管的音频接口KinectAudioDMOAPI,通过该接口可初始化音频、采集音频和结束音频流,还包含了声源定位的相关API,并且支持声源波束方向变化的事件。KinectAudioAPI主要是通过KinectAudioSource类来完成,包括从麦克风阵列中获取原始音频流或加工过的音频流。应用程序使用AudioAPI的作用:(1)高质量的音频采集和音频控制。KinectAudioAPI内嵌一系列的算法来确保接收音频品质,包括降噪、自动增益控制和回声消除等处理。(2)波束成形和程序初始化,波束定位。KinectAudioDMO用内置的算法来控制束和提供应用程序的原始方向。BeamAngleMode类对底层的DMO系统模式和麦克风阵列属性进行了抽象封装。通常该属性设置为Adaptive,由KinectSDK来控制波束成形。2.2.3WindowsSpeechSDKKinectSDK的安装同时也包括语音识别的组件部分,包括MicrosoftSpeechAPI、SpeechPlatformSDK和KinectforWindowsRuntimeLanguagePack(运行语言包)。KinectforWindows运行语言包是一系列的语言模型,用于KinectSDK和语音识别API组件之间的互操作和语音指令识别的优化。语音识别是自然人机交互很重要的一个方面。MicrosoftSpeechSDK作为KinectSDK的组件被安装,包含一个自定义的声学模型。简单来说,语音识别分为两个层次:对特定语音命令识别和自然语音识别。KinectSDK目前不包含自然语音识别的部分,属于特定语音命令识别的范畴。KinectSDK利用Microsoft.SpeechAPI的最新声学算法,应用程序可以进行语音识别和语音控制。KinectSDK是基于Microsoft.Speech类库实现语音命令的识别,也可以基于Kinect的麦克风通过System.Speech类库来实现语音命令识别,但由于距离的原因识别效果不好。Microsoft.Speech类库的关键对象是SpeechRecognitionEngine,负责从Kinect传感器获取降噪预处理后的音频数据流,然后分析和解释,从而进一步匹配出最适合的语音命令。2.3深度图像的获取技术[15]目前,用来获取深度图像信息的传感器技术主要包括三种。第一种,激光雷达测距技术。激光雷达测距技术融合了传统的雷达技术和现代的激光技术。由于激光雷达具有亮度高、抗干扰性强、单色性好、体积小等优点,因此已经广泛应用于各个领域。激光雷达测距技术的主要原理是通过激光发射器发出激光,当激光检测到被测物体时会进行反射,然后在发射处接收被测物体的反射光,并计算激光返回所需要的间隔时间,结合光速就可以求出被测物体的距离。其获取深度数据的公式为:其中c为光速,t为间隔时间,R为深度数据。光线飞行时间测距技术发展较早、现在主要有DepthSense,ZCam等产品,其主要优点是速度较快、帧率较大,缺点是容易受背景光的影响。第二种,立体视觉技术[16]。立体视觉技术是基于视差的原理,通过多目摄像头获取多幅RGB图像,经过摄像机标定、图像预处理、立体匹配、深度确定及内插等过程获得物体的深度信息。美国麻省理工学院Marr教授首次提出了比较完善的视觉系统框架。常用的几种立体视觉技术有双像合成法、莫尔条纹法、傅里叶变换轮廓法、位相测量法、主动三角形法、几何光学聚焦法以及飞行时间法。立体视觉技术的优点是系统结构简单、精度较高,缺点主要是算法的复杂度高,实时性较低。第三种,结构光成像技术。结构光成像技术是一种主动式三角测量技术,投射已知的红外模式到场景中,在场景中产生具有可识别编码的条纹,由摄像头读取条纹并由图像传感器获得图像,通过系统化的几何关系,利用三角原理计算从而最终来确定深度信息。根据结构光投射模式的不同,结构光三维视觉测量方法可分为点结构光模式、线结构光模式和面结构光模式。结构光测量技术作为一种快速、高精度、实时性强的三维测量技术,在汽车、航空、模具、医疗等领域均得到了广泛的应用。2.4Kinect获取深度图的原理[17]本文采用的是基于光编码技术(lightcoding)的Kinect传感器。Kinect有发射、捕捉等功能,它的深度摄像头是由一个红外投影机和红外摄像头组合而成的,红外投影机发出的光线覆盖的范围和红外摄像头接收的光线覆盖的范围有重叠的区域,如图2-4所示:图2-4Kinect红外摄像头视角Kinect获取深度信息是利用基于光编码的技术,红外投影机发射一束红外光线,经过散射片后会分成许多束光线,这些光束聚合在一起会形成散射光斑。而红外摄像头可以捕获散射光斑并且与内部存储的参考模式进行比较。参考模式是通过捕获已知距离的散射光斑获得的,并且存储在Kinect内部。当红外摄像头捕获的光斑的真实距离比参考模式小或者大的时候,光斑在红外图像中的位置将会沿着基准线有一定的移动,通过图像的相关性过程可以测量所有光斑的移动范围,因而形成一幅视差图像,然后可以通过视差图像中相应的位移计算出每个像素点的深度距离。第3章REF_Ref168484495\h错误!未找到引用源。洛阳理工学院毕业设计(论文)PAGE33第3章基于深度图像的骨架提取本章内容主要分为两个部分:对深度图进行预处理,实现人体与背景的分割;对人体关节点进行定位,实现骨架提取。3.1检测方法3.1.1传统的检测方法[18]在通过深度图像对骨架进行提取之前,很重要的一步是探测人体在图像中的区域,并实现去除背景等必要的操作。从图像中去探测人体,是一个比较困难的问题,原因在于人体身高、体型、穿着都不一样,就算是外形大致一样,四肢也可以运动,相互遮挡,再加上背景的复杂性,所以难以用常规的图像匹配的方法找出人体。目前使用的方法主要有传统的检测方法和利用深度图实现背景分割法,下面对这两种方法进行简单的介绍。传统的方法中有一种方法是人穿着特殊颜色的衣物,利用光照条件,使得人体区域和背景颜色或灰度上产生较明显的差异。例如孙怡采用了基于模型和非模型的方法进行了腿部动作跟踪,获得图像后,利用阈值法分割法分离出其中的人体区域。这种方法实现起来过程简单,效率高,效果较好,但是对实验环境和实验者的穿着有一定的要求,应用起来有一定的局限性。利用背景静止的特性,是目前进行人体区域分割的主要方法。只要摄像机的位置不变,同时背景环境不发生变化,获取的图像序列中运动的区域就是人体区域,根据这个特性形成的方法主要有帧间差分法、光流法和背景差分法。帧间差分法主要是是通过对视频序列中相邻的两帧或几帧图像对应的像素点作差分运算,运算得到的数值的绝对值如果小于等于某个阈值,则该点为背景点,否则为运动目标的像素点。光流法实际上是通过检测图像像素点的强度随时间的变化进而推测出物体的移动速度及方向,即研究图像灰度在时间上的变化与景象中物体结构及其运动的关系,进而提取出运动区域;背景差分法是采用图像序列中的当前帧和背景参考模型比较来检测运动物体的一种方法。这些方法在提取视频中运动区域均有不错的效果,但同时也存在一些问题。上述方法都是要求背景是静止的,只要背景中有运动物体移动则会出现检测失误。同时,它们是依靠运动特征进行检测的,不能检测某个特定的目标。另外,上述方法都是基于视频序列的检测,对于本文采用的单张深度图像,采用上述传统的检测方法是无法解决的。3.1.2深度摄像头实现目标检测与分割[19]深度摄像机可以测出物体与深度摄像相机之间的距离并体现在灰度图像上,然后根据灰度值的差异得出距离的差异。目前用于测量深度信息的深度摄像头主要分为两类,一类是基于飞行时间(Time-of-flight)原理的摄像头,它通过测量光脉冲之间的传输延迟时间来计算深度信息。例如MesaImagingSwissRanger4000和PMDTechnologiesCamCube2.0,根据它们的测量原理可知需要精度非常高的计时装置,因此价格都很高,同时由于受测量环境的限制导致获取的深度图像在效果上令人不够满意,因此它的相关应用和研究比较少。另一类是基于“光编码”(lightcoding)的技术,“光编码”利用了和人眼识别物远近相似的方法,人眼主要是依靠两个眼睛识别物体的角度不同来判断距离。微软2010年发布的Kinect就是基于“光编码”的原理,Kinect是使用一个散色片,红外光束通过散射片后,整个散射片都向外发射角度随机的红外光,通过红外光束产生的光斑图案不同,来区别距离的远近。Kinect的出现使得深度图像的获取更方便、准确,另外Kinect的价格合理,提供SDK丰富,这使得它在人机交互方面有了很多应用。例如Xbox360体感游戏的流行,虚拟试衣镜的应用,对老年人实行监护等。由于深度图像记录了物体到深度摄像机的距离信息,在实际使用时,只要人体前面没有其他障碍物,就能利用深度信息将人体区域从背景中分割出来。例如K.Lothrop等利用获取的深度信息进行人体与背景的分割,可进行手语的翻译。M.Skubic等人利用Kinect对老人进行监护,通过骨骼跟踪和深度图像的分割获取监护老人的步伐数据,包括步长、步速、走路时间。D.Prattichizzo等人在实验时设定手掌区域与Kinect的距离一定,根据获取的手掌深度信息,利用标准模板匹配算法进行手势识别。但以上方法均存在深度值不连续、噪声点较多等问题。3.1.3基于最优阈值的方法[20]本项目需要在全图中分割人体,由于人体的区域范围较大并且手部有遮挡,这些都可能导致深度值并不连续,噪声点较多,而最优阈值法可以解决这两个问题,所以可以采用基于最优阈值的方法将背景去除。阈值法是一种关于图像分割的常用方法,其基本原理是根据图像的灰度特性来确定一个灰度阈值,并将图像中每个像素的灰度值与所确定的灰度阈值相比较,如果属于同一个部分的像素,则表明该像素的集合就是同一个物体,但是有时候目标区域和背景区域有相互重叠的部分,用一个灰度阈值不能完全将它们分开。因此我们需要找到一个最优阈值Toptimal使目标对象被错误划分的概率最小,而最优阈值法是一种常见的方法。假设有一幅含有高斯噪声的图像,该图像仅包含目标灰度值区域和背景灰度值区域,它的混合概率密度是目标密度函数和背景密度函数之和。则混合概率密度为:(3.1)其中P1表示的是背景区域的先验概率,P2表示的是目标区域灰度值的先验概率,m1表示的是背景区域的平均灰度值,s1表示的是关于平均灰度值m1的方差,m2表示的是目标区域的平均灰度值,s2表示的是关于平均灰度值m2的方差。假设m1<m2,定义一个阈值T使得灰度值小于T的像素分割为背景而使得灰度值大于T的像素分割为目标,则错误的将一个目标像素划分为背景的概率为E1(T):(3.2)错误的将一个背景像素划分为目标像素的概率为E2(T):(3.3)因此,总的概率误差为:(3.4)为了得到使该误差最小的阈值,可以对式(3.4)两边分别对T求导数,同时令导数等于零,则可以得到:(3.5)将(3.5)式代入(3.1)式,可以求得混合概率密度方程的判别式系数为:(3.6)一元二次方程在一般的情况下有两个解,但是如果背景区域和目标区域的方差相等,则只有一个解,即最优阈值Toptimal(3.7)使用最优阈值的方法对图像进行分割后的效果图如图3-1所示:(a)(b)图3-1图像分割效果图其中,图3-1(a)为基于Kinect获取的深度图,图3-1(b)为使用最优阈值方法进行人体与背景分割的图,通过图3-1(b)可以看出使用了最优阈值法后,可以较好的去除背景,能较完整的提取人体区域。3.2骨骼提取3.2.1人体骨架空间骨骼追踪技术是Kinect的核心技术,人体是由包括多部分骨骼架空间组成的,kinect能够准确标记人体的20个关节点,并对这20个点的位置进行实时追踪。目前kinectforWindowsSDK中的骨骼API可以提供位于kinect前方至多两个人的位置信息,包括详细的姿势和骨骼点的三维坐标信息。数据对象以骨骼帧的形式提供,每一帧最多可以保存20个点。当游戏者走进Kinect的视野范围的时候,Kinect就可以把人体的20个关节点的位置找到,下图3-2为kinect能够获取的20个骨骼点的示意图。图3-220个骨骼点的示意图3.2.2关节定位[21]通过上面几节的各种方法,基本上可以将深度图中人体的骨架提取出来,但是之前的方法是将手部和身体部分的骨架分别进行提取的,将它们组合在一起后不是连续的骨架,为了要完整的表达出骨架大致的形状,必需将这些骨架点用线段连接起来,同时要想准确的得到人体的骨架图,上一节的骨架效果图还不够准确,我们还需要定位出人体部位的关节点。由于人体手部的大致骨架已知,因此,手部骨架的两个端点有一个是手,另一个是与肩部较近的上臂。肩部的位置已知,但是由于二者并不相连,因此计算机不能直接确定哪个是上臂,哪个是前臂,由于要确定的点是肘关节,可以根据肘部的特点来进行定位。因为肘是上臂和前臂之间的唯一关节点,可以转动,要确定肘部的位置,就要利用这个信息。当然手部伸直的情况肘部是不弯曲的,如果手臂是大致伸直的,就可以直接取手臂骨架曲线的中点作为肘部,如果不是,则可以利用肘部能转动的特性找出它的位置。在确定手和肘关节位置时,可以从肩关节处开始搜索,寻找一个最近的骨架端点,那么这个点就是上臂上的一个点,该骨架线的另一端就是手的位置。然后,可以利用肘部是手部唯一的一个关节点这个信息,确定出肘关节的位置。具体步骤如下:(1)先将两个端点中离肩关节较近的点判定为上臂上的点,较远的点为手。(2)将骨架线上所有点对应在实际空间中的坐标计算出来。(3)然后在骨架线上寻找一个点,使得该点和手、肩在实际的三维空间中确定的三角形面积最大,那么可以认为这个点是手的骨架线上的转折点,就是肘关节点。如果面积都很小,那么手部基本是伸直状态,取骨架线的中点作为肘关节。根据上面的步骤,就可以确定手和肘关节的位置。这样手部关节点的位置也都确定了。同样,身体其他部位的关节点也可以用这个方法来确定,当身体腿部、膝部等大体部位的关节点确定后用直线连接起来,就可以形成比较符合人体骨架的结构。如图3-3最终骨架图。(a)(b)(c)图3-3最终骨架图其中,图3-3(a)为通过手臂的骨架确定了肩部、手肘、手的位置;图3-3(b)为利用同样的方法定位脚、膝关节等位置,再和头部等关节点进行组合后的结果;图3-3(c)为对图3-3(b)进行平滑优化,然后把相关联的点用直线连接后形成的人体深度骨架图。小球碰撞游戏开发4.1建立游戏模块如图4-1所示,为本次课题实现的步骤及方法。(1)首先通过体验者站在Kinect主摄像头前面1.5米到3米之间的位置,通过主摄像头识别体验者的肢体动作,进行骨骼提取分析人体动作。(2)接着通过景深摄像头测得人距Kinect的位置,获得景深图像,通过数字化处理,完成碰撞小球的过程,并将碰撞过程完整的表现在游戏界面上。(3)体验者可以喊出自己喜欢的颜色,或者可以根据自己喜欢的速度,小球的大小来调整小球的各种状态。使用者使用者红外投影机彩色摄像头麦克风数字化界面红外摄像头获取彩色图像声音数据流骨骼提取人体基本特征库骨架运动分析人体运动应用程序图4-1系统工作流程动作、语言接受感知具体控制4.2基于C#编程4.2.1定义小球模块定义一个游戏主体,即定义一个形状为小球的的游戏界面,其中“Circle”语句表示对小球的定义。编程如下:namespaceShapeGame.Utils{usingSystem;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Media;usingMicrosoft.Kinect;[Flags]publicenumPolyTypeCircle=0x40,//定义下落物体的类型,即为小球All=0x7f}如图4-2所示,即为定义小球的游戏界面。图4-2小球游戏界面效果图4.2.2定义游戏模式此段程序对碰撞类型进行了定义,以及游戏者各个肢体的碰撞进行定义,碰撞时判断是人体哪个部位进行碰撞。最后又定义了游戏模式,游戏模式分为三种,即无人模式、单人模式和双人模式。[Flags]publicenumHitType{None=0x00,Hand=0x01,Arm=0x02,Squeezed=0x04,Popped=0x08}publicenumGameMode{Off=0,//定义游戏无人模式Solo=1,//定义游戏单人模式TwoPlayer=2//定义游戏双人模式}如图4-3所示,为碰撞球游戏的单人、双人两种游戏模式。图4-3游戏模式效果图4.2.3碰撞类型为了让一个碰撞球进行检测,定义了一个骨骼的列表,其中每一个骨骼由两个关节构成,定义分段数据结构、关节信息,完成对骨骼的定义。当骨骼碰撞到小球之后,对端点进行速度估计,并对碰撞小球之后做出反应,其中“0”表示下降,“1”表示跳跃,“2”表示消失,“3”表示计数,即获得相应的分数。publicstructBone{publicJointTypeJoint1;publicJointTypeJoint2;publicBone(JointTypej1,JointTypej2){this.Joint1=j1;this.Joint2=j2;}}publicstructSegment{publicdoubleX1;publicdoubleY1;publicdoubleX2;publicdoubleY2;publicdoubleRadius;publicSegment(doublex,doubley){this.Radius=1;this.X1=this.X2=x;this.Y1=this.Y2=y;}publicSegment(doublex1,doubley1,doublex2,doubley2){this.Radius=1;this.X1=x1;this.Y1=y1;this.X2=x2;this.Y2=y2;}publicboolIsCircle(){return(this.X1==this.X2)&&(this.Y1==this.Y2);}}publicenumThingState{Falling=0,Bouncing=1,Dissolving=2,Remove=3}如图4-4所示,为小球碰撞到人体以后做出碰撞、跳跃等反应,获得积分等功能。图4-4小球运动状态效果图4.2.4界面显示此段是对游戏者的信息获取的编程。包括保持跟踪所有感兴趣的骨骼信息,其中包括头部,手部和脚部,然后是关节画刷和骨架画刷,以及对游戏者的显示比例。构造函数传入骨骼信息,画面上产生七种颜色中的一种或几种的控制。publicclassPlayer{privateconstdoubleBoneSize=0.01;privateconstdoubleHeadSize=0.075;privateconstdoubleHandSize=0.03;privatereadonlyDictionary<Bone,BoneData>segments=newDictionary<Bone,BoneData>();privatereadonlySystem.Windows.Media.BrushjointsBrush;privatereadonlySystem.Windows.Media.BrushbonesBrush;privatereadonlyintid;privatestaticintcolorId;privateRectplayerBounds;privateSystem.Windows.PointplayerCenter;privatedoubleplayerScale;publicPlayer(intskeletonSlot){this.id=skeletonSlot;int[]mixR={1,1,1,0,1,0,0};int[]mixG={1,1,0,1,0,1,0};int[]mixB={1,0,1,1,0,0,1};byte[]jointCols={245,200};byte[]boneCols={235,160};}4.2.5语音识别模块此段程序代码讲述了碰撞球游戏的一大亮点功能,即游戏可以识别声音并作出相应的反馈。例如体验者可以大声喊出诸如颜色、大小、快慢等单词,小球就会变成体验者喜欢的颜色,还可以控制小球大小,下落速度快慢等功能。//下面讲述的为小球的状态模块模块,诸如让小球变得更快、更慢,或者更大、更小和最大等等。{"Faster",newWhatSaid{Verb=Verbs.Faster}},{"Slower",newWhatSaid{Verb=Verbs.Slower}},{"Bigger",newWhatSaid{Verb=Verbs.Bigger}},{"Huge",newWhatSaid{Verb=Verbs.Biggest}},{"Giant",newWhatSaid{Verb=Verbs.Biggest}},{"Smaller",newWhatSaid{Verb=Verbs.Smaller}},{"Smallest",newWhatSaid{Verb=Verbs.Smallest}},privatereadonlyDictionary<string,WhatSaid>shapePhrases=newDictionary<string,WhatSaid>{//此段代码定义了小球下落的颜色,体验者可以喊出自己喜欢的颜色,小球随之变色。{"Red",NewWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(240,60,60)}},{"Green",NewWhatSaidVerb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(60,240,60)}},{"Blue",newWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(60,60,240)}},{"Yellow",NewWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(240,240,60)}},{"Purple",newWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(70,30,255)}},{"Pink",newWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(255,128,225)}},{"Dark",NewWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(40,40,40)}},{"Black",newWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(5,5,5)}},{"White",newWhatSaid{Verb=Verbs.Colorize,ColorSystem.Windows.Media.Color.FromRgb(255,255,255)}},};//通过语音识别定义了小球下落的速度,或快或慢,甚至可以停止、继续等等。privatereadonlyDictionary<string,WhatSaid>singlePhrases=newDictionary<string,WhatSaid>{{"SpeedUp",newWhatSaid{Verb=Verbs.Faster}},{"SlowDown",newWhatSaid{Verb=Verbs.Slower}},{"Stop",newWhatSaid{Verb=Verbs.Pause}},{"Continue",newWhatSaid{Verb=Verbs.Resume}},{"Play",newWhatSaid{Verb=Verbs.Resume}},{"Start",newWhatSaid{Verb=Verbs.Resume}},{"Go",newWhatSaid{Verb=Verbs.Resume}},};如下图4-5所示,为小球根据游戏体验者发出的stop,bigger,yellow等单词作出反应的游戏界面。图4-5语音模块效果图4.3游戏体验体感游戏是一个方便快捷,简单易玩的一款新型休闲游戏。下面去感受一下,体感游戏的魅力所在。如图4-6为碰撞球游戏整体运行界面,体验者站在Kinect面前做出挥手,抬腿和蹦跳的动作击打小球,根据击打小球的颜色不同,大小不同,获得相应的分数。图4-6整体效果图如图4-7所示,左图为刚开始游戏界面,界面清晰,背景是草地与蓝天,给人以明快清晰之感,体验者站在Kinect设备面前1.5-3米之间准备游戏。设备识别灵敏度较高,界面当中为体验者的镜像动作,即像镜子一样面对面的进行游戏,操作简单,老少皆宜,都可以轻松地进行游戏。图4-7游戏界面REF_Ref168484640\r\h错误!未找到引用源。REF_Ref168484646\h错误!未找到引用源。PAGE36第5章总结与展望5.1论文主要工作本文主要完成了以下工作:(1)总结了人体骨骼定位问题的研究现状,分析了各方法的优点和缺点,阐述了本论文的选题背景。(2)介绍了Kinect传感器的软硬件结构、获取深度图像的基本原理和深度图像的校正。(3)根据深度图像的特性提出了一种基于最优阈值的图像分割方法,利用该方法实现了人体与背景的分割;使用数学形态学的方法对人体的剪影图进行了去噪,通过Hilditch细化算法提取出了人体的骨架。(4)利用深度图的特性识别了手臂的位置,解决了手臂的遮挡问题;利用最大三角形面积法确定了关节点,获取了完整的人体动作状态。对各关节定位误差和定位时间进行了分析。5.2展望本文研究的基于Kinect的骨骼定位方法,能够自动地、比较准确地从深度图像中定位出人体的关节点,能解决简单的遮挡问题,实现骨骼跟踪。但是其实时性、准确性方面还有待提高。(1)定位方法方面,实验环境下规定的是正面对着Kinect传感器,背景相对简单、遮挡较少、手部不交叉等情况。进一步的工作可以研究遮挡较多、有交叉、背景较复杂等情况。到目前为止没有一种高效方法来解决此类问题。如何解决这些问题,是一个研究的新方向。(2)骨架提取方面,当人体区域的形状的长宽比较接近时,提取的骨架会变得较小,这也是导致本文中手臂关节点定位实验发生失误的主要原因。如何减少有用信息的丢失和消除干扰信息的条件下获取身体部位的骨架是将来很值得研究的一个方向。(3)骨骼定位算法方面,本文的方法在提取骨架的过程中运算量比较大,精度和效率不够高,离实时的关节点定位还有较大差距,主要是处理一张图片的时间太长。进一步的工作可以考虑利用更多的信息去定位关节点,寻找一种合适高效的定位方法。结论结论体感技术,作为一项前沿科技,势必会在未来的社会当中担当最主要的角色。随着体感技术的日益成熟,体感外设的感应越来越全方位,人类感官多模式互动在游戏中得以有效实现,用户不仅在想法上和身体动作上得以全方位参与,而且支持多用户在线畅玩。本次课题基于体感技术的碰撞球游戏,基本上完成了任务书上的每一项任务,达到了指导老师预期想要的成果,实现了单人、双人模式下的体感小球游戏。但是,对于体感技术的应用还有待提高,技术还稍显不足。基于体感技术开发的碰撞球游戏,摆脱了传统意义上鼠标和键盘的单一化交互方式,以玩家动作、语言等变化作为操控游戏的命令,这种游戏化的具体交互方式直接参与互动,使体验者玩家能够获得更大程度的刺激和快感。体感技术碰撞小球游戏实现了更加前卫的肌体运动与精神娱乐的完美交织,既可以进行单人游戏模式,又可以进行双人游戏模式。培养了协作精神和人际交往能力双人通过游戏方式,实现肌体运动与精神娱乐的交织,在愉悦的氛围中达到情绪渲染,营造一个轻松游戏氛围。社会信息化进程的发展对人机接口、人机交互、人机和谐环境提出了更高的要求。对于我国来说,构建人机和谐环境任务是光荣而艰巨的。参考文献PAGE54谢辞时光荏苒,岁月如梭,转眼大学四年美好时光即将逝去,来到了大学毕业设计的关键时段。本次课题终于顺利完成了,实现了预期的效果,完成了预期的功能。在这里我要郑重向我的毕业指导老师李教授表示感谢。他曾这样说,找到工作不容易,但是顺利毕业的事情更主要,我虽然不在学校,但毕业设计还是要做,并定期向李老师汇报工作(基本上是一周向老师报两次毕业设计进度)。必要的时候需要回学校向系领导汇报进度情况。这也是我首次见到我的导师李教授,初次叩门,我稍显拘谨,毕竟一直以来与李老师都是电话联络,心里面有些忐忑,不过,相处下来,意识到李老师是一个对科研工作严谨,对生活态度上比较风趣的人,他有种先入为主的感觉,对我谆谆教导,诲人不倦。攻克了一些课题里面技术性的难题。为我修改了一些编程里面我所走的弯路,找到了最佳捷径。让我豁然开朗。联想到我系对李老师委以重任,将系里科技协会交给他来指导是多么的明智之举。李老师带领科协曾在国内多项比赛上拿到大奖,为计算机系甚至为院里增光添彩。在这里我要说一句,李老师您辛苦了,再次感谢李老师的指导!提到谢辞我不得不提到张肖驰和徐继晓同学,因为这两个人也是给与了我极大的帮助。张肖驰同学是我的专业同学,我不在学校的日子里,需要上交表格和一些材料的事,全都落在了他的肩上,有的时候甚至连他自己的都没有完成,他总是先帮我上交材料。包括后期的功能调试,我俩可谓是废寝忘食,享受其中。在这里我要对张肖驰说声谢谢你了,同学。再者就是徐继晓同学,他是科技协会大三的一名同学,因为主修C#编程,帮了我很多.在这里,我对徐继晓同学表示诚挚的感谢!感谢培养我长大含辛茹苦的父母,使我生活无忧,安心学习!感谢我专业的老师对我的教育,使我对学科知识有了一定的了解!最后,再次感谢我的母校——洛阳理工学院四年来对我的栽培、教育!参考文献[1]董士海.人机交互的进展及面临的挑战[J].计算机辅助设计与图形学,2004,16(1):1-13[2]徐枫,刘烨斌,戴琼海.基于视频的现实人物运动创作[J].计算机辅助设计与图形学学报,2012,24(1):11-13[3]李豪杰,林守勋,张勇东.基于视频的人体运动捕捉[J].计算机辅助设计与图形学学报,2006,18(11):1645-1651[4]刘国翌,陈睿.基于视频的三维人体运动跟踪[J].计算机辅助设计与图形学学报,2006,18(1):82-88[5]罗忠祥,庄越挺,潘云鹤等.基于视频的运动捕获[J].中国图像图形学报:A版,2002,7(8):752-758[6]倪晨,邱鹏,王锋等.Kinect体感技术在人机交互中的应用研究[J].信息技术与信息化,2013,2(15):13-15[7]马建荣,章苏静,李凤.基于体感技术的亲子互动游戏设计与实现[J].中国电化教育,2012,9(4):17-21[8]柳克俊.关于人机交互、人机和谐环境的思考[J].计算机应用,2005,3(10):51-57[9]谭剑波,张光刘,李琳.体感设备与被动立体相结合的人机交互方法研究[J].合肥工业大学学报(自然科学版),2011,10(2):11-14[10]王一夫.基于计算机视觉的三维人机交互技术研究及应用[D].西安电子科技大学,2010[11]金华,华进.C#网络编程技术教程[M].北京:人民邮电出版社,2009[12]BenSilverman.《Will体育》称霸游戏史[D].2009,(4):15-18[13]李佳勋.互动式媒体-以感官多模式探讨数位设计环境中人机互动界面设计与应用实例[D].台湾:“国立”成功大学,2010[14]张凯,余新国.基于Kinect开发用于幼儿教育的手势识别[J].现代教育技术,2010,(8):16-19[15]任以君.运动人体的检测,识别与跟踪技术的研究[D].上海:上海大学,2008[16]李波.健身单车体感游戏设计与实现[D].湖南:湖南大学,2010[17]李清水,方志刚,沈模卫等.手势识别技术及其在人机交互中的应用[J].人类工效学,2002,8(1):27-33[18]顾立忠.基于表观的手势识别及人机交互研究[D].上海交通大学,2008[19]任海兵,祝远新,徐光祐等.基于视觉手势识别的研究-综述[J].电子学报,2000,28(2):118-121[20]周泽南.软计算在人-机-环境系统中的应用[C].人-机-环境系统工程研究进展,2005,13(17):403-405[21]关然,徐向民,罗雅愉等.基于计算机视觉的手势检测识别技术[J].计算机应用与软件,2013,30(1):155-159,164附录PAGE16附录碰撞球游戏基于C#编程主函数首先看到游戏界面当中小球下落,体验者做好准备,体统寻找并识别碰撞,根据小球的大小和颜色不同,获取相应的得分,显示在游戏主界面左上角,对游戏者整个身体进行识别,对整个游戏界面所有图形进行识别,接着根据物体下落的状态进行判断,如果下落物体的状态是“bouncing”和“falling”,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年年度预算讨论的邀请函(3篇)
- 纸艺艺术推广普及承诺书范文5篇
- 家电售后服务维修操作手册
- 供应商评价管理模板供应链选择与优化版
- 2021庆祝教师节演讲稿
- 家居装饰设计创意与实现手册
- 内容创作自媒体运营指南手册
- 年度财务预算分配讨论函(6篇)范文
- 医疗健康行业促进发展承诺书8篇
- 办公室安全用电规范管理手册
- 资金确权协议书
- 2026届江苏省南京市高三二模英语试题(含答案和音频)
- 2026版公司安全生产管理制度及文件汇编
- 2026年中国铁路各局集团招聘试题及答案解析
- 湖北省2026届高三(4月)调研模拟考试 英语答案
- 2026形势与政策课件中国风范 大国担当-在世界变局中推动构建新型大国关系
- (2025年)湖北省普通高中学业水平考试政治真题卷及答案
- 某钢铁厂成本核算细则
- 2026年基金从业资格证之私募股权投资基金基础知识测试卷含答案详解(巩固)
- 2026年八年级信息技术考试试题库(答案+解析)
- 新版人教版八年级下册数学全册教案(完整版)教学设计含教学反思
评论
0/150
提交评论