基于Kinect的人机交互系统设计毕业设计论文.doc

上传人:小小飞 文档编号:3920891 上传时间:2019-10-10 格式:DOC 页数:45 大小:2.64MB
返回 下载 相关 举报
基于Kinect的人机交互系统设计毕业设计论文.doc_第1页
第1页 / 共45页
基于Kinect的人机交互系统设计毕业设计论文.doc_第2页
第2页 / 共45页
基于Kinect的人机交互系统设计毕业设计论文.doc_第3页
第3页 / 共45页
基于Kinect的人机交互系统设计毕业设计论文.doc_第4页
第4页 / 共45页
基于Kinect的人机交互系统设计毕业设计论文.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《基于Kinect的人机交互系统设计毕业设计论文.doc》由会员分享,可在线阅读,更多相关《基于Kinect的人机交互系统设计毕业设计论文.doc(45页珍藏版)》请在三一文库上搜索。

1、基于Kinect的人机交互系统设计摘 要 随着技术的不断进步,人机交互的方式也越来越先进,通过肢体动作来操作计算机和游戏机已经成为现实。自从微软推出Kinect体感外设以来,自然的人机交互成为当前的研究热点,通过Kinect外设,可以解除人们受键盘、鼠标等传统交互方式的束缚,具有重要的意义。本论文介绍的就是基于Kinect的人机交互的程序设计。 本设计通过Kinect的骨骼跟踪接口,自定义动作,如手臂平伸,手臂前伸,手臂上举等,触发事件后映射为键盘事件,达到操作应用程序的目的。使用者可以选择被控制的对象程序。为了防止他人干扰操作,本程序默认只追踪离Kinect传感器最近的人。 本设计的程序可以

2、让使用者通过手臂动作操作俄罗斯方块、播放PPT、控制音乐播放器、控制视频播放器。未来还可以扩展其他基于键盘控制的程序的操作。关键词:Kinect 人机交互 骨骼跟踪The Design of Man-machine Interaction System Based on KinectABSTRACTAs technology continues to progress, human-machine interaction is more and more advanced, and body movements to operate computers and game consoles ha

3、s become a reality.This paper will introduce a program of Kinect-based human- machine interaction design. Since Microsoft launched Kinect somatosensory peripheral,natural human-computer interaction has become a research hotspot. People can lift their shackles of traditional interact such as keyboard

4、, mouse, and others through the Kinect peripheral, and this will be a important significance.This design achieve the purpose of operating applications through Kinects skeleton tracking interface, such as stretch your arms, reach your arms,and uplift your arms.custom actions and an triggered event wh

5、ich is mapped to keyboard event. The user can select the object of control program.In order to prevent the interference of other people, this design procedures only tracks the people who is nearest to the Kinect sensor.The program of this design allows the user to operate Tetris, Powerpoint,music an

6、d video player.It can be extended to other keyboard-based control programs operating in the future.Key Words: Kinect Human- machine interaction Skeleton tracking 40目 录第一章 引言11.1 选题理由11.2 自然人机交互技术的发展11.3 国内外发展情况11.4 你就是控制器11.5 Kinect的应用21.6 需求分析3第二章 认识Kinect42.1 两款Kinect对比42.2 Kinect的硬件组成52.2.1 Kinec

7、t的“心脏”PS1080 SoC62.2.2 Kinect的“三只眼”投影仪和两个摄像头72.2.3 Kinect的“四只耳朵”麦克风阵列82.3 Kinect相关的技术规格92.4 Kinect工作原理102.4.1 Kinect for Xbox360的产品设计102.4.2基于“管道”的系统架构11第三章 总体设计133.1 软件概述133.2 软件用户群133.3 软件功能133.4 运行环境133.5 开发环境143.6 软件框架图143.7 软件各模块设计143.7.1 初始化窗口143.7.2 注册Kinect变化事件143.7.3 骨骼事件处理14第四章 详细设计与算法分析16

