毕业设计(论文)基于图像的风景旅游模拟漫游系统.doc

上传人:laozhun 文档编号:3981248 上传时间:2023-03-30 格式:DOC 页数:34 大小:6.86MB
返回 下载 相关 举报
毕业设计(论文)基于图像的风景旅游模拟漫游系统.doc_第1页
第1页 / 共34页
毕业设计(论文)基于图像的风景旅游模拟漫游系统.doc_第2页
第2页 / 共34页
毕业设计(论文)基于图像的风景旅游模拟漫游系统.doc_第3页
第3页 / 共34页
毕业设计(论文)基于图像的风景旅游模拟漫游系统.doc_第4页
第4页 / 共34页
毕业设计(论文)基于图像的风景旅游模拟漫游系统.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《毕业设计(论文)基于图像的风景旅游模拟漫游系统.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于图像的风景旅游模拟漫游系统.doc(34页珍藏版)》请在三一办公上搜索。

1、目录目录11.绪论41.1 引言41.2 选题背景及意义41.2.1 选题背景41.2.2 选题意义51.3 本文结构及主要内容52 相关知识62.1 OpenGL编程基础62.1.1 OpenGL简介62.1.2 OpenGL的主要功能62.1.3 OpenGL体系结构及工作流程72.2 MFC编程技术92.3 虚拟场景建模技术102.3.1 三维几何建模技术102.3.2 基于图像建模技术102.3.3 基于几何和图像的混合虚拟场景建模技术113 全景漫游系统的设计133.1 系统整体设计133.1.1 系统功能概述133.1.2 系统基本设计方案133.1.3 系统基本框架133.2 系

2、统详细设计143.2.1 全景图的生成143.2.2 纹理贴图184 系统实现与测试224.1 主界面的实现224.2 交互漫游的控制224.3 系统相关测试265 应用前景29结论31致谢31参考文献31基于图像的风景旅游模拟漫游系统摘要虚拟现实技术能够逼真再现现实环境,用户在虚拟环境中通过自然的交互式操作能获得与真实环境相似的感受和体验。全景漫游是虚拟现实技术的一种典型应用。本文旨在设计和开发一个虚拟风景全景漫游系统,该系统不仅能以三维形式逼真再现虚拟图像环境,同时支持用户交互地漫游。论文首先详细分析了各种建模理论和技术,特别全景图像合成技术和三维环境贴图技术。在此基础上,确定了全景漫游系

3、统实现算法和系统框架。最后,利用OpenGL开放图形库和VC+编程工具开发了虚拟图像全景漫游原型系统,实验表明该系统不仅能绘制视觉效果良好且逼真的旅游环境,而且支持用户流畅的交互式漫游操作。此外,就该系统在景点再现,商品房展示等应用领域进行了尝试并取得良好视觉效果。关键词全景图;图像拼接;OpenGL;虚拟风景旅游;纹理映射Design and Implementation of Virtual Campus Panorama Wander-through SystemAbstractVirtual reality technology can verisimilitude reproduce

4、 the realistic environment, in the virtual environment, users can get with a real environment similar feelings and experiences through the natural interactive operation. Panorama roaming is a typical application of the virtual reality technology. This paper aims to design and develop a virtual campu

5、s panoramic roaming system, this system not only can reappear in 3D virtual campus environment form lifelike, not only render good visual effect and verisimilitude reproduce campus environment, and support that the user fluent interactive roaming operations. In addition, applications, such as attrac

6、tions reappear and commodity houses show, of the system have been tried and achieved good visual effect.Key wordsPanoramic Image;Image Mosaics;OpenGL;Virtual Campus; Texture Mapping1. 绪论1.1 引言近年来,随着科技的发展,我们进入到一个新的信息时代。众所周知,计算机已成为信息时代信息处理的主要工具,成为人类与信息空间交流的主要通道。而在这其中,人机交互界面是一个主要的障碍。那如何突破这一障碍,如何扩展人类的感知

