




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业论文(科研训练、毕业设计)题 目:三维全景图在配电站中的应用姓 名:学 院:软件学院系:软件工程专 业:软件工程年 级: 学 号:指导教师(校内): 职称: 指导教师(校外): 职称:年 月摘 要目前,电力系统中普遍采用地理信息系统(GIS)实现基于Internet和计算机系统的信息联网,进行配网监控及自动化。其中,基于安全可靠性考虑,对配电站进行计算机监控管理尤为重要。本文以一个三维全景图模拟配电站内部环境为实例,对基于全景图的虚拟现实系统的特点及理论基础进行了简要介绍,主要介绍了柱面全景图的投影和反投影算法,并在此基础上对柱面全景图的实现原理和关键技术进行讨论,最后给出了实例运行的界面及结果,浏览者可在这个虚拟实景空间中进行前进、后退、环视、仰视、俯视等漫游。由于Java语言具有平台无关性和良好的网络功能,所以采用Java Applet来描述其实现。关键词:全景图;柱面投影;虚拟现实;Java Applet AbstractNowadays , the GIS(Geography information system) based on the Internet and computer system is widely used in the electric system in order to minor and automatize the system. Also, we administer the electric system to keep safety and reliability. In this essay, we take an example for a 3D panorama diagram to simulate the virtual realistic and introduce some conception of the panorama diagram. Whats more, what this text introduced to is the arithmetic of cylindrical projection and the born process of a simple 360 degrees panorama diagram. At last, we analyze the interface and the result of it. Browse can carry on the headway, retreat, look around, look upwards, look down etc. to travel extensively in this virtual solid view space. Because Java is a language which is independent of the platform and has a good capability of network function, the example is described in the Java Applet.Key word: panorama diagram; cylindrical projection; virtual realistic picture; Java Applet.目录第一章 全景图的基本概念411 配电站虚拟现实系统412 三维全景图的基本思想513 与传统的虚拟现实环境的比较514 全景图生成的基本过程615 三种全景图像的比较616 本文的主要工作6第二章 360度柱面全景图的正投影和反投影82.1 柱面正投影算法82.2 柱面反投影算法11第三章 以Java Applet实现全景图模拟配电站1231 全景浏览器的JAVA实现1232 线程同步1433 交互式全景图浏览器的设计15321 图片的移动16322 全景显示的图像下载方式17323 图像的移动和放大缩小18324 显示区域的固定19第四章 系统运行结果分析2041 系统具体功能2042 实验结果分析2243 Java Applet与其它软件制作全景图的比较2344 一些改进23第五章 总结24致谢25参考文献26附 录27第一章 全景图的基本概念11 配电站虚拟现实系统 由于电力资源的需求和电力供应可靠性的要求迅速增加,城市配电网现代化日益显得重要。目前,采用地理信息系统(GIS)实现基于Internet和计算机系统的信息联网,进行配网监控及自动化。其中,基于安全可靠性考虑,对配电站进行计算机监控管理尤为重要。在本文中将分析一个全景图模拟配电站虚拟现实系统实例。12 三维全景图的基本思想全景显示技术是目前全球范围内迅速发展并逐步流行的一种视觉新技术,它给人们带来全新的真实现场感和交互的感受。它是一种基于静态图像的虚拟现实技术,实现简单,数据量少,是适合于当前网络带宽的虚拟现实技术之一。全景图是基于图像的水平360度及上下文空间的图形组织环境,它是一种全新的图像信息组织模式,可以表达完整的周围环境信息,相当于观察者从一个固定视点向四周转一圈所能看到的景象。全景图是虚拟现实和计算机视觉中一种重要的场景表示方法。全景虚拟现实系统支持用户在全景空间中前进后退,360度环视,远看,近看等操作。由于全景系统对浏览全景空间的计算机硬件要求低,无需特殊视觉生成设备,场景真实,制作周期短,目前很多虚拟现实系统都通过全景系统开发。13 与传统的虚拟现实环境的比较传统的虚拟现实环境是通过计算机图形学的方法构造的。它首先对真实世界进行抽象,从而建立3D几何模型,一般用多边形表示。在给定观察点和观察方向后,利用计算机实现多边形绘制、着色、消隐、光照以及投影等一系列过程,产生虚拟场景。这种方法有许多不足:(1)需手工创建几何模型,投入的人力物力大。(2)绘制速度与场景复杂度和绘制品质成反比,实时性要求通常将限制场景复杂度和绘制品质。(3)通常需专用3D引擎,昂贵的设备限制了虚拟现实系统的普及。为此,近年来国际上开始流行基于图像绘制(IBR)来构造虚拟空间。虚拟实景空间就是采用这种思路构建的虚拟空间,它利用照相机采集的离散图像或摄像机采集的连续视频作为基础数据,经过图像处理生成全景图像并对其进行空间关联,从而建立起具有空间操纵能力的虚拟环境。虚拟实景空间的好处在于其无需复杂地建模过程,绘制速度与场景的复杂度无关,而且对设备的要求低,普通PC机就可满足要求,这样虚拟现实系统的用户和应用范围就得到了很好的扩展。14 全景图生成的基本过程 全景图生成的基本过程是:将反映各自投影平面的相互重叠图像映射到简单的几何体表面上,如球面、立方体表面或圆柱面,使得平面图像具有深度感,然后对投影图像进行无缝拼接,就可得到没有图像畸变的全景图像。当用户观察某一图像空间时,要将全景图像中相应部分反投影到观察平面上,给用户产生正确的观察结果。全景图像为用户提供了极大的观察自由度,使之可以任意地改变观察方向。15 三种全景图像的比较 根据所映射的几何体,全景图像可以分为球面全景图像、立方体全景图像和360度圆柱面全景图像。球面和立方体表面全景图能够完整地反映整个视点空间,但在局部图像的合成算法方面以及全景图像到观察平面的投影算法方面难度较大,造成处理时间过多。360度圆柱面全景图虽然只能反映视点前后左右的空间信息,而不能反映上下的情况。但在绝大多数时候并不需要所有的信息(例如地面和天空)。同时,柱面全景图像在上述两方面的算法要相对简单,在反投影过程中易于达到实时要求。因此,在虚拟实景空间中,360度柱面全景图像成为最常用的基本实景单元。16 本文的主要工作本文主要介绍了柱面全景图的投影和反投影算法,并在此基础上对柱面全景图的实现原理和关键技术进行讨论,最后引入一个三维全景图应用于配电站方面的实例。由于Java语言具有平台无关性和良好的网络功能,所以采用Java语言来描述其实现。第二章 360度柱面全景图的正投影和反投影360度柱面全景图像的制作分为三步:一是进行局部图像的柱面投影,二是基于两重叠投影图像的像素相关性进行匹配以确定重叠范围,三是无缝拼接。2.1 柱面正投影算法柱面投影就是将图像投影到柱面上,它是一种透视投影而非平行投影,通俗的讲就是要获得从投影中心(视点)这一点上观察图像在柱面上的成像。我们假定,所有的照相机运动都发生在水平面(与柱面的中轴线垂直的平面),而且图像中心点就是光轴与图像平面的交点。如图1,待投影的图像I(ABCD)、投影柱面图像J(ABCD)和柱面K,观察点(投影中心)O。现在是要得到在O点观察图像I在柱面K上的投影影像J。设柱面半径r,投影宽度角为,图像宽度为W,高度为H。我们很容易得到柱面图像的宽度为r*/2,高度仍为H。图像的像素坐标以像素在图像上的位置定义,最左上角像素为原点。设O点所在的水平面为平面O , ABCD面上任一点P与点O的连线与柱面交于点P,P与P在在平面O上的投影为点Q与Q。它们的坐标为P (x ,y),P(x,y),Q(x,2/H),Q (x,H/2) 。注:这里的坐标点是以各自所在的图像的坐标为坐标的,即,图像ABCD以A为原点.为x轴正方向。为y轴正方向建立坐标系,图像ABCD以A为原点为x轴正向,为y轴正方向建立坐标系(图像ABCD是把弯曲的投影图像展平后的图像)。图1 柱面投影由图1-3可得: (1)其中,是P点到Y轴的垂线与z轴的夹角,它可由下式决定: (2)(2)式化简后得到: (3)同样的,见图1-4,因为而: (4)所以,综合以上,我们就得到了柱面投影的变换公式 (5)2.2 柱面反投影算法为了将反映各自观察平面的图像融入全景中,必须把它们投影到柱面上:反过来,又必须把柱面全景在某个观察平面的可见部分进行柱面到平面的重投影,才能得到在该视平面上的正确的观察。其变化是柱面变形的逆过程。同理,我们可以推出柱面投影的反变换公式如下: (6) 第三章 以Java Applet实现全景图模拟配电站下图是以特殊的照相设备拍摄的360度圆柱面全景图像图2 360度圆柱面全景图像31 全景浏览器的JAVA实现在程序设计时,要实现柱面图像与平面图像之间的变换,根本上是图像像素之间的变换。图3 浏览器的Java实现流程首先定义一个类用来显示图像,这里扩展了 Java AWT的Canvas,定义为DisplayCanvas。在该类的构造函数中我们将图像装载,同时设置显示窗口的大小以及鼠标的响应事件。完成圆柱面投影漫游的核心部分主要包括图像的显示,投影计算等,Java小程序要实现Runnable接口,利用线程来实现动画,同时采用双缓冲技术,使动画不会闪烁。下图为以Java Applet在网页上实现的一个配电站全景图的动态显示图4 配电站全景图实例32 线程同步空间操纵时有若干线程在并行地运行,各不同线程之间的同步是系统正常高效运行的保证。线程之间的同步需求体现在两方面:数据访问同步和线程状态同步。数据访问同步包括共享资源的一致性访问要求和数据访问有效性保证。系统中的共享资源包括:观察窗口,局部全景缓存队列。共享资源的访问特点是允许多个线程读访问,只允许单个线程写访问。因此要首先定义资源同步对象的数据结构,把它作为各种共享资源对象的基类。对共享资源的访问,各线程首先要获得相应的访问权限,访问结束后再释放该访问权限,从而保证各线程对共享资源对象的一致性访问。共享对象的访问包括:允许多个读访问,有读访问时禁止写访问;互斥写访问,有写访问时禁止其他读或写访问。共享对象访问的实现基于多种同步对象,各种访问实现步骤如下:1)获取写访问令牌: 等待写互斥量被释放设置共享对象数据无效,禁止新的读访问请求等待当前读访问结束2)释放写访问令牌: 设置共享对象数据有效 允许新的读访问请求 释放写互斥量,允许新的写访问请求3)获得读访问令牌:等待共享对象数据有效等待当前读访问结束 4)释放读访问令牌: 释放读访问信号量数据访问有效性是指线程访问的数据是有效的,为此表现系统应对有访问有效性要求的对象引入人工重置同步事件,在对象数据更新时重置该事件为无效状态,数据更新后再置为有效状态,线程对对象数据的访问必须首先等待数据有效事件,然后进行数据访问。系统中的线程按功能分为两类:用户代理线程 (前台)和数据加载线程 (后台),线程之间的状态同步是指各线程状态的正确转换,完成对用户交互行为的实时响应。用户代理线程始终处于活动状态,监视用户的状态和交互,并唤醒相应的后台线程进行数据加载,后台线程在其所等待的事件到来之前休眠,事件到来后被唤醒进行相应处理,然后继续等待下一次事件到来。33 交互式全景图浏览器的设计全景显示一般是基于B/S架构的,需要用户和计算机的交互,但是在浏览器与服务器的交互往往很困难,因为这不是简单的表单提交,而是涉及到对图片的操作。因此,我们采用了虚拟按钮的技术。所谓虚拟,就是其不是真正意义上的按钮,而是在浏览区域的指定位置内画一个类似按钮的图片叠加在全景图像上。同时图片中的各个小图片必须有一定的位置关系。当用户进行鼠标点击的时候,能根据其位置来决定执行哪个操作。这样感觉上去就像一个按钮。当然这种交互方式只能实现简单的图片移动,移动的速度和方向都受到很大约束,操作起来比较困难,要想实现任意方向任意速度的移动,还得需要使用鼠标交互。鼠标交互的含义是:首先用户在图片上选取一个基准点,按下鼠标,然后移动鼠标,此时图片就能按照鼠标移动的反方向移动,并且图片移动的速度跟鼠标移动的距离成正比关系,图片移动的过程应该是连续的。321 图片的移动图片移动速度可以用公式描述:nextpx=curpx+len*cox(a) , nextpy=curpy+len*sin(a).这里的nextpx,nextpy就是下一个显示的局部图片在原图片中的中心位置,curpx,curpy指的是当前显示的图片在原图片中的中心位置。Len指的是鼠标按下的位置和鼠标当前所在位置的距离,(a)就是鼠标按下的位置和鼠标当前所在位置和鼠标当前所在位置连线与水平位置的夹角。从这个公式可以看出,鼠标当前位置跟按下位置距离越大的话,图片移动的距离也越大,但是要注意的是在左移和右移过程中,必须注意到了图片的左右边界时nextpx的取值。而到了图片的上下边界时应该让nextpy保持不变。为保证连续移动图片,必须采用timer(计时器)来定时显示图片,但是显示的方向和移动的速度不断地随着鼠标的移动而改变,具体来说就是图片移动的速度和鼠标当前位置及按下的位置的距离成正比关系,即与每次移动图片的偏移量成正比。图5 图片连续移动中的三个截图322 全景显示的图像下载方式全景显示的图像下载可以分为先下载所有图像,再在客户端显示的方法和动态的下载局部图像的方式。如果图片比较小的话,那么可以将图片全部下载,然后在客户端显示,这样可以提高显示的速度;如果图片比较大的话,那么可以动态地下载局部图片,缩短等待时间,但是增加了每次显示图片的时间。在本实例中,采用全部下载的方式,使浏览器一次性读入文件数据,这样做的好处是避免了经常性地访问文件,而且文件本身数据量相当小。但是因此,速度较慢,需要出现提示界面使系统友好。图6 加载数据页面323 图像的移动和放大缩小最后在图片显示的过程中,对于左移或右移,应该是循环显示的。而对于上下移动和图片的放大和缩小都有一个限度。上下移动时,移动的界限就是图片的上下边界。而对于图片的放大,从理论来讲,当然是可以放大无穷倍,但是这没有多少实际意义,因为会出现马赛克现象。缩小的倍数同样不能够太太,因为极端地来讲,如果将整幅图片都显示在一个区域内,就没有了身临其境的感觉。图7 放大缩小示例324 显示区域的固定在图片的放大和缩小时,显示的区域应该是固定的,并且显示区域的大小应该为全景图像的1/2-1/4为好,所以首先计算图片的实际大小,然后再计算显示的区域,可以根据实际的显示效果来调整显示区域的大小,标准就是放大或者缩小的过程要有人走近和远离实物的效果,要有身临其境的效果。第四章 系统运行结果分析41 系统具体功能打开文件后,首先显示的是虚拟实景空间自动漫游过程,而且在整个空间的漫游过程中,用户不仅可以按照路径前进后退,还能切换任意选择视点实现信息空间漫游的跳变。漫游的动作有360度环视,俯视,仰视,前进后退变焦距观察和转移,同时对空间中用户感兴趣的物体对象,还能对对象进行操纵或得到进一步的信息。图8 系统运行页面及虚拟按钮下面分别对比两个用户观察的浏览器的截图以及它们相应的柱面全景图的部分,从图中可以明显看出,原先扭曲变形的柱面图已经转换为平整的视平面图。图9 用户观察视平面图与柱面图的对比1图10 用户观察视平面图与柱面图的对比242 实验结果分析本系统能够对全景空间进行浏览和漫游,同时它具有运行稳定,操作简单的特点,对浏览和漫游其它全景图具有一定的实用价值。但其仍有许多不足之处:(1)图像尺寸只有400*300 pixel,无法全屏显示,图像幅面比较小,图像的分辨率比较低;(2)加载速度慢,等待时间较长,主要由于读取图像各点的像素值存入数组中占用了较多的时间;并且程序运行时占用较多的系统资源,显示速度慢,无法加大图像的幅度,改进图像的质量。43 Java Applet与其它软件制作全景图的比较目前主流全景显示可以通过Java Applet, QTVR, Shockwave 3D等来实现.Java Applet相对于其它软件自有其优缺点:(1)优点 用Java Applet制作的全景图最大的一个优点是在浏览器端观看时无须下载插件,文件尺寸小,一般在200K以内。Java Applet是一种最常用的免费全景显示插件。(2)缺点相对其他软件,用Java Applet制作的全景图幅面小,如同样一个场景,用QTVR,Shockwave3D,Imove等软件制作出的幅面可以达到6000*3000P,并且能够在屏幕上高质量全屏显示而Java Applet只能达到1600*800P,在屏幕上的显示尺寸仅能达到500*340像素.另外用Java Applet制作的全景图图像质量差,浏览时有比较生硬的图片感,尤其在进行全景放大后,可以看到粗糙的像素颗粒.在播放时,图像动态显示有跳动感,不连续。44 一些改进目前可以用于做全景图的软件还有Ulead cool360,Flash等,它们各有所长,而不同的软件可能又会用到不同的插件,所以插件泛滥又成为制约全景图发展的一大因素.从目前网络速度出发,全景图比3D图形占了很多优势,但全景图的发展还要从开发统一的浏览插件或者开发集成于主流浏览器的插件上下功夫。第五章 总结本文描述了采用Java Applet实现完成一个配电站实时漫游功能的全景图。我们讨论了全景图的概念, 表现方式,并介绍了制作360度全景图的设计思想以及基本步骤。实践证明该算法结构简单,实现方便,运行效率高,同时对该项目加以改进还可以模拟现场操作的情景,显示各设备状态参数,为实习人员创造了良好的学习环境,减少事故的发生。因此在电力系统中具有较高的应用价值。全景图虚拟现实系统有着非常突出的优点,可以看到,以全景图技术为基础的虚拟现实,表现了一种大范围、空间感的魄力,不同于用数据手套等传感设备建立的虚拟现实,是一种全新的空间信息组织方式。全景图在军事和社会都有很好的发展前景。特别在对室内全景实时处理要求下,是一种高效,可靠的信息采集途径。把全方位视觉运用到机器人导航,运动目标检测和跟踪,智能视频点监控,三维场景重建等领域是很有实际意义的。致谢经过半年的忙碌和工作,本次毕业设计已经接近尾声,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及实习单位的领导员工们的支持,想要完成这个设计是难以想象的。 在这里首先要感谢我的校内外的指导老师老师,厦门亿力吉奥信息科技有限公司的老师,在毕业设计的每个阶段都给予了我悉心的指导。其次还要感谢和我一起作毕业设计的亿力吉奥的员工们,他们在我遇到困难时给予我无私的帮助。 最后对所有在做毕业设计项目中给予支持的人,谨致致谢。参考文献1 李熳,张曙光,刘英. 电力系统中基于多边形与图像绘制相结合的实时漫游. 计算机工程与应用,2003.11.2 宋利,周源华,周军. 一种全景图浏览器的JAVA实现算法.上海交通大学图像通信研究所,200030.3 蒋晶,刘同明. 一种柱面全景图的生成算法. 华东船舶工业学院学报,2004.08.4 徐玮,张茂军,吴玲达.虚拟实景空间的漫游机制及其实现方法. 计算机工程与应用,2004.12.5 潘伟,姚晓静. 一组新的柱面全景图投影公式及其交互浏览器的Java Applet实现算法. 厦门大学学报,2005.07.6 孙立峰,钟力,李云浩,胡晓峰. 虚拟实景空间的实时漫游. 中国图象图形学报,1999.06.7 王晓燕,戴青,郝力.360度柱面全景图像的生成. 解放军信息工程大学,2006.06.8 凌云峰,朱齐丹,吴自新,张智. 全景视觉图像柱面理论展开算法实现及其改进. 应用科技,2006.09.9 全秋燕. 基于全景显示的几种插件的比较. 电脑知识与技术,2006.03.附 录全景浏览器的JAVA实现的主要功能的代码部分:static public theImage= Toolkit. getDefaultToolkit().getImage(“teat, jpg”) ;sw=468;sh= 300;this. mouseMoving=false;addMouselistener(newML( ) ;addMouseMotionListener(new MML( );repaint( );下面是鼠标事件响应的代码:class ML extends MouseAdapterpublic void mouseClicked (Mouse Event e)mouseMoving=true;mx=e.getX( );my=e.getY( );moveX=moveY=0;checkCursor(e. getX( ), e. getY( ) );public void mouseReleased(MouseEvent e)mouseMov
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论