基于数字摄影测量的虚拟地形生成技术
概述 虚拟现实是一种由计算机生成的高级人机交互系统,是计算机图形图像技术与人类认知理论相结合的一个高新技术领域。其实质是利用计算机生成一个以视觉感受为主,也包括听觉、触觉、嗅觉的可感知的环境。数字摄影测量是基于摄影测量的基本原理并运用计算机技术、数字图像处理、计算机视觉、模式识别等多学科的理论与方法,从影像中提取所摄对象用数字方式表达的几何与物理信息的一门学科。
在许多模拟人类活动的虚拟现实应用中,虚拟地形环境的建立是一项十分重要的基础性工作。由于虚拟地形环境所面临的是海量的地形数据和地面纹理数据,因此利用这些地理空间数据建立一个逼真的、立体的、可交互的虚拟地形环境并实现具体应用是一项复杂的工程。近年来,一方面航空航天遥感技术和数字摄影测量技术的迅速发展,使得从遥感立体图像中自动获取数字高程模型(DEM)并制作数字正射影像已经成为现实。国际上许多数字摄影测量系统中有关DEM自动提取和数字正射影像自动生成的技术已经成熟,这为地形环境虚拟现实研究提供了直观真实且现势性强的基础数据;另一方面,计算机及其相关技术的飞速发展为我们带来了高速运算的CPU,大容量的内存和硬盘,高性能图形加速显示卡以及基于计算机的立体观察设备,为虚拟现实所必须的海量数据计算和图像的快速实时动态立体显示提供了保证。上述两方面的结合为地形环境虚拟现实的研究与应用带来了前所未有的机遇,也必将促进地形环境虚拟现实技术及其应用的进一步发展。有关DEM自动提取和数字正射影像自动生成的原理在文献中已有详细论述,本文着重论述利用DEM数据和正射影像,运用OpenGL构造真实三维地形模型的有关原理以及在PC机上实现动态立体显示的有关技术。
1 利用OepnGL构造真实三维地形模型的原理及方法
利用DEM数据和地面纹理数据构造三维地形模型是地形环境虚拟现实中的关键步骤。近几年来,随着计算机技术和计算机图形学的飞速发展,IBM公司、DEC公司、SUN公司、HP公司、Microsoft公司和SGI 公司在GL(Graphics Library)的基础上联合推出了新的三维图形标准OpenGL,并迅速得到了广泛的认可与运用。OpenGL实际上是一种图形与硬件的接口,它独立于硬件设备,窗口系统和操作系统。OpenGL所具有的模型参数设置、纹理映射、自动消隐、双缓存、显示列表等多项功能为逼真三维模型的构建与显示创造了条件。DEM数据可通过数字影像的自动相关来获取,而正射影像则可以运用数字摄影测量中的数字微分纠正和影像镶嵌技术对遥感影像进行处理而得到。利用OpenGL构造真实三维地形模型的原理如下:
1) 基础数据的准备与预处理。DEM数据一般采用规则的格网格式, 这有利于数据的存储与计算。但是地形起伏不大的区域(如平坦地区或水域),规则格网格式的DEM中将会存在大量的冗余数据,直接影响到三维模型构造和纹理映射的运算速度,因此从规则格网DEM数据中提取最能表示地形起伏特征的重要格网点来简化DEM数据就显得十分必要,然后再以重要格网点为基础构建TIN 三角网或方格网来表示地形。对于数字正射影像,则需要用数字图像处理技术来改善影像的质量,以有利于在立体观察中获得最佳的视觉效果。
2) 基本参数的设置与计算。三维地形表面的顶点坐标由DEM数据确定。根据格网顶点的坐标计算出每一格网面的法向量值用于产生地形表面的明暗效应。在用 OpenGL绘制三维地形模型和进行纹理映射前,需要用专门的OpenGL函数设定相关的参数。其中包括光照方式、光源位置、颜色模式、明暗处理方式、纹理映射方式等。在此基础上设定视点和观察方向的初值,再分别运用OpenGL的模型变换函数、投影变换函数以及视口变换函数进行模型变换、投影变换和视口变换,将三维地面坐标转换成计算机屏幕坐标,并运用OpenGL所具有的Z缓存自动消隐功能就能构造出三维地形模型。
3) 真实纹理映射。用正射影像进行纹理映射是建立逼真虚拟地形环境的重要手段。纹理映射的基本思路是把正射影像“贴”到由DEM数据所构成的三维模型上。
用OpenGL函数进行纹理映射的基本步骤为:
(1) 定义纹理:用glTexImage2D*()函数说明所映射的纹理内容。其中包括纹理数据的指针、纹理的大小、纹理的类别(灰度或彩色)等。
(2) 纹理控制:说明纹理以何种方式映射到三维模型表面上。OpenGL提供了多种映方式,其中包括纹理滤波、重复与缩限,其调用函数为glTexParameter*()。
(3) 说明纹理的映射方式:在纹理映射过程中,可以用纹理来调整三维模型的颜色或者将纹理与三维模型原来的的颜色进行融合,其调用函数为glTexEnv*()。
(4) 定义三维模型顶点的纹理坐标与几何坐标,绘制场景:几何坐标决定了顶点在屏幕上的绘制位置,纹理坐标决定纹理图像中哪一个纹素赋予该顶点,其调用函数为glTexCoord*()。
通过三维地形模型构造和真实纹理映射就可获得十分逼真的三维地形景观图,其基本流程可用图1来表示:
2 基于PC计算机的实时动态立体显示技术
三维立体动态显示是虚拟现实中的关键技术。由上述方法在计算机屏幕上所生成的三维地形景观图实际上是一个2.5维的景观图,只有在引入动态立体显示技术后,观察者才能真正感受到虚拟现实所具有的强烈的临场感和亲自控制的参与感。
目前,三维复杂模型的动态显示,从技术上按照由易到难的顺序,可以分为三个层次:第一是逐帧计算图像、逐帧显示图像、逐帧记录并连续播放;第二是逐帧计算图像,将结果存放在计算机内存中,计算完毕后再连续显示并连续记录。尽管这种方法避免了逐帧记录的麻烦,但是和第一个层次的方法一样,图像仍然是逐帧计算的,并不要求实时计算。对于以上两种方法,由于图像都是逐帧计算好的,因此,在动态显示时,视点和观察方向不能改变,因而使漫游的灵活性受到限制。与前两个层次不同的是,在第三个层次中,图像是根据视点及观察方向实时计算、实时显示的,因而,可以做到对三维复杂环境漫游的实时交互控制,使漫游的灵活性不受限制。这就是三维复杂模型的实时动态显示,也是本文所采用的方法。
我们知道,形成人工立体视觉必须具备下列条件:
1) 所观察的两张像片必须有一定的左右视差;
2) 两眼必须分别观察一张像片(即分像);
3) 像片所放置的位置必须使相应视线成对相交(即消除上下视差)。基于上述考虑,如果在计算机显示屏上沿水平方向交替显示左右两幅视图,并且使观察者的左右两眼分别只能观察到左右视图,则就可以产生立体视觉。产生上述条件的方法较多。本文介绍的是利用液晶眼镜,在显示屏与观察者之间分别设置一个像场遮光同步快门,该液晶快门受逻辑控制电路控制。逻辑控制电路的同步信号取自于计算机的显示接口。在显示屏显示左视图期间,打开左眼液晶快门并关闭右眼液晶快门;在显示屏显示右视图期间,打开右眼液晶快门并关闭左眼液晶快门,从而获得立体视觉。
采用上述方式时,显示卡必须能够先后交替显示左右视图,并且有足够的显示内存以容纳高分辨率的彩色图像和为实现图像漫游提供所必须的空间。为了克服图像闪烁,所采用显示器的显示帧频为120Hz。在本文研究过程中,具有左右视差的两幅视图的实时显示是通过软件来控制实现的。在立体显示过程中,用鼠标和键盘操作来实时更改视点位置和观察方向以实现对地形环境漫游的交互控制。整个立体显示过程可用图2来表示。
3 实验与结论
按照本文论述的原理和方法,利用DEM数据和数字正射影像,我们成功实现了基于微机的地形环境虚拟现实研究。本文实验是在PentiumⅡ计算机 (CPU 233MHz×2,内存128M,硬盘8.0GB,AGC-GL Pro图形加速卡)上进行的。操作系统为Windows NT4.0,开发语言为Visual C++5.0。通过实验可以得出如下结论:
1) 利用OpenGL生成三维地形景观图,可以避免大量的数据建模运算,因而具有很快的生成速度。当正射影像为4M,DEM为100×100格网,屏幕分辨率为1024×768时,立体影像显示帧频达20帧/秒,可满足实时动态观察的需要。
2) 在立体观察过程中,通过改变模型旋角,能实时实现多视角条件下的虚拟地形观察,如图3所示;通过交互改变视点位置能实现三维地形的实时缩放与漫游,并能实时模拟沿线观察和飞行通过某一区域,真正具有很强的临场感和参与感。
声明①:文章部分内容来源互联网,如有侵权请联系删除,邮箱 cehui8@qq.com
声明②:中测网登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。
加群提示:我们创建了全国32个省份的地方测绘群,旨在打造本地测绘同行交流圈,有需要请联系管理员测小量(微信 cexiaoliang)进群,一人最多只能进入一个省份群,中介人员勿扰