8、4.1 初始化相关模块164.1.1 定义变量164.1.2 Window_Loaded窗口载入事件164.2 注册Kinect变化事件164.2.1 事件方法主体164.2.2 事件方法中引用的方法164.3 骨骼事件处理174.3.1 隐藏骨骼跟踪提示标签174.3.2 判断窗口是否关闭中174.3.3 获取最近的骨骼跟踪跟踪实例174.3.4 判断获取的距离Kinect最近的骨骼跟踪实例174.3.5 提示用户可以进行应用程序控制174.3.6 判断Kinect的控制对象184.3.7 定义判断骨骼跟踪事件的阈值184.3.8 控制俄罗斯方块的方法184.3.9 控制PPT播放的方法20

9、4.3.10 控制音乐播放器的方法214.3.11 控制视频播放器的方法234.3.12 模拟键盘输入工具类244.3.13 窗口关闭方法25第五章 软件测试265.1 Kinect控制俄罗斯方块的测试265.1.1 骨骼跟踪图265.1.2 运行结果265.2 Kinect控制PPT播放的测试285.2.1 骨骼跟踪图285.2.2 运行结果285.3 Kinect控制音乐播放器的测试295.3.1 骨骼跟踪图295.3.2 运行结果295.4 Kinect控制视频播放器的测试305.4.1 骨骼跟踪图305.4.2 运行结果30第六章 总结与展望316.1 总结316.2 展望31参考文献

10、33附 录34致 谢40天津理工大学2013届本科毕业设计说明书第一章 引言1.1 选题理由人机交互技术是指通过计算机输入、输出设备,以有效的方式实现人与计算机对话的技术。它是计算机用户界面设计中的重要内容之一。它与认知学、人机工程学、心理学等学科领域有密切的联系。自从微软推出Kinect体感外设以来,自然的人机交互成为当前的研究热点,通过Kinect外设,可以解除人们受键盘、鼠标等传统交互方式的束缚,具有重要的意义。通过键盘鼠标等外设控制电脑需要操作者近距离的操作,而且无法解放双手,通过自由的方式操控。本设计通过微软开发的Kinect体感传感器,令使用者摆脱键鼠的束缚,通过肢体语言让电脑理解

11、你的操作意图,给使用者以更佳操控体验。1.2 自然人机交互技术的发展2008年,比尔盖茨提出“自然用户界面”的概念,并预言人机交互在未来几年内会有很大的改观,键盘和鼠标将会逐步被更为自然的触控式、视觉型以及语音控制界面所替代。与此同时,另外一种提法“有机用户界面”也开始悄然兴起,其包括生物识别传感器、皮肤显示器,乃至大脑与计算机的直接对接,这些技术无疑都将给人类的生活带来重大影响。随着计算机技术和传感器技术的普遍应用,现实世界也逐步出现其“数字版”的一面,而自然人机交互技术正是现实世界与虚拟世界之间的桥梁。1.3 国内外发展情况Kinect被吉尼斯世界纪录组织称为史上销售最快的电子产品1。除了

12、体感设备比较普及的游戏领域外,Kinect的应用性和实验性正在快速发展。欧洲时装店Topshop在莫斯科的旗舰店安装了一种全新的试衣间,这种虚拟试衣间利用了当时最先进的两种技术增强现实和Kinect体感,你无须试穿就能见到真实的试衣效果2。近日,Kinect for Windows平台为疾病患者打造了一个可以识别面部表情或手势的设备,来帮助很多中风患者缓解失语等困扰。英国的Nottingham Trent大学正在着手通过Kinect for Windows技术帮助中风患者缓解面瘫带来的影响,目前整个项目已经获得347000英镑的资金支持3。还有淡江大学电机工程学系开发的基于Kinect之实时双

13、向人流计数系统4,台湾大学生医电子与资讯学研究所开发的应用Kinect感应器分析手指活动擷取系统5。1.4 你就是控制器很多年来,不用控制器的沉浸式游戏一直都是游戏设计师和开发人员心目中的至高境界。在Kinect出现之前,任天堂的Wii是体感技术的代表,同期的产品还有Sony的PS3,但它们都需要额外的控制器。然而,Kinect向世人公布:你就是控制器(You are the controller)。站在Kinect前,它立刻就能知道你是谁。不就如此,它还能将你和朋友区分开来。当你移动时,传感器能在瞬间追踪到你。凭借无控制器的娱乐体验,Xbox360和Kinect正以无法想象的方式改变着人们的