7、通道,提高人类对跨越时空事物和复杂动态事件的感知能力,实现人与信息空间自然、和谐的交互。这些都己渐渐成为人类面临的新挑战,而虚拟现实技术是解决这个挑战最有效的方法途径。虚拟现实(Virtual Reality,简称VR)是近年来出现的高新技术,也称灵境技术或人工环境。它借助计算机构建出一个与现实环境十分逼真的交互环境,使用户以自然的方式与虚拟环境中的对象交互,从而产生等同于真实环境的感受和体验。虚拟现实技术己经成为计算机技术中研究、开发和应用的热点,广泛应用于教育、军事、建筑、医疗、工业设计等各个领域。虚拟风景全景漫游是虚拟现实技术在现代教育中的应用,它实现了对风景三维景观和教学环境的数字化和

8、虚拟化,在学校的教学资源管理、环境规划和学校发展等许多方面发挥了重要的作用1。1.2 选题背景及意义1.2.1 选题背景随着社会和科学技术的发展,基于图像绘制的虚拟现实技术已经成为计算机视觉、图像处理、计算机图形学、人工智能研究的热点并得到广泛的应用,可应用于全景漫游系统的实现。虚拟现实(VR)技术最早在20世纪中期由美国VPL探索公司和它的创始人Jamn IJaIlier提出这一概念,后来美国宇航局(NASA)的艾姆斯空间中心利用流行的液晶显示电视和其它设备,开始研制低成本的虚拟现实系统,推动了该技术硬件的进步。目前,虚拟现实技术已获得了长足的发展。在国内,20世纪80年代末开始进行研究,目

9、前还处于初级阶段2。美国作为VR技术的发源地,其研究水平基本上就代表国际VR发展的水平。目前美国在该领域的基础研究主要集中在感知、用户界面、后台软件和硬件四个方面。北卡罗来纳大学(UNC)的计算机系是进行VR研究最早的大学,他们主要研究分子建模、航空驾驶、外科手术仿真、建筑仿真等。Loma lAnda大学医学中心的DavidWarner博士和他的研究小组成功地将计算机图形及VR的设备用于探讨与神经疾病相关的问题,首创了VR儿科治疗法。麻省理工学院(MIT)是研究人工智能、机器人和计算机图形学及动画的先锋,这些技术都是VR技术的基础,1985年M1T成立了媒体实验室,进行虚拟环境的正规研究3。我

10、国VR技术研究起步较晚,与国外发达国家还有一定的差距,但现在已引起国家有关部门和科学家们的高度重视,并根据我国的国情,制定了开展VR技术的研究计划。九五规划、国家自然科学基金委、国家高技术研究发展计划等都把VR列入研究项目。国内一些重点院校,已积极投入到了这一领域的研究工作。北京航空航天大学计算机系是国内最早进行VR研究、最有权威的单位之一,着重研究了虚拟环境中物体物理特性的表示与处理;实现了分布式虚拟环境网络设计,虚拟现实应用系统的开发平台等。清华大学计算机系对虚拟现实和临场感方面进行了研究,例如球面屏幕显示和1.2.2 选题意义VR是一项综合集成技术,涉及计算机图形学、人机交互技术、传感技

11、术、人工智能等领域,它用计算机生成逼真的三维视、听、嗅觉等感觉,使人作为参与者通过适当装置,自然地对虚拟世界进行体验和交互作用。现在,学校为了展示自身风采,越来越重视宣传,需要一种更为直接的方式宣传自己。虚拟现实技术应用于学校,就是虚拟风景旅游,能够全方位地展示学校的各方面环境。本课题在对全景漫游技术探讨的基础上采用基于图像生成每个场景的全景图,从而实现一个中等复杂程度的、具有一定人机交互能力的风景全景漫游系统。本课题运用虚拟现实技术实现风景全景漫游系统,让我们更加逼真的认识了解风景旅游,也能从中了解虚拟现实技术的神奇效果,掌握2D纹理贴图在全景漫游系统中的运用。1.3 本文结构及主要内容在阅

12、读了大量标准文献,对虚拟现实技术及虚拟漫游系统有了较深理解的基础上,本文主要针对目前虚拟风景的特点和存在的问题,提出了基于OpenGL的虚拟风景漫游系统的功能设计架构和实现方法。而且,虚拟风景旅游漫游系统真实地再现了风景旅游的三维景观,可以在三维的虚拟风景中进行自由的漫游,可以实现真实感的交互操作。针对本选题的具体内容,将分成六个部分来介绍。第一部分绪论,这部分主要讲述引言、选题背景、选题意义和本文结构等几方面的内容。第二部分相关知识,这部分主要介绍设计当中所涉及到的相关技术和知识,包括OpenGL图形编程基础、MFC编程技术、全景图生成和虚拟场景建模技术等。第三部分全景漫游系统的设计,本选题

