探地雷达信息三维可视化研究浅论
2022-09-07蔡仁濂
蔡仁濂
(大连交通大学计算机和通信工程学院 辽宁 大连 116000)
0 引言
我国提出探地雷达至今,探索工作已经十余年,而如今的仪器也日益商品化,因此亟需对可视化方法进行针对性探索。可视化技术是把复杂的数据通过成图形为使用者提供了一种直观的视角并审查处理后的结果,但因为探地雷达信息量过大,其三维可视化方法还存在着程序有效性、代码复用性等主要问题。根据中国探地雷达的特点,很有必要运用软件开发思路和计算语言,研制出功能强大的回波数据处理系统软件。
从可视化方面来说,国内外主要有中国地质大学(武汉)的MAGS和武汉中地数码科技有限公司的Mapgis,两者都是我国地理信息科学的重要代表;国外企业如Geosoft和澳洲Encom集团的Modelversion,在工程可视化领域也做得非常优秀。
本文使用了网格文档的输入文档格式,在对球体建模使用VC和MATCOM混合编程语言和OpenGL的基础上,对探水雷达科技的三维数据可视化技术开展了深入研究,对探水雷达科技数据进行三维立体图像的描绘,并对三维立体图作切片、旋转、分层显示等操作。
1 三维可视化概述
近年来,电脑图形学上有几个热点,第一是电脑可视化,第二是电脑视频,第三是虚拟现实,三维图形显示是其核心竞争力。二维雷达剖面的局限性较强,三维可视化可以用来解决这种局限性。一般来说,在研究人员分析相同区域的剖面时,需要从各个角度观察各个剖面,并得出分析结果,这样三维可视化才拥有勘测地下目标体结构的功能,这种功能的整体性较强,可以从各个角度,各个层面出发来勘测地下目标体,还可以发现没有被二维剖面发现的细微特征[1]。如果从探地雷达的角度出发,那么识别线性才是三维可视化的特点。若在勘测地区中,存在一些线状连续物体,例如混凝土、电缆等,那么三维可视化可以轻松地识别它们。
随着电脑绘图技术发展得越来越快,三维显示技术也越来越完善,而在社会上也产生了更多的三维建模开发语言以及建模软件。OpenGL、Direct3D等都是使用频率较高的三维开发语言,各有各的特色,有些是针对用户,有些是针对文件格式。现阶段,较为完整的三维图形标准便是OpenGL,其研发公司为SGL。因为PC机性能越来越高,因此,通过OpenGL来开发性能比较高的图像产品的难度也会降低。
2 OpenGL工作原理
2.1 Windows下的OpenGL工作原理
设备启动接口为Device Drive Interface,即DDI,而其中的绘图启动接口为Graphics Drive Interface,即GDI,是一个Windows绘图程序使用的接口,使用软件,比如画笔、画刷等来描绘图像,是工程师们最先要思考的问题。因为Windows操作系统中如果采用了OpenGL,就相当于采用了一种完整的绘图程序模型,程序员就能够分解三维画面,通常情况下都是分解多边形比如三角形等等。之后OpenGL通过光照、纹理等数据来计算,并根据计算的结果为图片上色,在开发工具交互场景的时候,主要通过一些成熟的应用程序,例如VC、VB等。
它和图形硬件的相关程度也不高,它的本质是应用程序接口,也就是API,其中的变量只有200个左右,而利用这200个变量所开发出的三维景象,同真实世界特别接近。OpenGL可分为以下几大类。
(1)核心函数:目前总共有115个最常用的核心函数出现在OpenGL中,前缀都是gl,在任何的OpenGL系统中,都能够用到这些函数。图形绘制、场景变换、纹理映射等都可以通过核心函数来完成。因为核心函数支持使用其他函数,所以其有300多个函数可供使用。
(2)实用函数:这种函数的等级要求略高于内核函数,但由于它重新构建并封装了核心变量,因此提供了更加简单的功能,从而大大减轻了开发人员的负担,共计43种前缀为glu的实际变量,所有的OpenGL平台中都可以使用这些函数[2]。纹理映射、多边形划分等都是实用函数的应用范围。
(3)辅助函数:这一类功能比较特殊,总共包括了31个前缀为aux的辅助参数,目前所有的OpenGL系统暂不能够使用此类功能,其常用在Windows应用程序中,一般用其来管理函数窗口、绘制三维实体等。
(4)专用函数:它是由两个函数所构成的一个函数,其前缀为wgl和Win32API函数,个数分别是6位和5位,在Windows平台中针对较主要的平台,一般使用它来进行opengl的应用程序。前者直接连接了Windows的OpenGL,主要功能是初始化窗口,支持通过OpenGL绘制窗口;后者负责交换缓存以及处理像素存储格式。
三维效果的渲染:首先,OpenGL通过RGBA和索引模型来实现对模型颜色的指定。还支持配合明暗处理以及平滑明暗处理,也就是Flat和Smooth,这样渲染出来的颜色与现实世界更加贴近。之后,它还可以提供光线以及材质,使得三维建模更为接近于真实物体。OpenGL支持4个灯光模式:放射光、环境光、镜面光、漫反射光。而在定义材质的时候,可以依照不同性质光所表现出的反光特征来建立不同的模型表面,以完美的方式匹配光线,呈现出质量更高的渲染效果[3]。
2.2 OpenGL用于三维场景表达
经过设计之后,OpenGL的硬件,运行过程为流水线,见图1。图形和几何图形都是作为输入输出端,在通过光栅化以后的图像就是最后的传输结果,而图像在通过帧缓冲区以后,再通过硬件到现在的输出设备上。如图1所示,顶点集、多边形集等都包含在模型中,图片集、位图集等也包含在图片信息里面。进行了光栅化、片元管理等工作之后,保存到了缓存中,从这里我们可以得知,其通过以顶点或者是像素建模为主的基元,虽然简化了操作步骤,但提高了建模难度。
经过各种变换,通过几何基元得到的场景才可以真正地在屏幕上显示出来,图2是整个转换过程。除此,OpenGL还利用光线、图像的特征等信息来增强其真实感,这也降低了开发三维图像的可视化难度,提高了建模能力。
2.3 三维场景和二维图像的融合
由图1可知,通过OpenGL技术能够更好地融合三维图形与二维图像,从而创造了一个崭新的融合机制。该融合机制一方面读取了图形数据以后,再通过数据加工形成合理的纹理图像,最后再从模型上反映出来,这样产生的三维场景的真实性会比较强,也就是纹理映射。另一方面则是支持操作帧缓存数据,也就是Framebuffer,其可以将图像变换成一个像素块,然后在三维空间中选取一个平面,将其融入进去。在摄像机摄取视频图像的时候经常会使用这种方法,AVI或者VCD都是摄取视频图像的文件格式,MJPEG以及MPEG是压缩标准。
利用映射来把R二显示在R三维上的某一物体上,这也叫作纹理映射。从物理观点来看,双变量纹理方程,也就是t(u,v)一般用于描述二维纹理,像是可以用长峰波函数来表示纹理函数。还有一些纹理,没有明显的规律性,找到合适的数学函数的难度较大,因此在表示这种二维纹理的时候,通常会使用数字化的图像,也就是用一个矩阵T表示,该矩阵的规格为m×n×k。图像的分辨率和取值范围分别用m×n和2k表示。
还能够通过使用双线性插值法来在二维纹理图形的区域内,构造出相似程度较高的纹理函数。我们在二维纹理中,假设一个(u,v),经过取整后,坐标点变为(U,V),那么这个坐标点纹理值可以通过双线性插值得出,也就是(U,V)、(U+1,V)、(U,V+1)、(U+1,V+1),即:
设计出映射函数,也就是F(·),这就是纹理映射的最终目的,这样才可以实现一一对应,特别是(u,v)与F(x,y,z)。(x,y,z)和(u,v)可以分别表示为在物体位置空间中被映射物品的方位,和为纹理范围中的物品方位和纹理值。
3 三维插值方法
在构建出三维地质体模型之后,想要让模型更加贴合于拟合空间实体,就必须进行插值运算。比如线行插值、样条插值、多项式插值、克里金插值等都是使用频率较高的插值算法。
3.1 线性插值法
线性插值方法是使用频率最高以及最简单的一种方法。在形成三维曲面时,通常会使用分段线性差值的方法来完成,公式(3)是这种方法的计算式,其中分段线性插值函数用ln(X)来表示,区间[Xk,Xk+1]上的所有函数都代表线性函数。通过线性差值来完成三维建模,不仅可以提高计算速度,还可以简化计算步骤,在地质体形态中经常使用这种方法,特别是层状地质体或者区块地质体[4]。通过插值计算出来的单元体界面的棱角比较分明,这也是该方法的缺点。
3.2 多项式插值法
多项式插值法又称为拉格朗n次多项插值法,其作用是用来模拟三维曲面,其公式为(5)。
其中:
多项式插值法的优势在于当多项式处于低频率时,模拟处理的曲面是光滑且没有棱角的,能模拟出最真实的地质地貌特征。但如果多项式的次数过多模拟就会出现振荡误差与实际地质地貌存在很大的差距。
3.3 克里金插值法
克里金插值法更适用于地质地貌特征不规则的情况下,其建立的三维模式更容易生成准确的三维曲面图。本文设计的模型有两种,首先是球状模型,其次是指数模型。公式见(7):
其中Zi是一组离散值(i=1,2...,n),λi由下组公式求出:
协方差函数C(h)与验前方差C(0)以及变差函数Y(h)之间的关系为:块金常数用来C0表示,拱高用来C1表示,变程用来a表示。
对于指数模型,块金常数用来C0表示,拱高用来C1表示,a不再是变程,变程是3a。利用克里金插值法计算数据时,会将身处变程内的所有数据统计算一遍,这样使得计算出来的数据与实际情况存在一定的相关性,不仅能更好地模拟地质地貌特征,还能模拟出地质的内部结构图[5]。但由于会将变程内所有数据计算一遍,所以计算速度相对比较缓慢。
3.4 样条插值法
若:yj=f(xj),(j=0,1,2,...,n),则3次样条插值函数为:
其中aj(x)和βx(x)是插值基函数,由下式计算:
mj由下式计算:
其中:
与多项式插值法相比,样条插值法能更好地克服高次多项式导致的振荡现象,模拟出来的地质空间形态更加符合实际情况,而且计算量比克里金插值法小得多。
4 实现结果
实测某路段探地雷达原始数据的三维成像效果见图3,对原始数据进行切片处理后的结果见图4,从两图可以看出探地雷达对不同层面探测的细节区别。对原始数据切片处理后又做旋转处理的效果见图5,可从其中不同角度观察测量体的特征。对原始数据进行透明显示的效果见图6,通过打开或关闭特定的显示图层可以帮助我们更加深入地探测目标体不同底层的特征。
5 结语
综上所述,三维可视化技术在探地雷达数据分析中的实际运用,采用了Opengl绘图,大幅精简了原来烦琐的计算机图形学算法,设计简洁,实现方便。通过混合程序进行对三维空间信息的圆滑,结合浮动水平面方法绘出三维空间图形。整个编写过程中采用了软件工程开发思维并充分地引入面向对象理念,把核心的绘图程序封装成类,以此增强了复用度,从而改善了原有的物探编程方法,着重于计算逻辑而不是物理实现。当然,上述研究成果并不能结合数据处理算法进行图像加强计算,是对三维空间信息可视化的探索性工作。