14、家庭生活6。1.5 Kinect的应用(1)通过对最新的科技产品Kinect在SNC的创新智能教室框架下的应用探索,提出了结合手势识别与增强现实技术的教育辅助系统的设想并进行了实现7。(2)利用Kinect深度传感器所获取的图像深度信息实现手部从背景中的分割,并通过在Hu矩基础上加入3个表达式,使不变矩包含更多细节特征,对手势目标进行识别,最后把得到的识别结果转换成控制指令通过Ad-Hoc网络传送给智能轮椅,实现运动控制8。(3)利用Kinect体感设备,可将其即时动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能整合到视频会议中,使视频会议更具可交互性,提供了更好的用户体验,并提高了视

15、频会议的整体性能9。(4)一种基于 Kinect 传感器的快速物体重建方法,以及基于该方法的一种图形处理器 (Graphic processing unit, GPU) 原型系统实现10。(5)基于Kinect的用于幼儿教育的手势识别功能模块,用OpenCV中的支持向量机识别每个特征向量的手势类别11。(6)通过分析Kinect相机获取的深度图的特征,提出以综合点特征和梯度特征的局域梯度特征的方式来对人体部位区分判定12。(7)随着Kinect设别的出现,获取场景的2.5D信息变得很容易。设计了一个全新的基于无监督物体识别系统13。(8)基于微软Kinect系统的单目RGB摄像机以及深度距离受

16、限的RGB-D像机,研究解决室内机器人的6自由度定位问题14。(9)基于Kinect的多点触控系统,该系统利用Kinect获取三维深度信息,通过建立触控感应平面模型,检测用户多点触控事件,并进行触控点的坐标变换,实现对电脑的控制15。(10)利用微软公司推出的深度相机Kinect对人体进行扫描,获取人体深度数据,进一步构建人体表面点云数据;再运用Pro/E软件对点云数据进行人体模型重建,最后对人体表面特征数据进行测量16。(11)采用微软公司开发的一款廉价体感游戏设备Kinect,尝试了对农作物长势形态深度图像进行实时监测研究,在介绍Kinect深度成像原理的基础上,提出了采用Kinect获取

17、农作物长势深度图像的算法以及提取3D点云世界坐标的算法,并开展了初步试验17。(12)利用Kinect以及ICP迭代算法计算出了人体头部的旋转角度并且对人体头部的姿态进行了准确的估计,成功利用人体脸部三维点云图像估计人体头部姿态,使得在多种复杂环境中,实时检测驾驶员头部姿态成为了可能18。(13)利用微软Kinect体感器作为人物场景采集器,将其采集到的深度数据进行处理,将人物与背景分割,去除背景深度区域,保留人物所在深度区域,进一步检测出人物19。(14)利用Kinect传感器所获取的人体骨骼跟踪识别点,通过对手势在三维空间中的位置坐标转换,与手势库中的位置特征信息进行匹配,将合法的手势信息

18、转换为识别结果,反馈给电子相册软件并完成相应的控制指令输出20。1.6 需求分析(1)功能需求本设计的程序可以让使用者通过手臂动作操作俄罗斯方块、播放PPT、控制音乐播放器、控制视频播放器。未来还可以扩展其他基于键盘控制的程序的操作。(2)界面需求本设计需要有选择被控程序的功能,同时还要显示玩家的动作视频和动作识别结果及对应的映射结果。(3)性能需求本设计要在本身正常运行的情况下,节省资源,保证被控程序正常运行。由于操作俄罗斯方块时通过线程休眠防止键盘事件过于频繁,但是本程序为单线程程序,线程休眠时主程序界面会卡死。解决的方案是使用多线程技术,将主程序和模拟键盘操作的方法放到两个线程内,这样只