13、的重点。这部分主要分析论述全景漫游系统的整体设计和详细设计,同时给出部分设计思想及代码实现。第四部分,系统实现与测试,这部分主要针对系统的具体实现与相关测试,并写出其核心代码。第五部分应用前景,这部分主要通过具体的应用实例展示本选题的意义,并总结相关技术应用的特点。第六部分结束语,对本设计进行了总结。2 相关知识2.1 OpenGL编程基础OpenGL被定义为“图形硬件的一种软件接口”。从本质上说,它是一个3D图形和模型库,具有高度的可移植性.并且具有非常快的速度。OpenGL严格按照计算机图形学原理设计而成,符合光学和视觉原理,可以创建极其逼真的3D图像。许多三维演示系统都用OpenGL作为

14、三维图形生成和控制的编程接口。2.1.1 OpenGL简介OpenGL是近几年发展起来的一个性能卓越的三维图形标准,它是在SGI等多家世界闻名的计算机公司的倡导下,以SGI的GL三维图形库为基础制定的一个通用共享的开放式三维图形标准。目前,包括Microsoft、SGI、IBM、DEC、SUN、HP等大公司都采用了OpenGL做为三维图形标准,许多软件厂商也纷纷以OpenGL为基础开发出自己的产品,其中比较著名的产品包括动画制作软件Soft Image和3D Studio MAX、仿真软件Open Inventor、VR软件World Tool Kit、CAM软件ProEngineer、GIS

15、软ARC/INFO等。值得一提的是,随着Microsoft公司在Windows NT和最新的Windows 95中提供了OpenGL标准及OpenGL三维图形加速卡的推出,OpenGL将在微机中有广泛地应用,同时也为广大用户提供了在微机上使用以前只能在高性能图形工作站上运行的各种软件的机会。OpenGL是行业领域中最为广泛接纳的2D/3D图形API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL帮助程序员实现在PC、工

16、作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。虽然DirectX在家用市场全面领先,但在专业高端绘图领域,OpenGL是不能被取代的主角。2010年7月26日发布OpenGL 4.1和 OpenGL Shading Language 4.1

17、0。OpenGL4.1提高视觉密集型应用OpenCL的互操作性,并继续加速计算剖面为核心的支持和兼容性第一次推出的OpenGL 3.2,使开发人员能够使用一个简化的API或保留向后兼容现有的OpenGL代码,这取决于他们的市场需求。2.1.2 OpenGL的主要功能OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与Visual C+紧密接口,便于实现设计的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便,效率高。概括起来,OpenGL主要有以下功能: (1)建模功能。真实世界里的任何

18、物体都可以在计算机中用简单的点、线、多边形来描述.OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了比较复杂的三维物体(如球、锥体、多面体、茶壶等)以及复杂曲线和曲面(如Bezier,Nurbs等曲线或曲面)绘制函数,从而可以方便地构建虚拟三维世界。(2)变换功能。可以说,无论多复杂的图形都是由基本图元组成并经过一系列变换来实现的。OpenGL图形库的模型变换有平移、旋转、比例缩放等多种变换。(3)颜色模式设置。OpenGL提供了两种物体着色模式,一种是RGBA颜色模式,另一种是颜色索引模式(Color Index)。(4)光照模型。要绘制逼真的三维物体,必须做光照处理。Op

19、enGL可以控制光照与物体的关系,产生多种不同的视觉效果。(5)凡走样。在OpenGL绘制图形过程中,由于使用的是位图,所以绘制出的图像的边缘会出现锯齿形状,称为走样。为了消除这种缺陷,OpenGL提供了点、线、多边形的反走样技术。(6)融合。为了使三维图形更加具有真实感,经常需要处理半透明或透明的物体图像,这就需要用到融合技术。(7)雾化。正如自然界中存在烟雾一样,OpenGL提供了“fog”的基本操作来达到对场景进行雾化的效果。(8)位图显示和图像增强。在图形绘制过程中,位图和图像是非常重要的一个方面。OpenGL提供了一系列函数来实现位图和图像的操作。(9)纹理映射。在计算机图形学中,把

