毕业论文-虚拟博物馆文物互动展示系统设计与实现_第1页
毕业论文-虚拟博物馆文物互动展示系统设计与实现_第2页
毕业论文-虚拟博物馆文物互动展示系统设计与实现_第3页
毕业论文-虚拟博物馆文物互动展示系统设计与实现_第4页
毕业论文-虚拟博物馆文物互动展示系统设计与实现_第5页
已阅读5页,还剩177页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I虚拟博物馆文物互动展示系统设计与实现摘要随着互联网技术的发展,使得博物馆不断地被重新定义。博物馆是征集、收藏、研究和展示代表民族文化和社会发展程度的文物场所,并对那些具有历史价值的受损文物进行修复,为公众提供历史文化知识和观赏的社会公共机构。博物馆的传统文物展示缺乏生动性、趣味性,同时受博物馆空间限制,文物的具体信息不能完全展现,信息的传递是单向的,观众只能被动接受,容易引起观众的主动参与性不足。因此,研究一套功能全面、稳定可靠的虚拟文物互动展示系统具有极其重要的意义。本文针对传统文物展示存在的不足,提出虚拟文物互动展示系统建设目标,综合体感技术、增强现实技术,用虚拟文物代替实体文物,调动参观者的积极性,实现参观者与虚拟文物之间产生更好的互动。本文首先对系统整体架构进行设计,主要包括体感设备和系统软件两个部分,为系统需求分析提供参考依据,同时详细研究分割深度图像中的用户信息和手势识别两项关键技术。然后根据虚拟文物互动展示系统的功能和性能需求分析,设计系统软件总体结构,通过对比分析,确定体感设备、软件开发框架以及MySQL数据库的选择。其次,本文对系统软件所涉及到的相关技术进行重点研究和分析。接下来根据系统的功能需求分析对系统软件功能模块进行详细划分,系统软件主要包括显示模块、UI交互模块、虚拟文物存储模块、手势识别模块、虚拟文物控制模块、信息统计模块以及拍照分享模块。同时本文详细阐述了各功能模块的实现过程。最后,为验证虚拟文物互动展示系统运行的稳定性和可靠性,对本系统进行了测试和分析。测试结果表明,虚拟文物互动展示系统功能满足需求,能够安全可靠、高效稳定地运行,达到了预期目标。关键词:虚拟文物,互动展示,深度图像,手势识别WiththedevelopmentofInbeingredefined.Themuseumisacollectionofculturalrelicsonbehalfofthenationalvicissitudesoflifeandprovidethepublicwithhistoricalknowledge,culturornamentalsocialpublicinstiHowever,theshortcomingsoftraditionalmuseumdisplayistoftheculturalrelicscan'tbefullydisplayed,andthetransmissionofinfone-way,theaudiencecanonparticipation.Therefore,itisofgreatsignificancetostudyasetofcomprehensive,Aimingattheshortcomingsoftputsforwardtheconstructiongoalofthevirtualculturalrelicsinteractivedispsystem.Accordingtosomatosensorytechnolovirtualartifactsinsteadofphysicalartifacts,tomobilizethevisitors'enthusiasm,andachievetheinteractionbetweenthevisitorsandthevirtualartifacts.requirementsanalysis,andelaboratesthekeytechnologiesofuserinformationandsomatosensoryequipment,softwaredevelopmentfmadethroughcomparisonandanalysis.Secondly,thisthesisfocutechnologiesofthesystemsoftware.Next,Accordingtothefunctionalrequirementssystemsoftwareincludesdisplaymodule,UIinteractivemoduleandreliabilityofthesystem.Thetestresultssh目录 X注释表 11.1课题研究背景及意义 11.2国内外发展现状 21.2.1数字化博物馆的发展现状 21.2.2人机交互相关技术发展现状 41.3课题研究内容 6 7第2章虚拟文物互动展示系统总体设计 92.1系统设计目标 92.2系统总体架构 2.3系统需求分析 2.3.1功能需求分析 2.3.2性能需求分析 2.4系统软件总体方案设计 2.4.1系统软件总体结构设计 2.4.2系统软件总体数据流程 2.5系统开发平台分析与选择 2.5.1体感设备分析与选择 2.5.2软件开发框架分析与选择 2.5.3数据库分析与选择 2.6本章总结 第3章系统相关技术研究与分析 3.1Kinect体感技术 3.1.1Kinect获取深度图像技术 3.1.2Kinect骨骼跟踪技术 V3.2基于Kinect手势识别关键技术 3.2.1基于深度图像分割提取手部区域 3.2.3指尖识别 3.3本章总结 第4章系统软件模块设计与实现 4.1系统软件功能模块总体设计 4.2显示模块 4.2.1获取用户影像 4.3UI交互模块 4.3.1悬浮按钮设计 4.3.2通过手势选择文物 4.4虚拟文物存储模块 4.4.1数据库的总体设计 4.4.2数据库操作 4.5手势识别模块 4.6文物控制模块 4.6.1虚拟文物在WPF下的变换原理 4.6.2虚拟文物随手势移动 4.6.3虚拟文物随手势旋转 4.6.4虚拟文物随手势放大与缩小 4.7信息统计模块 4.8拍照分享模块 4.9本章总结 第5章系统软件测试与结果分析 5.1测试方案分析与选择 5.1.1测试方法选择 5.1.2测试流程设计 5.2测试环境搭建 5.3测试内容与结果分析 5.3.1显示模块 5.3.2UI交互模块 5.3.4文物控制模块 5.3.6拍照分享模块 5.4软件性能测试 6.1全文总结 致谢 图录图1.1博物馆“通柜”展示方法 1图1.2外部设备数据手套 4图1.3谷歌眼镜 6图2.1虚拟文物互动展示平台 9图2.2虚拟文物互动展示系统总体架构 图2.3体感设备功能用例图 图2.4手势识别功能用例图 图2.6系统软件数据流程 图3.1Kinect红外摄像头视角示意图 图3.2Kinect有效视角场示意图 图3.4人体骨骼点示意图 图3.5手势识别流程图 图3.6Kinect深度图像分割用户示意图 图3.7矩形包围盒效果图 图3.8手部区域提取流程图 图3.9手部轮廓提取流程图 图3.10手部轮廓提取 图3.11点集Q及其凸包 图3.12点集{Q}排序 图3.13利用叉积判断点的转向 图3.14凸包提取流程图 图3.15手部凸包提取 图3.16手部重心到凸包点距离 图3.17基于重心距离和曲率识别指尖流程图 图录图3.18指尖向量示意图 图3.19获得手指个数效果图 图4.1系统软件模块图 图4.2显示模块效果图 图4.5MeshGeometry3D类 图4.6虚拟模型展示效果图 图4.7悬浮按钮控制流程图 图4.8手型图标触发悬浮按钮 图4.9二维坐标点群 图4.11虚拟文物选择界面 图4.12模型状态UML类图 图4.13Transform3D类的继承关系图 图4.14文物控制模块流程图 图4.15二维坐标系与三维坐标系的对比 图4.16平移变换示意图 图4.17虚拟文物随手势移动效果图 图4.18手部旋转角度原理图 图4.19文物模型旋转效果图 图4.20左右手相对距离 图4.21虚拟文物放大效果图 图4.22用户交互信息存储示意图 图4.23拍照交互体验图 图4.24拍照分享模块流程图 图5.1测试环境拓扑图 图5.2互动展示系统实物图 图5.3彩色与深度视频数据的显示 图5.4人体关节点标定 图5.5文物模型显示效果图 图5.7UI交互界面测试 图5.8基于Kinect深度图像提取手部区域 图5.10提取手指个数 图5.11手势识别结果 图5.12未识别到用户手势结果 图5.13虚拟文物模型变换效果图 图5.14虚拟文物模型消失效果图 图5.15信息统计 图5.16拍照分享测试效果图 图5.17不同环境下的用户手势测试对比图 X表录表2.1四种主流体感设备的对比 表3.1手指个数的成功率对比 表4.1OBJ文件中常用的关键字及其参数的说明 表4.2OBJ文件与MeshGeometry3D属性对 表4.3虚拟文物互动展示系统数据库表汇总 表4.4VidUsers表结构说明 表4.8DBHandler类的具体设计 表4.9手势识别协议 表4.10GestureRecognition类的具体设计 表4.11虚拟文物操作协议 表4.12五种常用类的功能介绍 表5.1两种测试方法分析与对比 表5.3不同环境的手势识别成功率 表5.4软件实时性测试 注释表VRVirtualReality,ARAugmentedReality,增WPFWindowsPresentationFoundation,窗口呈现基础PersonalComputer,个人计算机ActiveXDateObjects,数据对象IBMInternationalBusinessMachinesCorporation,国际商业机器公司1第1章绪论文物是中华民族的重要象征,具有很高的艺术、精神、研究、欣赏、历史价一定的参考意义。文物一旦损坏,就永远不能复原。没有众多的文物史迹,文明个选择。文物展示的意义在于让市民了解历史文化、弘扬历史文化知识、传承历史文物精神,展现文物价值,提高地方历史文化地位。另外,文物展示可以吸引游客参观,提升城市文化影响力、竞争力,提高城市品位,方便市民和学者学习传统文物展示长期采用“通柜”的陈列方法,把文物展示出来,如上图1.1所示。这样的展示方式难以全面展示出文物精美外观,无法感受展品结构的精妙,缺乏细节展示。又因为传统文物展示空间的局限性,大部分的博物馆所能展出的藏品占其总珍藏的1%左右[3,文物展示更换频率低。另外,在传统文物展示中,用一块牌子简单的介绍文物所在朝代、文物的品种以及文物工艺等基本信息,不2能把文物涉及到的详细信息呈现出来,观众所了解到的文物信息是片面的、不完整的。市民在参观博物馆时难以近距离观察文物,可以近距离观看的只有文字、图片介绍,因此传统文物展示缺乏生动性、趣味性。由于信息的传递是单向的,要面临的问题有文物细节展示不足、文物展示更换频率低、文物信息展示不完整随着社会的进步和技术的发展,人们的生活水平再逐渐提高,因此人们有更多的时间去关注人类历史文物和新兴技术,所以虚拟文物互动展示的方式正逐渐被人们所接受。与此同时,出现了很多带有VR(VirtualReality)技术、AR 程中,很多具有研究价值的文物受到了一定的损坏,而且还需要用特定的场所去存放和保护,不适合在公共的地方去展出,因此需要使用虚拟文物对破损的实体文物进行替代,让这些文物重新呈现在人们面前。在虚拟文物展示过程中,多媒体技术、虚拟现实技术以及体感技术的广泛应用,增强了文物的生动性和展览的1.2国内外发展现状目前世界很多高校、科研机构和科技公司都在对虚拟现实、增强现实和体感技馆使用最新技术去全面、生动、逼真地展示虚拟文物,打造一个全新的展览模数字技术较早地被美国应用到文物展示中,并在199该计划的主要内容是通过数字技术将国会图书馆的文献资料转换成电子数据,并3在上世纪90年代,欧洲一些著名的博物馆将虚拟文物展示技术应用到了文物展览中。如法国巴黎的卢浮宫博物馆、西班牙马德里的普拉多博物馆以及英国伦敦的大英博物馆等[9]。特别是普拉多博物生动形象的展示在人们面前。普拉多博物馆一方面使用图像技术和数字技术将文物的信息和展示效果通过互联网的方式向世界观众进行全面展示。另一面普拉多博物馆使用建模技术把实体文物转换成虚拟文物,并向观众展示了一些文物的设计方式、内部结构和工艺流程,为观众对欧洲历史文化的研究提供了历史素材0]。这样的展示方式不仅解决了博物馆空间不足和展示内容不完整的巨大问题,而且让参观者详细了解了文物的历史,增强了展示的直观性、趣味性以及互动性。在国内,虚拟现实技术虽然比国外起步晚,但正逐渐受到越来越多的企业和科研单位的重视,并且一些非科研单位也对新技术的应用做出了很大贡献。1990动展示形式已经在我国的各个领域得到了广泛的应用,如应用在医学领域、教育领域、媒体领域以及文化领域等。国内很多博物馆或科技馆在虚拟展示方面取得了很大的进步,比较有代表性的虚拟文物展示的博物馆有故宫博物馆、上海博物馆、南京博物馆、敦煌博物馆、上海科技馆等[12]。这些博物馆通过计算机技术将实体文物进行信息化存储,并通过虚拟技术和3D建模技术将实体文物进行虚拟化。目前台北故宫博物馆已经对大部分文物进行数字化存储,其中70%的珍贵文物完成了3D建模,观众可以通过台北故宫博物馆的平台,随时随地的对虚拟文物进行把玩和观赏。例如,台北故宫使用虚拟现实技术和3D建模技术,虚拟出橄榄核舟,通过投影技术实现观众可以通过虚拟互动的方式把文物展现出来,才能够让观众更深入的了解文物和历史。目前,国内外虽然建立了虚拟文物展示平台,采用投影技术将文物展示出来,但是仍然存在占用空间大、成本高等问题。在博物馆虚拟化发展过程中,如何制定高效的、低成本的虚拟互动平台是迫切需要解决的难题。4人机交互是用户与计算机之间使用某种对话语言,以一定的交互方式,实现交互命令语言阶段、图形用户界面阶段、网络用户界面以及多通道、多媒体的智能人机交互阶段。其中,在多通道、多媒体的智能人工交互阶段,利用人的多种感觉通道和动作通道,如语音、手势、表情等,以并行、非精确的方式与计算机进行交互,可以提高人机交互的自然性和高效性。本节将概述手势识别、增强现实技术的国内外研究现状。1.手势识别在国外,较早的手势识别技术是同过外接设备来实现的,如图1.2所示。该技术原理是通过外部设备来确定人体手部的具体位置以及角度信息,然后利用有线将这些信息发送到计算机端进行分析与处理,从而确定用户手势意思。例如,德国宇航研究中心的Fischer,采用数据手套测量人手关节的角度,利用神经网络确定人手关节与指尖位置,从而进行人手与虚拟手的空间映射[15];美国国家航空航天局的空间中心的Farry通过测量人手运动的肌电信号,进行人手与虚拟手之间的运动映射[10]。虽然数据手套能够得到不错的效果,但价格昂贵而不能广泛运用,另外这种外部设备的接入,违背了人机交互的自然性,从而没有被大众所认可。5最近几年,随着技术的进一步发展,以美国公司为代表开发的自由式无标记手势捕捉,其原理是利用两个高分辨率灰度摄像头、三个红外发射器来捕捉用户在使用人体分割算法对用户骨骼点进行跟踪,在此基础在国内,基于视觉的手势识别方法正逐渐被人们所关注。这种方法是通过摄像头采集彩色图像,然后通过计算机对彩色图像进行分析与处理,最终达到手势特征提取和手势识别。北京交通大学的周航[18提出了一种肤色关联的算法,对手通过计算机技术,模拟仿真后再叠加,将虚拟的信息应用到真实世界,从而实现增强现实技术起源于20世纪60年代,国外一些著名的研究机构美国麻省理工学院、日本和德国等发达国家的实验室以及一些科技公司微软、谷歌等都在对增强现实进行研究。目前,在增强现实领域有了一定应用成果的是谷歌公司研发射屏上,然后通过一块凸透镜折射到人体眼球,实现在用户眼前出现一个虚拟屏幕,屏幕上可以显示出文本信息和各种数据。谷歌眼睛可以很好的与移动电话进行结合,实现用户可以通过虚拟屏幕查看信息,并可以通过语音指令,实现拍摄照片、发送信息等功能。增强现实还被应用工业领域和教育领域。在工业领域,维修人员通过头戴式显示器,对大型器械进行维修和制造。在教育领域,老师可6在国内,增强现实的研究与应用起步较晚。研究机构最初以高校为主,例如华中科技大学、国防科技大学、北京理工大学等在增强现实技术上取得了一定的成果。最具有代表性的是北京理工大学研发的“数字圆明园”,通过增强现实技术将圆明园没有被破坏前的场景显示出来[21]。随着增强现实逐渐被人们所关注,一些科技公司也开始涉及到该领域。例如,常州优趣公司开发的一款手机APP产品“城市镜头”,该平台整合了个城市旅游、娱乐等人们生活中所需的一些信息,并有精准的AR数据导航,为用户提供定位和指引等功能。1.3课题研究内容本课题来源于校企合作项目“重庆杨家坪展览馆开发项目”。本项目的建设目标是打造一个全新的会展模式,用虚拟模型替代实体文物,展示文物的全面信息,并可以通过体感设备和手机APP实现参观者与虚拟模型进行互动。目前,本项目已经进入测试阶段。本课题主要完成虚拟文物互动展示系统的设计与开发工作。根据项目实际需求,采用模块化的设计思想,结合体感设备、计算机网络、数据库等技术,开发一个功能完善、界面友好、模型逼真、快速互动的虚拟文物互动展示系统,具体工作包括以下几个方面:7研和分析。2.分析虚拟文物互动展示系统的功能和性能需求,对系统整体结构进行设计,包括对深度数据的分析、手部区域的提取、手部轮廓的描绘、手部凸包的提取以作手势协议。软件功能模块包括显示模块、UI交互模块、虚拟文物存储模块、手势识别模块、虚拟文物控制模块、信息统计模块以及拍照分享模本课题围绕虚拟文物互动展示系统设计与实现展开论述,通过分析系统的功能和性能需求,确定系统的总体设计方案,完成系统软件各个功能模块的详细设计与实现。本文总共分为6个章节,各章节具体研究内容如下:第1章:绪论。调研本课题的研究背景和意义,分析虚拟文物互动展示平台第2章:虚拟文物互动展示系统总体设计。根据项目应用场景和传统文物展示存在的问题,完成虚拟文物互动展示系统的功能和性能需求分析,依据系统需求分析,设计系统软件的总体结构和数据总体流程。最后按照互动展示软件开发的主流趋势,完成体感设备、软件开发框架以及数据库的选择。第3章:系统相关技术研究与分析。对Kinect体感设备关键技术和手势识别第4章:系统软件模块设计与实现。本章主要对系统软件进行设计,确定系统软件包括的功能模块。阐述系统软件各个模块的功能,再对系统软件模块分别进行详细设计与实现。另外需要提出,本章的手势识别模块具体实现流程在第38第5章:系统软件测试与结果分析。介绍并选择软件测试方法,搭建软件测试平台,对虚拟文物互动展示系统软件各个模块进行测试,并分析测试结果。第6章:总结与展望。对本课题所做工作进行总结,并提出本课题研究存在的不足之处,最后展望虚拟文物互动展示系统的发展方向以及下一步工作。9第2章虚拟文物互动展示系统总体设计虚拟文物互动展示替代传统文物展示,通过虚拟技术、体感技术实现用户与虚拟文物之间的互动。本章依据系统实地应用场景和设计目标对虚拟文物互动展示系统进行需求分析,然后按照系统需求分析,设计软件架构。最后,分析系统开发方案,确定体感设备、软件开发平台以及数据库的选择。传统文物展示存在的问题主要有文物细节展示不足、文物展示更换频率低、文物信息展示不完整等,这些问题导致观众的主动参与性不足,观众无法了解到文物的详细信息,不利于文物知识的传播。针对以上问题,本课题提出设计目标。虚拟文物互动展示系统为用户提供一个使用虚拟文物代替实体文物的交互平台,该平台具有虚拟文物选择区、虚拟文物观赏区、虚拟文物详细信息显示区、虚拟文物互动区,如图2.1所示。在博物馆休息区内,用户可以通过虚拟文物互动展示平台来选择和观赏自己比较感兴趣的文物,查看文物介绍的详细信息,还可以通过平台与虚拟文物进行互动。在互动平台上,用户不用通过键盘或者鼠标作为输入来操作软件,只需要通过手势来控制软件,其中包括通过手势来选择文物、通过手势来控制虚拟文物变换等。虚拟文物展示平台虚拟文物展示平台拍照区虚拟显示用户文物选择区虚拟文物互动展示系统总体设计2.2系统总体架构结合系统设计目标以及客户需求,设计虚拟文物互动展示系统总体架构。如图2.2所示。主要包括体感设备、系统软件和存储服务器。视频数据视频数据系统软件文件服务器数据库服务器用户图2.2虚拟文物互动展示系统总体架构体感设备:与系统软件直接通信。负责采集用户影像、用户深度信息以及人系统软件:负责控制体感设备,并分析和处理体感设备采集的用户数据,形成操作指令响应用户的请求。另外还会将有关数据库存储到服务器存储服务器:包括数据库服务器和文件服务器两种类型,数据库服务器主要虚拟文物互动展示系统通过体感设备采集人体数据以及跟踪用户手部骨骼关节点,系统软件对采集到的数据进行分析,描绘手部轮廓并识别出手势的含义,做逻辑处理后,通过发送指令的形式映射到虚拟文物上,虚拟文物会做出相应的变换。因此在建立互动展示系统时,首先提出系统需要实现的功能,再对系统需虚拟文物互动展示系统总体设计要达到的性能进行分析。本章根据传统文物展示存在的问题以及系统总体架构,虚拟文物互动展示系统主要包括体感设备和系统软件两部分。体感设备负责采集用户人体数据,系统软件负责对人体数据进行分析和处理、对虚拟文物数据进行存储以及用户与虚拟文物进行交互。根据虚拟文物互动展示系统设计的整体系统的关键问题是实现人机交互功能。系统需要“认识”用户的行为,才能感设备采集用户影像和人体数据,跟踪人体骨骼关节点,并能够提供相关的方法将人体骨骼三维坐标转换成平面二维坐标。其次,体感设备还需要提供区分图像中的用户和背景的功能。所以体感设备应具备的功能包括:获取彩色和深度图像(1)彩色图像:体感设备需要具备彩色摄像头,获取用户影像,并在系统软件(2)深度图像:体感设备需要具有获取深度图像的功能。在深度图像中,每一个像素点包括特定的距离信息,系统软件就能获取用户到体感设备之间的距离,(3)人体骨骼跟踪:虚拟文物互动展示系统需要对人体骨骼关节点进行跟踪,并获取手部、脊椎关节点实时三维坐标数据,为用户手势代替鼠标作为输入提供(4)坐标转换:虚拟文物互动展示系统需要将三维坐标转换成平面二维坐标,以便于用户使用左右手控制手型图标移动进而代替鼠标功能,增强交互性体验。a)体感设备功能用例如图2.3所示。虚拟文物互动展示系统总体设计体感设备用户图2.3体感设备功能用例图获取用户影像体感设备用于获取用户影像数据、深度图像数据以及跟踪用户骨骼关节点和虚拟文物互动展示系统软件为用户搭建一个交互界面以及对体感设备所获取的用户信息进行分析、处理和存储。其中包括分析用户数据,对用户手势进行识实现用户手势替代鼠标作为输入,与界面进行交互等。因此,虚拟文物互动展示系统软件应具备的功能包含:显示功能、UI交互功能、手势识别功能、文物控制(1)显示功能:显示功能主要负责将体感设备所采集的彩色图像在界面上显示出来。它是系统直接呈现给用户的场景,显示效果的好坏将直接影响用户的交互体验。另外,显示功能还具有读取虚拟文物模型,并将虚拟文物模型与用户影像(3)手势识别功能:手势是人与人之间交换信息的一种方法。而本课题的“手势”被定义为传递一些简单的指令,而不是交换某些信息、陈述问题或者表达想法。手势识别功能对体感设备采集的用户手势数据进行分析和处理,生成控制虚虚拟文物互动展示系统总体设计(4)文物控制功能:文物控制功能会根据手势识别功能形成的操作指令而做出(5)文物存储功能:文物存储功能用于存储文物模型以及文物详细信息。其中(6)信息统计功能:用户与系统软件之间的互动会产生交互信息,信息统计功能会对用户选择文物、用户操作文物、用户拍照等交互信息进行存储。(7)拍照分享功能:拍照分享功能允许用户通过手势操作的方式对用户与虚拟a)手势识别用例如图2.4所示。手势识别用户图2.4手势识别功能用例图手势识别功能识别用户手势,并形成控制文物模型变换的指令,实现用户与为了保证互动展示系统能够高效、稳定地运行,在要求系统满足功能需求的手势识别精度高,运行时资源消耗量低等特点。本文按照虚拟文物互动展示系统虚拟文物互动展示系统总体设计运行性能:系统的应用场景主要是展览馆、博物馆或者科技馆等。由于这些场所具有很大的人流量,因此系统软件应该响应速度快。根据模型大小,读取速度平均不超过1.5秒,手势识别时间不超过2秒,运行时资源消耗量尽可能低。稳定性:系统需要长时间不间断的为用户提供服务,为确保服务的质量和实时性,系统应具备较高的鲁棒性,能够支持长时间运行,同时具备良好的异常处安全性:系统存储用户信息、文物模型、文物模型存放地址、文物详细信息易用性:用户受教育水平各不相同,尤其应该考虑到用户中的中小学生。为了让用户能够熟练使用系统,在考虑用户体验的基础上,应设计人性化、条理化扩展性:为便于系统进行业务扩展,满足不同场景的应用需求,系统应在基2.4系统软件总体方案设计需要规划系统软件总体方案,为系统提供可靠的软件结构。本节分别对系统软件本课题参考系统的功能需求和性能需求分析,将系统软件分为三层,分别为数据采集层、数据处理层以及用户层,系统软件架构层如图2.5所示。数据采集层负责采集彩色图像数据、深度图像数据和人体骨骼坐标数据;数据处理层负责对体感设备所采集的不同类型的数据进行分析与处理;用户界面层负责为用户提供虚拟文物互动展示系统总体设计显示界面显示界面UI交互3D文物展示主程序手势识别指尖识别坐标变换数据库数据采集层图2.5系统软件总体结构用户界面层数据处理层1.用户界面层用户界面层负责人机交互,为用户操作提供所需的各项信息。其中包括虚拟文物选择区、拍照区、虚拟文物显示区、虚拟文物信息区。用户界面层包括的功能有用户影像显示、UI交互、3D文物模型展示以及3D文物模型变换。(1)用户影像显示体感设备的彩色摄像头采集图像数据,传递到数据处理层,数据层经过处理后,将采集到的图像数据在系统软件界面上显示出来,以便于用户通过屏幕观察自己的姿态和观赏虚拟文物。另外,软件会将用户影像与3D文物模型进行融合更虚拟文物互动展示系统总体设计系统软件实现的人机交互不同于传统的人机交互。传统人机交互是把键盘或者鼠标作为输入,然后响应用户的操作。本课题取消了鼠标作为输入的方式,而采用通过用户左右手的移动方式来操作系统软件界面,识别成功后,软件响应用(3)虚拟文物模型展示系统软件将OBJ文件中的数据读取后,在界面上呈现出来。其目的就是用虚拟文物代替实体文物,为用户提供更方便的观赏方式、全面的展示效果,吸引用(4)虚拟文物模型变换虚拟文物变换功能包含虚拟文物的移动、旋转、放大与缩小。虚拟文物模型的变换体现出趣味性、丰富性、用户的参与性、时效性和艺术性,让用户在参观数据处理层包括手势识别、坐标变换和数据库。数据处理层负责对各种数据(1)手势识别数据处理层会分析和判断体感设备所采集的用户数据,将用户手部从图像中重心距离和指尖曲率算法识别用户手势,根据手势操作协议,生成操作命令。体感设备能够获取人体骨骼三维实时坐标数据,数据处理层使用体感设备提供的坐标转换方法将骨骼坐标转换成平面二维坐标,用于激活并赋值于屏幕手型(3)数据库数据库主要存储用户信息、文物信息、文物模型存放位置、用户操作文物产虚拟文物互动展示系统总体设计数据采集层对整个系统软件的运行有着十分重要的意义。数据采集层位于系本课题对系统中的数据流向做出了详细设计,如图2.6所示。其中矩形框代表创建菜单场景采集-构建中获取3D模型总场景总场景构建拍照分享拍照分享交互图2.6系统软件数据流程具体系统数据流程如下,通过体感设备获取图像数据,其中包括彩色图像数据、深度图像数据以及人体手部坐标数据。彩色数据用于构建系统总场景。手部UI交互根据手型图标变化的结果进行响应并更新界面。手势识别模块处理深度图像数据把用户左右手从图像中分割出来,在通过Graham扫描算法把手部凸包提取出来,最后使用基于重心距离指尖算法和指尖曲率算法确定用户手势含义,3D文物模型会根据手势识别的结果进行响应。图中还有预处理获得的数据,包含虚拟文物模型的读取与显示、软件界面二维图片的读取与显示、虚拟文物模型信息的虚拟文物互动展示系统总体设计2.5系统开发平台分析与选择体感设备的应用都是基于游戏的,而独立使用体感设备在PC上的应用还不是能够在变幻无穷的环境中实时的观察到用户的行为动作,并理解动作含义24]。目表2.1四种主流体感设备的对比类型优点缺点能够通过红外技术检测和跟踪人体的关节点并能够采集完整的深度图像,整个设备趋于成熟,成本低,并提供了很多有用的SDK和样例体感设备体积太大,限制非常高用红外结构光进行投影,分辨率高,稳定,频率低,具有市场上最小的3D摄像头,能够准确辨别手势含义和面部特点,让设备理解人的行为和感情对手掌检测精度不是很高,产品不够成熟,且参考资料有限Xtion利用红外技术对用户实时动作进行捕捉,发者无需编写大量代码来实现某个功能采集的深度数据精度不是很高且图像会出现抖动的情况LeapMotion跨平台,支持的开发语言比较多,能够跟踪手指和手掌,精度比较高检测范围小,手臂容易酸疼,不能检测身体和脸部,也没有彩色摄像头(2)系统需要采集到用户深度图像信息,根据深度图像的特点为手势识别奠定虚拟文物互动展示系统总体设计RealSense设备都可以满足条资料有限,考虑到系统软件的开发难度和兼容性等多方面原因,该设备不适合本及声源输入与定位等技术,实现了用户使用肢体语言代替传统游戏手柄,控制游红外投影机红外投影机状态指示灯深度摄像头彩色摄像头麦克风阵列图2.7Kinect体感设备外部结构深度摄像头、彩色摄像头以及USB线缆。虚拟文物互动展示系统总体设计表2.2Kinect体感设备关键部件关键部件部件功能说明麦克风阵列采集外界声音,同时具有过滤噪音,定位声源等功能红外投影机主动向外发射红外线,如果照射到粗糙的物体表面,会随机形成反射斑点,并被深度摄像头所采集深度摄像头分析与处理所采集到的随机斑点,创建可视区域内的人体和背景的深度图像彩色摄像头采集识别区域内的彩色图像数据USB线缆用于将彩色数据、深度数据、音频数据传输到特定终端,并支持USB3.0接口软件开发框架强调的是软件设计的重用性和系统的可扩展性,以缩短大型应中的第一步,是软件开发成败的决定因素之一。由于虚拟文物互动展示软件是以前台程序的方式运行在计算机上,它需要着重考虑界面的美观和用户易操作性,还需要考虑运行的稳定性以及软件出现异常的自恢复能力,所以在框架选择上着(1)框架需要提供很多窗口类,用于开发绚丽的用户界面。WinForm框架可供选择。三种主流软件开发框架的分析如表2.3所示。表2.3三种主流开发框架的分析框架名称优点缺点可执行文件小,执行代码效率高学习周期长,工作量大,界面不够美观,体积庞大,架构比较过时,支持3D模型显示但需要借助第三方工具虚拟文物互动展示系统总体设计表2.3三种主流开发框架的分析(续)框架名称优点缺点功能强大,开发复杂界面效率极高,异常也处理十分简便,同时支持动画和3D模型显示,另外通过数据绑定使界面与数据分开,不需要为界面编写太多的代码在Windows系统下部署,需要庞大的.NetFramework支持,由于是托管代码,底层采用DirectX,运行效率低,对显卡有一定要求WinForm是一种混合式开发框架,支持分布式部署,且运行速度快,界面体验一般,本地资源访问操作简单可移植性比较差,需要.Net不支持3D模型的显示与变换根据上述框架的对比分析,选择WPF作为系统软件开发框架。WPF支持C#开发语言,因此选择C#语言作为软件开发语言。C#是一种面向对象的编程语言,是对矢量图的超强支持,同时兼容2D绘图,提供支持3D模型显示的类以及3D求是能够动态加载和控制3D文物模型,所以选择WPF作为软件开发框架,符合虚拟文物互动展示系统中的数据库是对用户信息、虚拟文物信息、虚拟文物存储位置等信息进行存储,主要为了向特定用户推送文物信息提供数据支持。根据系统功能需求,为了减小系统开销、提高运行速度,本课题选择小型、轻量级数据库,能够保证高效、快速的存储数据。对四种常见的数据库做出的对比和分析如表2.4所示。表2.4四种常用数据库比较分类特点Oracle数据库具有最优的性能,兼容性好,安全性高通常适用于大型企业,但Oracle数据库体积非常庞大,安装繁琐,没有图形界面,需要借助第三方操作工具,且价格昂贵SQLServer具有易用性、强大的可视化界面、操作简单、安全性高等特点,但SQLServer并发性较差,并且只能在Windows操作系统上运行,适用范围受限虚拟文物互动展示系统总体设计表2.4四种常用数据库比较(续)分类特点Access数据库提供了丰富的开发环境,它界面友好、操作简单、功能全面、使用方便等特点,但在数据库过大或者访问量高的情况下,性能会急剧下降,所以数据库适合应用在数据访问频率低的场合2.6本章总结本章首先对虚拟文物互动展示系统的功能和性能进行需求分析,为系统软件开发提供了理论依据。其次,按照需求分析完成了对系统软件架构和系统软件数据总体流程的设计。最后,系统所需的体感设备采用了Kinect体感设备,数据库采用MySQL,软件开发框架采用WPF框架。系统相关技术研究与分析第3章系统相关技术研究与分析在上一章的功能需求分析中,有两个关键技术需要具体分析与实现。第一个是从图像中提取用户手势;第二个是对用户的手势进行识别。从图像中提取用户手势需要对Kinect采集的深度图像进行分析与处理,而手势识别涉及到Graham扫描算法、基于重心距离和指尖曲率算法,这些算法用来解决手势识别中的关键问题。本章根据系统功能需求,对Kinect体感技术和手势识别技术进行详细研究与Kinect体感技术使人工智能的视觉感知成为现实,拥有和人类相同的三维立体互技术在实际应用领域还是很局限的,主要应用在体感游戏、临床医学、机器人、智能家居等领域。Kinect体感技术还存在很多的缺陷,需要进一步去改进和完善。本系统主要实现用户与虚拟文物之间的互动,通过手势控制虚拟文物的移动、旋转等操作,查看虚拟文物的详细信息,提高用户参观的积极性。为了实现互动功能,需要分析和处理体感设备采集的深度图像,把背景图像和用户进行分割,提取用户手势图像,为手势识别的计算减少工作量。Kinect体感设备提供了获取深度图像技术,主要采用硬件、软件以及有关算法的结合来标注深度图像中的用户。下文对Kinect体感设备获取深度图像的原理进行详细分析。获取深度图像是Kinect体感设备关键技术之一。Kinect有发出、捕获、重现视觉场景的类似过程。Kinect的深度图像技术是由硬件红外投影机和深度摄像头组合去实现的,红外投影机负责主动发出红外线,而深度摄像头负责采集红外信息,投影与接收有重叠区域,如图3.1所示。Kinect能够采集到视野中的每一个点,并将这些点组合成一副能够代表周围环境的深度图像。Kinect的采集图像的速率是每秒30帧,并将图像生成深度图像流,及时地3D再现周围环境。红外投影机红外投影机深度摄像头Kinect能够采集到场景中的深度图像信息,是因为采用一种光编码技术。光编码技术就是用光源照明给需要测量的空间上进行编码,属于结构光技术的一种B¹]。Kinect红外发射器发射一束红外光线,经过散射后会分成多束光线,这些光线投射到场景物体表面会随机形成衍射斑点。这些斑点会随着距离的变化而形成不同的图案,且具有高度的随机性。另外,空间中任意两处的散斑图案都是不同的,当物体距离Kinect红外发射器比较近的时候,红外线发生折射,产生的位移就较小;当物体距离Kinect设备较远时,红外线发生折射,且产生的距离会增大,这时深度摄像头会主动采集物体表面的散斑图案。根据散斑图案的位移变化,通过一些算法计算出物体的具体位置,并转换成深度信息,重建整个三维空间。因此把一个物体放进这个三维空间,根据每个像素点的深度信息,就可以知道这个物体在场景中的具体位置。Kinect体感设备类似于普通摄像头,也具有自己的识别区域,如图3.2所示。默认模式下未知太近Kinect摄像头的正常视距范围在4米左右,最佳的识别范围在2米左右。Kinect最大能取得512*424的深度图像。在深度图像中,每个像素点占有2个字节,也就是16位。其中,高13位代表从Kinect红外摄像头到最近物体对象的距离,低3位代表用户的索引编号[32]。如图3.3所示。在手势识别模块开发中,使用低3位的用户索引编号作为分割用户的判断条件,将用户从深度图像中提取出来。高13位用来作为提取手部区域的判断条件,在用户图像的基础上,将用户手部区域提取出来,为手势识别创造有利条件。虚拟文物互动展示软件不再采用传统鼠标和键盘作为输入,而是将用户左右赋给手型图标。这种方式可以实现用户通过左右手的移动带动手型图标选择虚拟文物,增强互动性。为了实现交互功能,首先要对用户手部关节点进行定位和跟理技术、边缘检测、图像分割等算法将用户从深度图像中分割出来,接着只需要从上面得到的深度图像中分割人体部位,并使用规定的字节编码来标记人体部位每个像素点,这些标记与骨骼关节的实际位置十分接近。通过标记的方式定位每个关节点,然后将这些关节点投射到三维坐标系下,形成实时人体骨架图。当用户走进Kinect的视野范围的时候,Kinect就可以把用户关节点的位置找到,并使用三维坐标的形式来进行表示。Kinect通过全身关节点来表示一副骨架,如图3.4所示。右手腕右肘部右肩右髋右脚脊椎左肩髋部中心左脚图3.4人体骨骼点示意图上两节主要对Kinect深度图像原理、骨骼跟踪原理进行了分析。本课题使用深度图像技术把用户手部信息从图像中进行分割,再使用骨骼跟踪技术对左、右手进行跟踪并获取三维坐标,为手势识别打下坚实基础。3.2基于Kinect手势识别关键技术本系统的手势识别功能是实现用户控制3D文物模型的变换。手势识别的前提工作是要从复杂背景中准确分割出手部区域。手部区域分割的好坏直接影响到手势识别的准确率。手势识别流程是采用Kinect体感设备获取深度图像数据,利用深度图像的特性和阈值分割的方法将用户的手部从图像中提取出来,然后利用相邻像素点的比较提取手部边缘轮廓,接下来使用Graham扫描方法将手部凸包点标记出来,最后在手部凸包的基础上使用基于重心距离和指尖曲率算法的联合检测方法识别出用户的手指个数,并产生识别结果。手势识别流程如图3.5所示。采集深度图像采集指尖检测分割手部区域较手部轮廓从图中3.5可以看出手势识别过程的最重要四步:(1)获取手部区域,(2)描绘手部边缘轮廓,(3)标注手部凸包,(4)指尖识别。系统相关技术研究与分析按照手势识别流程,使用Kinect体感设备获取深度图像,利用深度信息将用户从深度背景中标记出来,然后再提取手部区域。在KinectSDK中,深度图像的每个像素点用2个字节表示,每个像素点的高13位表示物体对象到Kinect设备之间的距离,低3位表示跟踪到用户索引编号。通过低3位用户索引,在应用程序中将用户信息从整个深度数据中剥离出来,如图3.6所示。图3.6Kinect深度图像分割用户示意图从图中可以看到深度图像的某一帧,标记3个像素来进行说明。通过后3位的用户索引编号,可以看出像素点1和像素点2是属于用户像素点,而像素点3则不属于。在软件开发中,通过轮询每一个像素点,利用低三位这个判断条件,将不是用户的像素点剔除出去,只留下属于用户的像素点,就可以把用户从深度图像中提取出来。在后面提取手部区域的流程中,只保留分割出的用户像素点的数据,可以减少计算量。对于手部区域的提取,首先使用KinectSDK对手掌中心进行跟踪与定位,手掌的中心点就是重心点,并获得实时三维坐标。使用三维坐标数据和WPF控件Eclipse把手部重心点用“圆形”来进行表示。通常做手势的时候,用户手部总是习惯性的出现在身体最前方,且与身体保持有一定的距离,用户的手臂长度是确定的,因此用户手部能够到达的距离范围是确定的。而此时用户的手部和身体不在同一个平面内,在深度图像里,身体所在的位置深度信息和手部所在的位置深度信息是不同的,可以利用深度信息存在差异性作为判断条件将手部区域提取出图3.7矩形包围盒效果图在应用程序设计中,以手部重心为中心点创建一个矩形包围盒34],接着只需要分析和处理矩形包围盒中的像素点,为手部区域的提取减少工作量。如图3.7所点到Kinect体感设备的距离相差甚少,所以设置一个距离范围T,在矩形包围盒内以手部重心点位置开始向领域逐个遍历像素点,并计算像素点与相邻像素点深度差是否在T范围内,如果属于T范围内则该像素取值为1,并保存该像素点,如果该像素点不属于T范围内,则该像素点取值为0,直到遍历完所有像素点,最后提取出手部区域二值图。本文基于深度阈值分割提取手部区域的基本流程如图系统相关技术研究与分析开始开始加载深度图像遍历每个像素点YN判断像素点是否属于用户?遍历完成?Y获取手部二值图像结束保存用户像素点定位、跟踪在手部处创建矩形包围盒度差小于阈值T?从手部中心向邻域遍历像素点像素点置为0像素点置为1剔除像素点N图3.8手部区域提取流程图通过Kinect深度信息分割的方法从深度图中把用户手部分离出来,接着需要在手部二值图中描绘手部边缘轮廓,为了方便提取手部凸包,从而减少计算量。手部边缘轮廓提取的方法有很多种,例如有小波边缘检测、边缘检测模糊算法、很多计算机资源,导致虚拟文物互动展示系统软件响应速度慢,影响用户的交互在应用程序中采用了一种简便的方法来进行编码,获取手部轮廓。获取手部边缘轮廓方法的流程如图3.9所示。首先需要逐行遍历矩形包围盒,在程序中设定一个全局整型变量PColor来存储上一个像素点的颜色值,然后每次遍历一个像素点的颜色值与PColor进行比较,如果颜色值相同,说明该像素点不是手部轮廓上的点,忽略该点。如果颜色值不同,则使用WPF的画刷来标记该点,并将该点保系统相关技术研究与分析存到轮廓数组Container中。遍历完成后,得到了一个保存所有手部轮廓的数组Container,作为下一步计算凸包的输入。手部轮廓效果图如图3.10所示。开始开始遍历像素点颜色值相同?遍历完成?Y获取手部轮廓结束图3.9手部轮廓提取流程图图3.10手部轮廓提取接下来对手部凸包进行提取。凸包可以理解成一个多边形,内部包含所有平通过获得的手部轮廓Container数组作为凸点集,手部凸包就是将点集中最外侧的点连接起来组成凸多边形,这样就能包括平面上的全部点。在本课题中,平面点集使用{Q}来表示。如示意图3.11所示,点Po,P₁,P₇,P₁₁,P₁₂组合成的多边形图3.11点集Q及其凸包序中设置一个存放候选点的堆栈,然后把点集Q中的点依次进栈,对于不是凸包时,堆栈中的存放的点就是凸包点。算法的主体由两部分组成,排序和扫描,将分块详细分析其步骤。设定输入点集为{Q},定点个数为N。包上的点,把该点设置为P₀。然后通过计算点集{Q}中各个点相对于点P₀的幅角α,并按幅角的大小对各个点进行排序。点集排序的示意图,如图3.12所示。系统相关技术研究与分析图3.12点集{Q}排序通过点集排序的方法得到点集{Q}={Po,P₁,P₂,…,然后遍历剩下的点P₃,P₄,Ps,……,Px。当逆时针遍历凸包时,每一个顶点应环把发现不是凸包顶点的点移除出去。在系统软件编程中,通过计算两个向量的设点P₁(x₀,y₀)、P(x₁,y₁)、B(x₂,y₂),则PR、PPR是共P₀的两个向量。按照逆时针遍历凸包,计算出叉积d,如公式3.1所示。 如果叉积d为正数,则向量PR在向量PP的逆时针方向,因此,在P₁点处向左转。如果叉积d为负数,就说明向量PR在向量PR的顺时针方向,因此,在点后续的点依次入栈。叉积d为0,说明点P₀、P₁和P₂共线。如图3.13所示。图3.13利用叉积判断点的转向开始开始N遍历完成?Y结束弹出该点图3.14凸包提取流程图系统相关技术研究与分析图3.15手部凸包提取指尖识别的方法有很多种,最常见的方法有基于重心距离的指尖检测、基于本课题将采用基于重心距离和指尖曲率检测方法来进行联合检测,从而确定用户在上节论述的获取手部凸包点方法的基础上,按照顺时针方向遍历手掌重心到所有凸包点之间的距离,并根据距离判定手指个数。重心到凸包点距离的效果如图3.16所示。在软件编程中,使用KinectSDK获取手部重心的坐标。因为指尖是在整个手掌的边缘处,凸包点中肯定包含指尖点,所以遍历所有凸包点到手部重心的距离,并把距离存储到一个数组中,获取的距离值会出现急剧增大然后变的最小值小于重心到拇指尖的距离,最大值大于重心到中指尖的距离,然后判断数组中的距离是否属于该区域C,如果属于则保留,不属于则流程如图3.17所示。有几个距离值就可以代表有几个手指,使用这种方式可以粗系统相关技术研究与分析图3.16手部重心到凸包点距离开始开始定位、追踪手掌重心剔除候选点顺时针遍历重工排序计算峰值数在区域内?遍历是否完成?Y结束图3.17基于重心距离和曲率识别指尖流程图Y选点曲率基于重心距离的指尖检测法根据手部几何特征,粗略的计算手部重心到手掌凸包的距离,这样的方式会经常性的检测到错误的指尖,把手部边缘点当成指尖点,从而导致计算出的手指个数出现错误。所以本课题再采用一种基于指尖曲率的检测算法对峰值点进行求曲率,判断该点是否为指尖点,这两种方式可以有效地弥补各自的不足,基于重心距离的指尖检测可以使基于曲率指尖检测避免凹槽点的问题,后者可以使前者避免检测到错误的指尖点,指尖个数判断流程如上图3.17所示。通过重心距离检测法获取指尖候选点作为输入,然后对候选点求曲率。一般情况下,指尖点位置处的曲率能够达到最大,所以只要判断凸包点的曲率就能判断候选点是否为指尖点。对获取的凸包集合求曲率,为了计算简单,在程序设计中不需要计算出曲率值。假设H(x₁,y₁)是指尖点,并设置一个常数L,在手部轮廓边缘上找到H,点附近前后相隔L个距离的两个点P(xj,y₁)和β(x₂,y₂),如图3.18所示。点H与点P和P₂组成的向量如式(3.2)所示。将向量HP与向量HR组成夹角的余弦值作为点H,的曲率。计算时采用向量夹角公式,如式(3.3)所示。根据反余弦值进行判定夹角α是锐角还是钝角。如果余弦值大于0,则夹角a是锐角,反之为钝角。根据经验可知,指尖点位置处与附近手部轮廓上的两点之间组成的向量夹角肯定是锐角,而除了指尖之外的手部凸包点与附近边缘上两点组成的夹角为钝角,如上图3.18所示。所以根据余弦值作为判断条件,将手部边缘点剔除出去。在程序中,指尖点的个数通过WPF控件Eclipse来进行标注,如图3.19所示,指尖个数效果图。没有使用指尖曲率算法和使用之后的确定手指个数成功率对比如表3.1所示。手指个数/检测次数表3.1手指个数的成功率对比联合检测基于重心距离检测联合检测手指识别误检率%成功率%手指识别误检率%成功率%误检率%成功率%从表中可以看出,采用基于重心距离检测方法的平均识别成功率为87.6%,而采用两种结合的方法的平均识别成功率为94.4%,所以采用基于重心距离检测和指尖曲率检测的方法可以提高识别手指个数的成功率。本章首先根据功能需求分析阐述了本课题所用到的Kinect体感技术,包括包括手部区域提取、描绘手部边缘轮廓、提取手部轮廓凸包,最后采用基于重心系统软件模块设计与实现第4章系统软件模块设计与实现本章在全面分析虚拟文物互动展示系统功能需求的基础上,从互动展示软件结构出发,设计软件各个模块的具体功能和协调关系,最后对软件各模块进行详依据系统功能需求分析,为使系统具有条理分明、各司其责、功能完整的特点,本课题采用模块化的设计思想[39],将系统软件分成多个模块,分别为显示模拍照分享模块。各个模块之间协同合作,构成一套生动有趣的虚拟文物互动展示软件。系统软件的整体模块划分如图4.1所示。拍照分享模块拍照分享模块用户与文物互动信息照片路径存储文物存储模块虚拟文物信息存储虚拟文物的旋转虚拟文物的移动手指的识别手势识别模块左右手识别通过手势选择菜单交互模块悬浮按钮显示模块获取用户影像大与缩小的读取信息统计模块文物控制模块图片获取图4.1系统软件模块图系统软件模块设计与实现2.UI交互模块是负责与用户体感交互的模块。用户根据自己的喜好来选择文及返回区等。其中每一类控件都会用贴图来进行修饰,同时还支持对用户隔空点了手势交互协议,用户做出的手势只有按照协议的规定,才能够被识别,其它模块才会做出响应。识别成功之后,手势识别模块会给文物控制模块发送对应的指4.文物控制模块负责控制虚拟文物的呈现、消失、移动、旋转以及缩放变换。当文物控制模块接收到手势识别模块发送的指令后,虚拟文物会根据对应的指令用来存储文物的编号、朝代、详细信息等数据。FTP服馆可以进行数据分析和数据挖掘,推断出用户的兴趣和爱好,并向用户推送文物4.2显示模块显示模块是整个虚拟文物互动展示软件的核心模块,它是系统软件直接呈现给用户的场景,用户可以通过显示模块观赏喜欢的虚拟文物,所以显示的好坏直接影响到用户的操作体检。显示模块通过Kinect体感设备采集彩色视频流,获取场景中的用户影像,然后通过文物存储模块读取虚拟文物模型,通过改变虚拟模型的坐标值,使之对应到二维影像上,完成三维模型和二维影像的遮挡[40],实现虚实融合,来达到增强现实的效果。显示模块的示意图如图4.2所示。系统软件模块设计与实现图4.2显示模块效果图4.2.1获取用户影像读取帧数据的方法,在某一个时刻询问数据源是否有新的数据帧,如果数据源中存在帧数据,则请求帧数据,没有则返回。使用事件模型时,需要在程序中添加(2)用_sensor.Open)方法打开Kinect摄像头,用来获取视频数据流。(3)定义一个全局的MultiSourceFrameReader对象reader,然后调用一帧视频数据,触发ReaderMultiSourceFrameArrived事件。(5)添加一个Image控件,命名为ImageData,并通过调用对象的AcquireFrame()方法,将获取的彩色数据或者深度数据保存到对应的ImageData对象中。通过Kinect摄像头采集的彩色图像和深度图像如图4.3所示。系统软件模块设计与实现图4.3Kinect获取的彩色图像和深度图像本课题使用的模型文件的类型为.obj格式。OBJ文件是标准的3D模型格式文件。本系统采用后台读取方式实现对OBJ文件的加载,并在显示模块上呈现出来。下问对OBJ文件格式以及在WPF中的动态加载进行阐述。1.OBJ文件介绍OBJ文件是一种文本形式的文件,被应用在3D建模和动画领域,很多建模软(1)一种3D模型文本文件。(3)支持三角形网格面以及多边形格面。(4)支持网格顶点法线和贴图坐标。2.OBJ文件的格式说明OBJ文件可以使用文本编辑器直接打开而不用进行格式转换,还可以对OBJ文件数据进行查看、编辑和修改。在OBJ文件中,注释行用“#”号来进行表示,用来对关键部分进行标注和说明。非注释行是用英文字母进行表示,英文字母是该行数据类型的关键字,所以通过关键字就可以判断每行的数据类型。每行的数据格式为:关键字、参数1、参数2…其中参数是指具体的数据。OBJ文件中常用的关键字及其参数的说明如表4.1所示。表4.1OBJ文件中常用的关键字及其参数的说明关键字关键字说明坐标表示参数说明V表示顶点坐标顶点的x、y、z坐标表示纹理坐标纹理坐标的u、v值表示法向量法向量的x、y、z坐标f表示表面(以三角形为例)三角形三个顶点分别对应的顶点坐标、纹理坐标、法向量的索引3.加载OBJ文件并通过操作FTP服务器判断该文件是否存在,如果存在使用StreamReader类的具体流程为:首先读取OBJ文件,然后对每行关键字进行解析,将关键字后面的类的属性中,最后判断OBJ文件数据是否提取完毕。在应用程序中,判断返回值如图4.4所示。开始开始搜索数据库找到0BJ文件所在位置文件是否存在?入到法向y创建文本数据流对象返回值是否为nul1?文件数据分析获取的首行关键字结束Y获得所有坐标集合和索引信息关键字v关键字vt关键字vn关键字f读取的坐标数据放入到贴图坐标集中读取的坐标数据放入顶点坐标集中量坐标集中获得所有坐标索引读取的坐标数据放接着在应用程序中创建MeshGeometry3D类的对象,将获取的数据集合分别赋值给对象对应的属性中。MeshGeometry3D类的属性结构如图4.5所示。(3)Positions属性获取或设置所有顶点位置的集合。属性对应关系如表4.2所示。表4.2OBJ文件与MeshGeometry3D属性对应关系OBJ文件几何信息法向量集顶点坐标集贴图坐标集坐标索引通过对OBJ文件的读取和解析,得到了一个属性完整的MeshGeometry3D类型对象。得到MeshGeometry3D对象后,需要创建一个三维场景,把3D文物模型(1)Viewport3D对象:呈现二维布局范围内的三维内容。(2)Camera对象:三维场景中需要用一个立体相机。该相机定义Position(位交和透视摄像机。(3)3D模型:3D模型定义场景中一个物体。它包含一个Geometry对象,这个对象是一个网格和一个材质。其中材质可分为漫反射,镜面或放射几种类型。(4)光源:三维场景中需要光源照亮模型,否则模型显示不来。在WPF平台下,可供选择的光源有AmbientLight(环境光)、DirectionLight(平行光)、PointLightOBJ文件读取完成以及三维场景创建好之后,可以在界面上呈现出来。如图4.6所示,图中分别从四个不同的角度展示了OBJ模型。4.3UI交互模块UI交互模块负责用户通过手势控制软件各项操作。为了让用户与软件之间的列表控件,其中悬浮按钮包含返回按钮、菜单按钮以及拍照按钮等。另外本课题对文物朝代列表和文物列表控件设计动画效果,可以在界面上横向出现渐入渐出的效果,提高用户的交互体验。同时UI界面所有的控件都可以对用户隔空操作行用户通过鼠标实现人机交互,以可视化的方式将结果呈现出来。目前用户已经完全接受这种操作方式,它使得用户与计算机之间交互变得非常方便。根据Kinect体感设备的特点,将手部三维坐标数据直接作为输入,通过系统软件的处理,实现带动手型图标的移动来替代传统鼠标的功能。在本系统中,设悬浮按钮是一个普通的Button控件,它有经过、按下和离开三种状态,可以有效地解决意外触碰的问题。用户通过手势与虚拟文物互动展示平台进行交互的过程是:首先使用KinectSDK获取手部和脊椎的三维坐标数据,如果左手的Z坐标值与脊椎的Z坐标值的差值在区域(-0.2,0)范围内,则举起的是左手。同理,如果右手与脊椎的Z坐标差值也在区域范围内,则为右手。然后根据举起的左手维坐标转换成界面二维坐标,并映射到手型图标上,手型图标会随着用户手的移动而在界面上移动。当手型图标没有在悬浮按钮区域内时,手型图标没有任何状态,进入到悬浮按钮区域时,手型图标周围会出现圆形进度条,时间超过2s后,态。悬浮按钮操作流程图如图4.7所示。开始状态开始状态判断手型图标是否位于悬浮区域?开启定时器转换成界面二维坐标是否超过2S?Y启动控制程序到手型图标上获取手部N1.触发悬浮按钮在悬浮按钮设计中,手型图标只要位于悬浮按钮区域内,系统软件就开启响应事件的定时器,自动触发悬浮按钮OnClick事件,而不采用判断手型图标中心点是否位于悬浮按钮区域内。因为用户使用后者方式,会通过手渐渐地移动手型图标去接近悬浮按钮,导致用户手臂酸痛,影响用户体感交互。具体流程为:首先使用Joints[JointType.HandRight]和Joints[JointType.RightLeft]方法来获取左右手的三维坐标,再通过MapCameraPointToColorSpace()方法把三维坐标转换成界面二维坐标,并放入到数组中,最后通过GetWindow)方法来获取Button控件的位置,判断手型图标是否位于Button控件的区域内,如果位于区域内则开启定时器DispatcherTimer.Tick,并设置响应用户操作的时间间隔为2s。另外,在手型图标周围处会出现白色进度条,用来提醒用户正在触发Button按钮。手型图标触发悬浮按钮示意图如图4.8所示。系统软件模块设计与实现图4.8手型图标触发悬浮按钮Kinect每秒会采集30帧的彩色/深度数据,每帧所获取的骨骼三维坐标都是不相同的,因此转换成二维坐标在平面上也不会是同一个点,所以把二维坐标映射到手型图标上,会出现抖动的情况。在系统软件编程中,取出30帧的二维坐标数据如图4.9所示。图4.9二维坐标点群本课题提出采用K-Means方法去解决抖动这一问题。其基本方法为:首先在软件中提取最近的6帧的手部三维数据,然后转换成二维坐标数据。接着在使用K-means方法,随机在图中取1个种子点,然后求出剩余点到种子点的距离,假设点p离种子点最近,那么p点属于点群。接下来,把种子点移动到p点区域。然计算出点群中心的坐标。把6帧二维坐标的点群中心坐标映射到手型图标,可以有效地来解决抖动的问题。具体K-Means方法流程如图4.10所示。图4.10K-Means方法示意图系统软件的UI界面设计可以使用户通过手势很方便地选择自己感兴趣的虚拟文物。首先是将所有文物的朝代进行分类,有清朝、明朝、唐朝等,朝代以图片的形式在UI界面上显示出来。然后当用户选择了某个朝代,这个朝代的文物也是以图片的形式呈现出来。用户可以通过左右手的移动方式,带动手型图标来选择感兴趣的朝代以及朝代里的文物。当触发文物悬浮按钮后,显示模块会把对应的虚拟文物模型显示在界面上,同时信息统计模块会存储用户选择的朝代以及浏览在虚拟文物存储模块中,需要用数据库来存放虚拟文物信息数据,使用FTP服务器存储虚拟文物OBJ文件。构造最优的数据库模式,要建立数据库及其应用本课题根据系统功能需求,抽象了数据库中的必要元素,分别为:用户信息表、虚拟文物信息表、用户交互信息表、照片信息表。用户信息表用于记录用户的相关信息;虚拟文物信息表用于记录虚拟文物的详细信息;用户交互信息表用于记录用户与虚拟模型交互产生的信息;照片信息表用户记录照片时间信息和存放路径。所以根据上述的需求分析,设计数据表如表4.3所示。表4.3虚拟文物互动展示系统数据库表汇总表名描述本表存储用户信息本表存储虚拟文物的详细信息和存放路径Vid_UserAndAntique本表存储用户浏览虚拟文物信息本表存储用户拍照信息和图片存储路径表4.4VidUsers表结构说明字段数据类型为空约束字段含义员工Id(主键)用户姓名用户性别用户地址用户电话表4.5Vid_Antique表结构说明字段数据类型为空约束字段含义文物Id文物名称文物朝代文物详细信息系统软件模块设计与实现表4.5Vid_Antique表结构说明(续)字段数据类型为空约束字段含义文物发展史文物OBJ存储路径表4.6Vid_UserAndAntique表结构说明字段数据类型为空约束字段含义文物Id用户Id文物浏览次数文物操作时间Vid_Picture表结构如表4.7所示,用户拍照表包含字段:图片ID、用户ID以表4.7Vid_Picture表结构说明字段数据类型为空约束字段含义图片Id用户Id图片存储路径虚拟文物互动展示系统采用MySQL数据库存储数据。在WPF中使用ADO.NET方式操作数据库,其中包括读取和写入操作。读取操作包括读取虚拟文物的详细信息、文物存储路径和图片存储路径;写入操作包括文物浏览次数、图虚拟文物存储模块封装了一个DBHandler类来操作数据库,包括对数据库的系统软件模块设计与实现表4.8DBHandler类的具体设计方法返回值mysql_Connection(Stringurl,Stringuser,Stringpasd)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论