19、休眠模拟键盘操作的线程就可以达到防止键盘事件过于频繁的目的,而且主程序也不会卡死。第二章 认识Kinect作为一款集成了诸多先进视觉技术的自然交互设备,Kinect在学术和游戏领域均有很高的关注度。此外,Kinect硬件的研发与生产综合了声、光、电和机械学等多方面的技术,其主要零部件近百个,拆分成最小单元后有近千个,有三块独立主板,下面就详细介绍一下。2.1 两款Kinect对比图2.1所示为Kinect for Xbox360图2.1 Kinect for Xbox360图2.2所示为Kinect for Windows图2.2 Kinect for Windows从外观上看,二者几乎没有区

20、别,只是logo不同,一个是XBOX360,另一个是KINECT。新版Kinect for Windows固件做了升级,支持近景模式、提升了骨骼跟踪的API性能、更好的兼容各种Windows计算机、采用更为先进的声学模型,并且将其作为微软授权在Windows平台下进行开发的Kinect传感器。其他方面和Kinect for Xbox360的版本差异不大。Kinect for Xbox360的版本从设计之初,就是为Xbox360定制的,并未考虑其他平台,这一版本的Kinect,从微软授权角度而言,无法用作商业开发,只能用作教学、科研或者实验。本设计就是基于Kinect for Xbox360的。

21、2.2 Kinect的硬件组成图2.3 拆解后的Kinect如图2.3所示,Kinect内部的确比想象中的复杂得多。以下是Kinect组件的完整列表:a外壳、底座及不同类型的螺丝;bMoving Touch传动马达电机(用于仰角控制);c散热风扇;d彩色摄像头;e红外摄像头;f红外投影机;g麦克风阵列(4个);h3块主板;i14种关键芯片。2.2.1 Kinect的“心脏”PS1080 SoCKinect的心脏是PrimeSense的PS1080 SoC。PS1080 SoC芯片是一个多感应系统,能提供同步深度图像、彩色图像和音频流,如图2.4所示。PS1080通过USB 2.0物理层协议将所

22、有数据传送到主机。PS1080适用于各种主机CPU所有深度获取算法均在PS1080上运行,主机只需运行最低限度的USB通信层。通过这种设计,即使是计算能力有限的主机设备也能具备“深度图像获取能力”。图2.4 PrimeSense推荐的设计2.2.2 Kinect的“三只眼”投影仪和两个摄像头Kinect有三只不对称的“眼睛”,从左向右分别是红外投影机、彩色摄像头和红外摄线头,如图2.5所示。图2.5 Kinect的“三只眼”(1)红外投影机PS1080 SoC对红外光源进行控制,以便通过红外光编码影像放映场景。红外投影机的光源是一类普通激光光源,经过磨砂玻璃和红外滤光片,投射出近红外光,该光波

23、长为830nm,可持续输出,符合IEC 60825-1标准中的一级安全要求。红外摄像头是一个标准CMOS影像传感器,负责接收放出的红外光,并将红外光编码影像传给PS1080。PS1080负责处理红外影像,然后逐帧生成准确的场景深度影像。(2)彩色摄像头和红外摄像头Kinect是通过彩色摄像头和红外摄像头来观察这个世界的。为了生成更准确的传感器信息,PS1080会执行“PrimeSense注册过程”。为了让深度影像和二维标准色彩影像相互对应,必须进行注册。注册就是将色彩影像和深度影像进行对应,产生像素相互对应的影像,即色彩影像中的每个像素分别与深度影像中的一个像素对应。这能让应用程序准确了解收到

24、的色彩影像中每个像素的深度。所有传感器信息(深度影像、色彩影像和音频)通过一个USB 2.0接口传送给主机,且时序一丝不差。通过Kinect SDK可以获得同步的深度图像和彩色图像数据流。在图2.6中,从左向右,分别是Microsoft / X853750001 / VCA379C7130红外摄像头、VNA38209015彩色摄像头、OG12 / 0956 / D306 / JG05A红外投影机。图2.6 Kinect的“三只眼睛”2.2.3 Kinect的“四只耳朵”麦克风阵列由于Kinect的“三只眼”的不对称分布,Kinect的麦克风阵列也是左右不对称的,从而保持重量分布的均匀。Kine