20、包含颜色、alpha值、亮度等数据的矩形数组称为纹理。而纹理映射可以理解为将纹理粘贴在所绘制的三维模型表面,以使三维图形显得更生动。(10)双缓存动画。出色的动画效果是OpenGL的一大特色,OpenGL提供了双缓存区技术来实现动画绘制。双缓存即前台缓存和后台缓存,后台缓存计算场景、生成动画,前台缓存显示后台缓存己画好的画面。2.1.3 OpenGL体系结构及工作流程OpenGL的作用机制是客户(client)/服务器(sever)机制,即客户(用OpenGL绘制景物的应用程序)向服务器(即OpenGL内核)发布OpenGL命令,服务器则解释这些命令。大多数情况下,客户和服务器在同一机器上运行

21、。正是OpenGL的这种客户/服务器机制,OpenGL可以十分方便地在网络环境下使用。因此Windows NT下的OpenGL是网络透明的。正象Windows的图形设备接口(GDI)把图形函数库封装在一个动态链接库(Windows NT下的GDI32.DLL)内一样,OpenGL图形库也被封装在一个动态链接库内(OPENGL32.DLL)。受客户应用程序调用的OpenGL函数都先在OPENGL32.DLL中处理,然后传给服务器WINSRV.DLL。OpenGL的命令再次得到处理并且直接传给Win32的设备驱动接口(Device Drive Interface,DDI),这样就把经过处理的图形命

22、令送给视频显示驱动程序。下图简要说明这个过程:OpenGL被设计成独立于硬件,以流水线的方式工作,这样可以把OpenGL看成一条生成流水线,原料是场景、物体的顶点、表面细节等信息,产品是看起来有三维感觉的平面位图。在OpenGL中每个物体都是由一组平面构成的,这组平面记录了该物体的表面,需要用户提供围绕平面边缘的线段的顶点参数、平面内图案的位图两组信息,术语称为Vertex(顶点)、(纹理)。显然这些平面越小则绘画出的三维图形越逼真。工作的流程大致如下图所示:工作流程的输入端可以是图象,也可以是几何图形,最终的结果是光栅化后的图象,这些进入帧缓冲区后,由硬件显示在输出设备上。上图中的几何顶点数

23、据包括模型的顶点集、线集、多边形集.图象像素数据包括像素集、位图集等。它们经过各自的操作,在进行光栅化、片元处理后写入帧缓存中。由此可见,OpenGL是通过一些基元如顶点、像素集建模,这种方式易于操作,但建模较为复杂。此外,为增强真实感,OpenGL还提供了光照、视点设置、物体材料特性、纹理映射等其它功能,这就大大地丰富了建模的能力,为开发三维地形可视化应用带来了方便5。2.2 MFC编程技术MFC的英文全称是Microsoft Foundaiton Classes,即微软的基本类库,MFC的本质就是一个包含了许多微软公司已经定义好的对象的类库,我们知道,虽然我们要编写的程序在功能上是千差万别

24、的,但从本质上来讲,都可以化归为用户界面的设计,对文件的操作,多媒体的使用,数据库的访问等等一些最主要的方面。这一点正是微软提供MFC类库最重要的原因,在这个类库中包含了一百多个程序开发过程中最常用到的对象。在进行程序设计的时候,如果类库中的某个对象能完成所需要的功能,这时我们只要简单地调用己有对象的方法就可以了。我们还可以利用面向对象技术中很重要的“继承”方法从类库中的己有对象派生出我们自己的对象,这时派生出来的对象除了具有类库中的对象的特性和功能之外,还可以由我们自己根据需要加上所需的特性和方法,产生一个更专门的,功能更为强大的对象。当然,你也可以在程序中创建全新的对象,并根据需要不断完善

25、对象的功能。正是由于MFC编程方法充分利用了面向对象技术的优点,它使得我们编程时极少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分所需功能,这使得应用程序中程序员所需要编写的代码大为减少,有力地保证了程序的良好的可调试性。下面图2.21和图2.22表示一个MFC方式的程序的主要类之间的关系,是一个程序的整体的框架。图2.21 MFC类层关系图ApplicationObjectDocument ObjectView ObjectFrameWnd Object图2.22 Application Object是全局对象,其他对象动态生成这两个图表示了使用MFC

