- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Kinect体感设备投篮系统设计.doc
基于Kinect体感设备投篮系统设计
摘 要:随着计算机的飞速发展,自然的图形用户界面应运而生,结合微软推出的体感设备Kinect,以及游戏引擎Unity3D,可以快速搭建实验环境。通过脚本定义投篮手势识别算法,完成投篮手势的识别,并利用算法算出篮球抛出时的初速度,交给Unity3D的物理引擎计算出篮球的运动轨迹,从而完成整个虚拟的投篮过程。
关键词:Kinect;体感;手势识别;Unity3D;投篮系统
DOI:10.16640/j.cnki.37-1222/t.2016.08.266
0 引言
根据冯?诺依曼(John von Neumann,1903~1957)的计算机体系结构,计算机分为五大部分――运算器、控制器、存储器、输入设备、输出设备。现在大多数计算机仍是冯?诺依曼计算机的组织结构,只是做了一些改进而已,并没有从根本上突破冯?诺依曼体系结构的束缚。对于计算机的研究和使用人员来说,计算机的发展最终需要解决的问题就是输入和输出的问题。如何对计算机进行高效准确的输入,以及如何让计算机通过算法,进行准确的计算,输出人们想要的结果,一直是计算机研究的一个重要课题。
随着计算机的发展,自然的用户界面(NUI) 随之出现。相对于传统的用户输入方式――鼠标键盘,自然的用户界面显得更加人性化。比如语音输入,手势识别等。显然,自然的用户界面更加符合人们的行为习惯。自然的用户界面更加健康,它可以让对计算机的输入变成与一个人的交流,让用户可以有更加身临其境的感觉。
1 现实生活中体感手势的运用
人们在日常的交际中,经常会用到一些手势,来使得对问题的表述更加具有表现力。这些手势不仅仅只是手指的动作,也不能理解为手部的动作。手势是一个广泛的概念,它包含了有含义、有意义的肢体动作。这也就是说,一个踢腿的动作,也可以被定义为手势。敲击键盘不是一个手势,因为手指快速的按下某一个按键既不容易被观察到,也不能直观地表达其含义。
然而,手势不只是用在交际表达中,人们在日常的生活中,也无处不用到手势。例如,在拧开饮料瓶盖的时候,需要用手握紧瓶盖,另一只抓紧瓶身,通过手腕、手臂的共同协作,完成拧下瓶盖的动作。拧下瓶盖的动作,就是一个手势。我们可以忽略在完成这些动作过程中所使用到、接触到的实际存在的物体,而把注意力转移到肢体本身。假设物体并不存在的,让你笔画着空气来完成一个拧瓶盖的动作,让另外一个人去猜你现在正在做的动作,是否他一眼就能看出你正在演示拧瓶盖的动作呢?
2 基于Kinect体感设备的篮球系统
2.1 手势的识别
如果“猜”出你所做手势的是一台计算机,那么就涉及到计算机的手势识别技术。让计算机去完成一个手势的识别、判断是非常困难的。首先,我们要设法获取人体的相关信息,这涉及到图形、图像识别技术、深度数据挖掘技术。通过微软研制的Kinect,其摄像头在收集了人体的视频信息之后,通过算法的处理,可以把人的肢体信息凝练为20个骨骼节点。它可以准确标定人体的这20个关键点,并对这20个点的位置进行实时追踪。在程序及算法设计中,人的肢体运动,会使得身体各个骨骼节点的三维坐标值发生改变。通过设置合理的数值,当骨骼节点的坐标差值超过某个设定值的时候,触发某一个状态位或一系列状态位的改变,从而完成一个手势或者一系列手势的判定。例如,完成一个完整的投篮手势,需要先抬起手臂。以右手为例,抬起右手意味着右手腕节点的y坐标值超过了右肩膀节点的y坐标值,也就是实际空间中的右手高度,高于右肩膀高度。此时,应该触发抬手状态位的改变,告诉系统,投掷者的手臂已经抬起,准备进行下一步的判断与计算。
当然,在手臂放下之后,要把抬手状态位还原,告诉系统,投掷者的手臂已经放下,不能继续进行投掷算法,不然系统会出现错误投掷判断。由此,抬手状态的触发就相当于投掷算法的第一个开关,整个投篮手势也是由一系列手势构成的。
2.2 运动轨迹的计算
篮球在空间中的运动,是一个球体的物理运动,需要物理引擎来提供物理算法,通常的游戏引擎都会带有物理引擎,我们使用Unity3D游戏引擎中的物理引擎,来完成篮球运动轨迹的计算。这样,我们只需要把篮球被抛出时的方向和速度提供给物理引擎,就可以完成篮球运动轨迹的计算了。
现实中,人完成投篮动作,就是给篮球一个加速度。通过手部用力,让篮球和手拥有相同的速度。当手部停止加速,开始减速,篮球也就不再加速,并且脱离手部,不再和手有接触。篮球拥有了初始速度,就开始抛物运动。这里我们忽略空气阻力的作用。在三维空间中,需要把加速度及速度分解到相互垂直的三个方向上,也就是三维坐标系中,计算三个方向上的加速度,最终提交给Unity3D的物理引擎,形成一个和速度进行计算。手部三个方
原创力文档


文档评论(0)