25、ct的麦克风阵列分布如图2.7所示。图2.7 Kinect的麦克风阵列Kinect的音频系统采用了四元线性麦克风阵列技术。一般而言,麦克风阵列中包含四个相互独立的小型麦克风,每个设备之间相距数厘米,其排列可呈线形,捕捉多声道立体声,通过数字信号处理(DSP)等组件,根据麦克风阵列接听声音的时间差来判断声源方向。与一般的单麦克风数据相比,Kinect阵列技术包含有效的噪声消除和回波抑制(Acoustic Echo Cancellation,AEC)算法,同时采用波束成形(Beamforming)技术,通过每个独立设备的响应时间确定音源位置,并尽可能避免环境噪声的影响。此外,Kinect还被设计为

26、可以在发言者超过一人时辨别出相应的语音指令。波束形成技术已广泛应用于雷达、声纳和通信等领域。2.3 Kinect相关的技术规格Kinect传感器的有效追踪范围如表2-1、表2-2所示。表2-1 Kinect for Xbox360 传感器传感器特性有效视距 /m色彩和深度1.23.5骨骼跟踪1.23.5表2-2 Kinect for Windows 传感器传感器特性有效视距 /m色彩和深度默认模式(0.84.0),近景模式(0.43.5)骨骼跟踪默认模式(0.84.0),近景模式(0.43.5)Kinect for Xbox 360的有效视野范围为0.83.5m。推荐最佳距离应该是2.26m(

27、一个玩家)和2.5m(二个玩家)。Kinect传感器阵列规格如表2-3所示。表2-3 Kinect传感器阵列规格传感器特性规格范围可视角度43垂直方向和57水平方向有效视野范围机械化倾斜范围(垂直方向)28帧率(深度和彩色图像数据流)30帧每秒(FPS)深度图像(默认)QVGA(320240)彩色图像(默认)VGA(640480)音频格式16kHz, 16bit单声道(PCM)音频输入特性4个带有24bit的数字模拟信号(ADC)和消除和处理噪声的麦克风阵列2.4 Kinect工作原理通过前面的介绍我们已经对Kinect硬件架构有了充分的了解,通过剖析Kinect的硬件组成,揭开了它神秘的面纱

28、。那么接下来我们重点从产品设计、原理、软件算法、基础研究等角度去分析Kinect的内在奥秘。2.4.1 Kinect for Xbox360的产品设计Kinect作为一个传感器,本质上也只是一个输入设备。它的成功来源于消费者对自然人机交互的渴望和认可,以及普通大众都能接受的价格。比起传统摄像头,它的高明之处在于能“识人辨音”。Kinect的设计初衷是将其嵌入Xbox游戏机的娱乐中心,给Xbox 360这艘“传统潜艇”配备上更为先进的“声纳系统”。这是对任天堂Wii、索尼PS3等老牌竞争对手一次很有威胁的进攻,微软希望通过全新的游戏交互体验来占领新的制高点。此外,Xbox也被定为家庭娱乐中心,占

29、领电视机屏幕也是微软的战略之一通过Kinect语音和手势控制等功能,让普通用户更直观、更轻易地搜索到互联网及多媒体信息,同时社区用户彼此之间还可以基于Kinect摄像头进行视频通讯。对微软而言,Kinect的重要性表现在两个方面:它大大延长了Xbox 360游戏机的生命周期,并成功为它带来了大量的新用户;同时也充分证明微软在持续创新上的巨大能量,不管是观念的前瞻性还是对新产品的执行力上。“你就是控制器”Kinect的宣言激动人心。没有控制器的人机交互,你甚至不用翻阅任何关于控制器的说明书。这就是游戏设计师们的至高境界:不用控制器的沉浸式游戏(controller-less immersion)