26、方式的应用程序的四个主要类之间的关系。CMyApp类主要的作用是用来处理消息的,它统一管理程序收到的所有的消息,然后把消息分配到相应的对象。CFrameWnd是CMainFrame的父类,CMainFrame负责视图、工具条和状态条等的显示;CView是CMyView的父类,视图是一个窗口的对象,用户就是通过视图这个窗口对象来与文档进行交互作用的;CDocument是CMyDoc的父类,文档是数据的对象、目标、集合,文档通常是由文件菜单的新建菜单项或者打开菜单项来创建的,并且通常是以文件的形式保存下来。在MFC程序中,程序的数据是放在文档当中的,而显示数据则是利用视图方式,文档与视图分离带来的

27、好处就是一个文档可以同时具有多个视图,每个视图只显示文档中的一部分数据,或者以特定的风格显示文档中的数据。文档与视图分离的另一个好处就是在程序中可以处理多个文档,通过对不同的视图的处理达到对不同的文档分别处理的目的。 传统的Windows编程方法在应用程序中有一个重要的函数WinMain(),这个函数是应用程序的基础,用户的操作所产生的消息正是经过这个函数的处理派送到对应的对象中进行处理。在MFC方式的Windows应用程序中,用来处理消息的是系统自动生成的MFC中的类CWinApp的派生CMyApp6。2.3 虚拟场景建模技术虚拟现实场景中的模型是实际的或想象中的物体或现实的形状再现,建立造

28、型模型是构造虚拟现实场景的基础,模型构造的质量直接影响到虚拟场景的真实感和沉浸感,因此需要根据对象的特点选取不同的建模方法。目前,虚拟现实建模技术主要可以采用三种方式:第一种方式是基于计算机图形学的三维几何建模(GeometryBased Modeling,简称GBM)技术,第二种方式是基于图像的建模(Image-Based Modeling,简称IBM)技术,第三种方式是基于几何和图像的混合建模(Geometry&Image-Based Modeling)技术7。2.3.1 三维几何建模技术基于几何模型的虚拟建模技术,又称为基于计算机图形学的三维几何建模技术,是用数学意义上的曲线、曲面等数学

29、模型预先定义好虚拟场景的几何轮廓,构造虚拟的三维景观中的模型,它是一种传统的构造二维虚拟场景的方法。几何建模技术以计算机图形学为基础,首先对真实场景进行抽象,利用现有的三维造型软件如(3DMax),用多边形对虚拟实体(建筑、树木等)和虚拟环境(地形,天空)的外观进行建模。使用的三维造型软件一般采用图形化用户界面,隐藏了三维实体底层表达形式,以及光照、消隐、纹理等提高真实感的复杂实现过程,使用户在设计过程中就可以从视觉直观地观察物体的具体形状。几何建模建立虚拟场景时建模繁琐,绘制速度和质量与场景的复杂度有关,需专门昂贵的硬件配置。通过几何建模建立的虚拟场景,随着环境的复杂度的增加,会难以满足虚拟

30、现实所要求的实时性,而且在浏览虚拟场景的过程中容易出现画面抖动现象。通过几何建模来建立虚拟世界的虚拟对象的方法通常适合场景复杂度不大,需要实现用户和场景中虚拟对象进行交互的情况,例如零件设计和装配的实现等8。2.3.2 基于图像建模技术基于图像的建模技术(简称图像法)不依赖于三维几何模型,是利用照相机采集的离散图像或摄像机采集的连续视频作为基础资料,经过图像过程生成全景图像,并对其进行空间关联建立起的具有空闻操纵能力的虚拟环境。本设计主要采用这种技术进行场景建模,从而实现虚拟风景全景漫游。该技术基于一些预置的图像(或环境映照)来生成不同视点处的场景画面。同凡何建模、传统绘制技术相比,其主要优势

31、在于:(1)图形绘制的计算量不取决于场景复杂性,而主要与所需生成画面的分辨率有关。(2)预先存储的图像(或环境映照)既可以是计算机合成的,也可以是实际拍摄的照片,而且两者可以混合使用,从而获取很高的真实感。(3)对计算机的资源要求不高,因而可以在普通工作站和个人计算机上实现复杂场景的实时漫游。创建基于图像的虚拟现实场景可按照以下步骤进行:(1)获取模型数据。实际上是一个“实物虚化的过程。它的基本原理是利用摄像或扫描的手段来创建虚拟环境中的事件和对象。原始图像信息一般通过以下三个途径获得:计算机绘制,用全景照相机拍摄,用普通数码相机拍出一系列相互重叠的照片。(2)图像的插补与整合。插补就是利用已

32、知视点的照片,通过插值计算获得另一视点的照片。整合就是将同一视点不同视角下的照片拼接起来,它要求两幅图像具有一定比例的区域重合。拼接的关键在于找到相邻图像的重合部分,常用手工定位(通过拖动鼠标来实现)、自动拼接(是建立在重合区域光强差值为零的原理基础上的)这两种方法实现重合部分的定位。(3)调度与重投影。从计算机储存的一系列全景图中寻找与当前视点相对应的存储视点和全景图,并将沿当前观察方向可以看到的那一部分全景图像送到缓冲区,最后调用重投影模块将其投影到中间平面以便于观察9。2.3.3 基于几何和图像的混合虚拟场景建模技术使用几何建模可以方便地建立以任意角度进行观察的3D空间,但计算量大,对硬

33、件要求较高,对复杂模型的建模过程较为困难。使用图像建模方法创建虚拟场景,可以方便实现实时建模,开发成本低,计算量小且效果逼真,但是需要的资料量较大。将几何建模技术与基于图像的建模技术结合起来,在应用中做到扬长避短,就可以最大限度的发挥这两种技术各自的优点,取得非常理想的效果。使用混合建模技术建立虚拟三维空间时,对于需要用户进行实时操作的虚拟对象利用几何建模技术进行实体建模,也就是对虚拟环境中用户要与之交互的对象进行实体构建,以克服图像交互性不强的问题网,这样既增加了场景真实感,又能保证实时性与交互性,提高用户的沉浸感。对于不需要操作的实体,通过基于图像建模技术来建立虚拟环境,这主要利用了反映真

34、实场景的高质量的图像,在无须复杂建模的情况下取得最真实的感官效果10。混合建模虽然具有各种优点,但在实现过程中也存在很多技术上的困难,主要表现在以下三点:(1)虚拟实体对象(即实体模型)与纯粹虚对象(即二维图像中的对象)之间在虚拟世界坐标系中的坐标位置、摆设方向上要精确匹配。(2)虚拟实体对象几何模型,在虚拟光源照射下所产生的实体亮度、阴影强度及方向与纯粹虚对象的亮度、阴影强度和方向也要准确匹配。(3)虚实无缝连接还要满足实时交互性,即随着用户视角、位置的改变要能立即生成新的视点图像,而且对实体对象的操作要能立即得到反馈。3 全景漫游系统的设计3.1 系统整体设计虚拟风景漫游系统包括一个逼真的

35、视、听、触觉一体化的特定范围的虚拟环境,它是一个真实空间或假想空间的实时仿真虚拟空间,用户借助必要的装备以自然的方式在该虚拟空间中漫游,从任意角度对环境中的虚拟对象进行观察,从而产生身临其境的感觉,漫游其中。3.1.1 系统功能概述虚拟风景漫游系统概括讲主要实现以下二方面的功能:三维场景模型的建立、用户视点选择和控制。设计的思想是选取滁州学院为环境,从中选取几个代表性的场景利用OpenGL进行建模,采用2D纹理贴图的方式绘制场景,最后在MFC程序中实现处理和交互控制,从而实现虚拟风景全景漫游系统。系统基本功能模块如图3.11所示: 虚拟风景全景漫游系统场景模型建立立全景图像获取用户视点控制纹理

36、贴图三维场景组织图3.11 系统基本功能模块3.1.2 系统基本设计方案 虚拟风景全景漫游系统,主要从三维场景建模、建立漫游系统、实现交互功能等方面来考虑。首先按风景环境选取几个典型场景建立模型。然后建立漫游系统,即完成对三维场景漫游控制的设计。最后为系统增加各种交互功能,进一步提高虚拟系统的真实感觉。具体实现过程如下:(1)进行前期需求分析,确定漫游系统的规模、显示效果以及开发平台等。(2)基于全景图建立场景模型,然后进行纹理贴图,并对数据进行预处理矫正,尽量实现真实感效果。(3)设定漫游方式,开发交互功能,实现对虚拟风景的交互漫游。3.1.3 系统基本框架 前面的系统功能分析和设计方案,进