30、。通过Kinect,玩家和Xbox 360游戏机之间仿佛建立了一个良好的“共生系统”。2.4.2基于“管道”的系统架构Kinect for Xbox 360是一个基于“管道”的体系架构。Kinect传感器设备提供三大类的原始数据信息,包括深度数据流(depth stream)、彩色视频流(color stream)、原始音频数据(raw audio stream),同时分别对应骨骼跟踪(Skeletal Tracking)、身份识别(Identify)、语音识别(Speech Pipeline)三个处理过程。(1)骨骼跟踪骨骼跟踪是Kinect“体感操作”的基础,它要求系统在允许的延时范围内,

31、快速构建玩家的躯干、肢体、头部甚至手指。(2)动作识别动作识别的基础是骨骼跟踪,广义上识别的内容包含肢体运动、手势以及静态姿势。我们可以把动作抽象为骨骼关节点的状态或运动序列。手语是一种较为复杂的手势,它的表达涉及动作的连续性和持续性,不同的组合可以表达丰富的词组或短句。这里谈的动作识别包含两个层次的概念:a.骨骼在某一时间点的状态,是为静态的姿势;b.骨骼中的某一关节或是多个关节点在空间的运动序列,是为动态的行为。(3)人脸识别人脸识别是整个身份识别中最重要的一个组成部分,Kinect也将拥有如此博闻强识的本领,它能区分不同玩家、快速识别玩家的身份,从而提供更为个性化的体验,比如记住你上次听

32、过的歌曲,或者最近玩过的游戏。通过人脸识别实现的个性化体验已经成为游戏体验的一部分,神奇之处恰恰在于你并没有做任何事情,你只是站在那里,Kinect通过人脸识别就知道你是谁。“人脸识别”与“骨骼跟踪”类似,第一步首先定位人脸的存在,其次基于人的脸部特征,对输入的人脸图像或者视频流进行进一步的分析,包括脸的位置、大小和各个主要面部器官的位置信息,并依据这些信息,进一步提取每个人脸中所蕴涵的身份特征,并将其与已知的人脸进行对比,从而识别每个人的身份。(4)语音识别Kinect麦克风阵列捕获的音频数据流通过音频增强效果算法处理来屏蔽环境噪声。即使在一个大的空间,即使人离麦克风一定的距离,也能够进行语

33、音命令的识别。Kinect阵列技术包含有效的噪声消除和回波抑制(Acoustic Echo Cancellation,AEC)算法,同时采用波束成形(Beamforming)技术通过每个独立设备的响应时间确定音源位置,并尽可能避免环境噪声的影响。Kinect for Xbox 360的语音识别也仅仅定位在简单的“语音命令”的层次。比如说“Xbox, Lets Play”,这里Xbox就相当于是一个命令提示符,后面的话对应着一些常用操作命。第三章 总体设计3.1 软件概述本软件的目的是让使用者以一种比传统更加自然的操纵方式与计算机沟通,它让使用者通过肢体动作来操作计算机软件。其主要实现了四个功能

34、:通过动作玩俄罗斯方块;通过动作控制PPT播放;通过动作控制音乐播放;通过动作控制视频播放。3.2 软件用户群(1)喜欢边运动边游戏的玩家每个人都能享受到Kinect带来的乐趣。从4、5岁的孩子到60岁的老人。小孩可以通过自己的蹦蹦跳跳玩一些体育健身的游戏,而年轻人可以通过自己灵活的动作来玩一些动作或者射击游戏。通过本程序,游戏玩家可以用肢体动作操控游戏,而且在玩游戏的同时还能达到锻炼身体目的。(2)经常演示PPT的用户发表演讲的时候,为了播放幻灯片,演讲者受到鼠标或者遥控器所限,无法随心所欲地表达自己。通过本程序,可以完全脱离束缚,依靠手臂的位置控制PPT播放,令演讲者轻松演示PPT。(3)