37、而总结出系统的总体框架,如图3.13所示:建模纹理贴图模型模型转 换场景模型全景图初始化场景场景渲染视点控制输出设备外部输入三维场景组织真实感绘制图3.13 系统总体设计框架3.2 系统详细设计3.2.1 全景图的生成 技术是虚拟现实中基于图像绘制的技术, 把一组相互有重叠的照片无痕地拼接成一幅图像。基于图像绘制(IBR)的全景虚拟技术通常绘制快, 不需要复杂的计算, 真实性强, 数据量小, 非常适合在网络传输观看。 全景图则是虚拟现实和计算机视觉中一种重要的场景表示方法, 它可以通过固定的视点, 完成在垂直方向180度和水平方向360度的图像视图, 因其可以无死角的漫游而成为场景重建的首选,

38、 广泛应用于虚拟漫游系统场景的重建。 技术是基于图像的绘制技术中最成熟最接近实用的技术, 主要是通过对图像的拼接, 实现对场景的环视。 通常有2 种方式来获得全景图:直接的方式, 图像拼接的方式。 根据全景图采取的投影平面的不同, 通常将全景图分为3类:球面全景图,立方体全景图,柱面全景图; 其中360度柱面形式的全景图是目前生成虚拟场景的较为理想的选择11。全景图的生成步骤大致分以下几部分:图像采集柱面全景图像的生成必须先使用数码相机对模型实地拍摄不同场景照片。对其进行图像采样。通常使用的图像大部分是采用普通相机拍摄的,拍摄时要求尽量保持相机的水平,避免相机镜头在上下方向上偏转过大;绕垂直轴

39、旋转一周连续拍摄,只要保证相邻两张图像有低重叠度即可。图像拼接图像拼接主要是根据采集到的图像数据中相邻两幅图像重叠区域的相似性来实现的,对图像重叠区域相似性程度的判断方法在全景图拼接过程中是很关键的。目前图像的拼接全景图有很多方法,其中比较成熟的有柱面投影拼接和鱼眼图像拼接。下面重点介绍下柱面投影法生成全景图。假设照相机的运动在x z平面, 图像中心点即为光轴与图像平面的交点。如图2 所示, 设观察点为O, 原始图像为I, 投影后形成柱面图像为I,图像宽为W,高为H,图像最左上角象素为原点,柱面半径为R,投影角度为(如图3 所示), 其中W和H可在图像获取后得到P(x,y) 是原始图像I上任一

40、象素点,可求出P点在圆柱面上投影点, 即在投影图像I上与P 点对应象素点Q (x,y ) , 其算法如公式(1): 其中f 为相机焦距, 取f 为圆柱面半径R , 则由图3 可得R 为: R =W/2tan(/2)。投影后宽度为W, 则有W= 2R sin(/2)可得柱面投影变换后为公式(2)12。 图像拼接主要是根据采集到的图像数据中相邻两幅图像重叠区域的相似性来实现的。如图4所示, 相交特征线段匹配是将左边图像中的相交特征线段作为模板, 在右边图像中搜索最佳匹配, 限制特征线段的搜索范围为两幅图中的阴影部分,利用特定的评价函数来寻找特征行和列。图 4因为2条相交直线可以确定1个平面,图4中

41、左边图像中的相交线段代表模版A, 因此由左边图像中模板A的位置和右边图像中与A相匹配的交叉线段的位置,可定位出左边图像和右边图像的相对位置,从而可确定出2幅图像的相对平移参数.在左边图像中从上到下依次用上一行和下一行相比求出f,然后比较f 0 与最小的f 对应的行即为最大特征行,用同样的方法也可求出最大特征列,由最大特征行和最大特征列构成的特征模板A. 其中评价函数定义为: 对于对应的行或列的每一对对应点p和q :其中: (3) value表示所取像素红、绿、蓝分量的值p ( x ) ,q( x )表示p点、q点相对应的像素分量值,r, g , b依次对应红、绿、蓝色。其中dr表示对应像素红色

42、分量差值的绝对值;dg表示对应像素绿色分量差值的绝对值,db表示对应像素蓝色分量差值的绝对值。 基于特征线段的图像拼接算法拼接而成的图像中有时候会含有清晰的边界, 图像拼接的痕迹非常明显。为消除这些影响, 实现图像的无缝拼接, 必须对图像的重叠部分进行平滑处理, 即将两幅图像配准之后进行融合。 图像融合就是指将图像进行空间叠加从而增加信息量的过程, 本文采用渐入渐出加权平均的方法实现图像平滑过渡。 设两幅待拼接图像I1(i,j)和I2(i,j), 则融合后的图像像素I可表示为: 其中,a取( 0, 1) , 由上式可以看出, 当a由1渐变到0 时, 图像从I1(i,j)平滑过渡到了I2(i,j

43、),这样就可以消除拼接的痕迹。在以上完成以上步骤后就能得到虚拟风景场景柱面全景图。 图3.21 合成前的一组图像图3.22 合成后的全景图3.2.2 纹理贴图 纹理贴图技术又称纹理映射技术,是计算机图形学中广泛应用的一项重要技术。传统的几何造型很难描述景物表面的微观细节,而利用纹理图像来描述景物表面各点处的反射属性,可以达到模拟景物表面丰富的纹理细节的目的,从而提高计算机生成图形的真实性。另一方面,采用纹理映射的方法可以大大地简化建模的过程。 纹理映射是将制定图像的一部分映射到允许进行纹理映射的每个图段上。这种映射伴随着使用一幅图像的颜色到某一图段的(s,t,r)坐标所指示的位置上并修改该图段

44、的RGBA颜色。概括地说,使用纹理绘制的一般步骤为:定义纹理贴图、控制纹理、说明纹理贴图方式、定义纹理坐标等13。定义纹理一般来说,离散法是比较常用的纹理定义方法,其实现函数为:gl_Texlmage2D()。该函数的原型如下:void glTelmage2D(GLenum target,Glint level,GLenum components,GLsizei width,GLsizei height,Glint border,GLenumformat,GLenum type,const GLvoid4pixels)。其中:target指定纹理映射,此处必须是GLTEXTURE2D;Jeve

45、l指定纹理图像分辨率的级数,当只有一种分辨率时,level=0;Components是选择用于调整和混合的成分;width和height分别指定纹理图像的宽和高,必须是2n,n为正数;Border为边界的宽度,必须是0和1;format和type分别指定纹理映射的格式和数据类型;Pixels指定一个指针,指向纹理数据在内存中的位置。控制纹理纹理图像在映射到物体时会产生许多问题。这些问题主要有纹理图像的纹理怎样对应到屏幕上的像素、怎样通过纹理贴图实现纹理缩放和纹理重复等。其实现函数为glTexParameter(),该函数的原型(以glTexParameterf形式为例)为:void glTex

46、Parameterf(GLenum target,GLeHum pname,GIAloat param),其中target参数为目标纹理,pname参数的取值有以下几个:GL_EXTURE_MIN_FILTER、GL_TEXTURE_MAG_FILTER、GL_TEXTURE_WRAP_S、GL_TEXTURE_WRAP_T,而param参数的取值要根据pname而定。1、 纹理贴图模式 OpenGL用于纹理贴图方式的函数为glTexEnv(),该函数的原型(以glTexEnvf形式为例)为:void glTexEnvf(GLenum target,GLenum pname,GLtloat p

47、aram),其中target参数必须为GL_TEXTURE_ENV,pname参数必须为GL_TEXTURE_ENV_MODE,而参数param为GL_MODULATE、GLDECAL或GL_BLEND。2、 定义纹理坐标 纹理坐标控制纹理图像中的像素怎样映射到物体。纹理坐标可以是1、2、3、4维的,通常用其次坐标来表示,即(s,t,r,q)。OpenGL定义纹理坐标的函数为glTexCoord()。该函数共有32种不同的形式。例如:gl_TexCoord4f(0.0f,0.0f,0.0f,0.0f) 14。纹理贴图其实现代码如下:namespace OGL class CCylinder float m_Radia;/圆柱半径float m_Height;int m_Slice;/圆柱由m_Slice个划分CGLTexture *m_pTexture;/圆柱使用的一个全景纹理图public:CCylinder():m_pTexture(NULL)m_Radia =1

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号