35、在客厅用HTPC听音乐看视频的用户随着技术的进步,越来越多的人选择使用HTPC在客厅连接平板电视来看电影或者听音乐,这时怎么操作HTPC就成了问题所在。传统方法是通过无线键鼠或者遥控器操作,这样虽然摆脱了线材的束缚,可以远距离的操作,但还不是很便利,毕竟手里还要拿着鼠标或者遥控器。通过本程序,使用者可以通过简单的动作播放音乐和视频,简化操作。3.3 软件功能通过Kinect的骨骼跟踪定义一些动作识别,如手臂平举,双臂上举等等,将其转化为键盘事件,控制俄罗斯方块、PPT播放、音乐播放、视频播放。3.4 运行环境要使用 Kinect for Windows 传感器,您需要一台安装了以下软件的 PC

36、: Microsoft Windows 7、Windows 8、Microsoft Windows Embedded Standard 7 或 Windows Embedded POSReady 7。 32 位 (x86) 或 64 位 (x64) 处理器 双核 2.66 GHz 或更快的处理器 专用的 USB 2.0 总线 2 GB RAM3.5 开发环境操作系统:Windows 8 专业版集成开发环境:Visual Studio 2010、Visual Studio 20123.6 软件框架图如图3.1所示,程序运行时,先初始化窗口,定义相关变量。然后注册Kinect变化事件,设置相关参数

37、,显示彩色图像,启动Kinect。之后处理骨骼跟踪事件,判断程序所要控制的对象程序,执行相应的方法进行实现。图3.1 软件框架图3.7 软件各模块设计3.7.1 初始化窗口完成窗口初始化和相关变量的定义。3.7.2 注册Kinect变化事件开启Kinect深度流和彩色流,设置平滑处理参数,打开Kinect骨骼流,注册骨骼跟踪事件,显示彩色图像摄像头,启动Kinect。3.7.3 骨骼事件处理提示用户跟踪状态,判断窗口是否被关闭,获取最近的骨骼流对象,当没有骨骼流对象时返回,当骨骼跟踪对象失去跟踪时返回,提示用户可以运行游戏,映射键盘事件。第四章 详细设计与算法分析4.1 初始化相关模块4.1.

38、1 定义变量定义窗口是否正在关闭中的布尔值isWindowsClosing;定义最多同时可以跟踪的用户数的常量MaxSkeletonTrackingCount;定义骨骼跟踪的数组allSkeletons,其大小为常量MaxSkeletonTrackingCount;定义判断控制程序的字符串controlFlag;定义执行状态的整型flag。4.1.2 Window_Loaded窗口载入事件隐藏骨骼跟踪提示标签,注册Kinect变化事件。4.2 注册Kinect变化事件4.2.1 事件方法主体(1)获取旧的KinectSensor实例,将其关闭,获取新的KinectSensor实例,如果实例为空

39、,则返回。(2) 开启并设定深度图像数据流格式为DepthImageFormat.Resolution640x480Fps30,开启并设定彩色图像数据流格式为ColorImageFormat.RgbResolution640x480Fps30。(3) 设置平滑处理参数parameters,开启并设定骨骼跟踪数据流格式。(4)注册骨骼跟踪事件。(5)用try-catch方式显示彩色图像,启动Kinect,异常为System.IO.IOException。4.2.2 事件方法中引用的方法关闭Kinect的方法:判断KinectSensor实例是否为空,非空则判断该实例是否正在运行,然后停止该Kin

40、ectSensor实例,再判断该实例是否打开了音频流,若打开音频流则将其关闭。4.3 骨骼事件处理4.3.1 隐藏骨骼跟踪提示标签将labelIsSkeletonTracked的Visibility属性设置为System.Windows.Visibility.Hidden。4.3.2 判断窗口是否关闭中判断isWindowsClosing的值,为true则返回。4.3.3 获取最近的骨骼跟踪跟踪实例此方法在本方法外定义,使用using将整个方法括起,自动释放用于存储不再需要的对象的内存。通过e.OpenSkeletonFrame()方法获取骨骼跟踪帧skeletonFrameData,判断sk

41、eletonFrameData是否为空,为空则返回null。将skeletonFrameData复制到allSkeletons骨骼跟踪流数组。利用LINQ语法选出allSkeletons中的s,使其满足追踪状态为正在追踪且骨骼头部追踪状态为正在追踪,将s按照骨骼头部的Z轴坐标升序排列,取出其中的第一个被追踪的骨骼,这就是离Kinect最近的被追踪的骨骼。定义closestSkeleton为离Kinect最近的被追踪的骨骼,返回closestSkeleton。4.3.4 判断获取的距离Kinect最近的骨骼跟踪实例判断获取的距离Kinect最近的骨骼跟踪实例,若为空则返回;判断获取的距离Kine

42、ct最近的骨骼跟踪实例的正在追踪状态TrackingState是否为正在追踪SkeletonTrackingState.Tracked,若状态为未在跟踪,则返回。4.3.5 提示用户可以进行应用程序控制判断获取的距离Kinect最近的骨骼跟踪实例的正在追踪状态TrackingState是否为正在追踪SkeletonTrackingState.Tracked,若状态为正在追踪,则显示骨骼跟踪提示标签labelIsSkeletonTracked,将其Visibility属性设置为System.Windows.Visibility.Visible。4.3.6 判断Kinect的控制对象(1)由用户选

43、择程序界面上的RadioButton来确定Kinect控制的对象程序。当用户选中radioButtonTetris时,触发radioButtonTetris_Checked事件,判断被控制的程序的变量controlFlag的值被设置为Tetris。当用户选中radioButtonPPT时,触发radioButtonPPT_Checked事件,判断被控制的程序的变量controlFlag的值被设置为PPT。当用户选中radioButtonMusicPlayer时,触发radioButtonMusicPlayer_Checked事件,判断被控制的程序的变量controlFlag的值被设置为Musi

44、cPlayer。当用户选中radioButtonVideoPlayer时,触发radioButtonVideoPlayer_Checked事件,判断被控制的程序的变量controlFlag的值被设置为VideoPlayer。(2)判断被控制的程序的变量的值当controlFlag的值为Tetris时,执行控制俄罗斯方块的方法playTetris(s);当controlFlag的值为PPT时,执行控制PPT的方法controlPPT(s);当controlFlag的值为MusicPlayer时,执行控制音乐播放器的方法controlMusicPlayer(s);当controlFlag的值为Vi

45、deoPlayer时,执行控制视频播放器的方法controlVideoPlayer(s)。4.3.7 定义判断骨骼跟踪事件的阈值定义手臂垂直举起的阈值ArmRaisedThreshhold为0.3,单位为米;定义手臂水平伸展的阈值ArmStretchedThreadhold为0.5,单位为米;定义手臂水平前伸的阈值ArmFrontStretchedThreshold为0.4,单位为米;定义手臂垂直放下的阈值ArmPutDownThreshold为0.1,单位为米。4.3.8 控制俄罗斯方块的方法(1)相关变量的定义定义左肩的位置leftShoulder为s.JointsJointType.Sh

46、oulderLeft.Position;定义右肩的位置rightShoulder为s.JointsJointType.ShoulderRight.Position;定义左手的位置leftHand为s.JointsJointType.HandLeft.Position;定义右手的位置rightHand为s.JointsJointType.HandRight.Position。通过判断左手的Y轴坐标与左肩的Y轴坐标的差值是否大于手臂垂直举起的阈值ArmRaisedThreshhold定义左手是否举起的布尔值isLeftHandRaised;通过判断右手的Y轴坐标与右肩的Y轴坐标的差值是否大于手臂垂

47、直举起的阈值ArmRaisedThreshhold定义右手是否举起的布尔值isRightHandRaised;通过判断左肩的X轴坐标与左手的X轴坐标的差值是否大于手臂水平伸展的阈值ArmStretchedThreadhold定义左手臂是否平举的布尔值isLeftHandStretched;通过判断右手的X轴坐标与右肩的X轴坐标的差值是否大于手臂水平伸展的阈值ArmStretchedThreadhold定义右手臂是否平举的布尔值isRightHandStretched;通过判断左肩的Z轴坐标与左手的Z轴坐标的差值是否大于手臂水平前伸的阈值ArmFrontStretchedThreshold定义左手臂是否前伸的布尔值isLeftHandFrontStretched;通

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1