测绘地理信息   2017, Vol. 42 Issue (4): 32-34
0
利用MATLAB实现DEM可视化方法研究[PDF全文]
拓万兵1, 吴凤民1    
1. 中国矿业大学银川学院矿业工程系,宁夏 银川,750011
摘要: 随着社会生产对数字化地图,特别是数字高程模型(DEM)产品需求的日益增加,如何高效实现DEM的可视化已成为很多工程技术人员追求的目标。笔者尝试用MATLAB软件实现这一目标,并取得成功,所用方法使得DEM可视化过程变得更为简单、高效。
关键词: MATLAB     数字高程模型     可视化    
A Visualization Method of DEM Based on MATLAB
TUO Wanbing1, WU Fengmin1    
1. Department of Mines and Engineering, China University of Mining and Technology Yinchuan College, Yinchuan 750011, China
Abstract: Along with the increasing social demand of digital map, especially DEM product, how to realize DEM visualization fast and efficiently has become the target of many engineering and technical personnel.This paper succeeds to use MATLAB software to achieve this goal. It proves that the method makes DEM visualization process more simple, more efficient and have more value for popularization.
Key words: MATLAB     digital elevation model     visualization    

在人类社会发展的整个过程中,人们一直致力于三维空间的合理表达,并在不同的历史时期尝试了不同的方法[1]。例如,早期的地图上主要采用写景的方法表示地貌形态,后来才出现了等高线、分层设色、晕渲法等表现手段。20世纪80年代以后,随着计算机的发展与普及,人们广泛使用数字高程模型(digital elevation model, DEM)来表现地形特征,利用计算机图形图像的知识来表达现实世界[2],尤其是多媒体、网络、虚拟现实技术的高速发展以及数字地球的建设,为DEM的可视化研究提供了极为广阔的发展空间[3]

DEM的可视化是根据DEM产生地球表面逼真的显示,并能实时模拟飞行员观察地面的动态情况。在计算机中实现DEM可视化最简单的方法是生成三维景观图,实现三维景观的过程依次为:三维线框透视图、模拟灰度景观图和真实景观图。模拟灰度图是DEM透视图经过隐藏线、面的消隐处理之后,再用明暗度公式计算和显示可见面的亮度的效果;而真实景观图是在透视图的基础上,对每一个像素赋予一个实地的真实灰度值,即把数字正射影像图(digital orthophoto map, DOM)叠加到透视图上得到的效果[4]

MATLAB是由美国MathWorks公司推出的用于数值计算、图形处理、系统控制和程序语言的科学计算系统环境[5]。从1984年DOS版本的MATLAB 1.0到今天的MATLAB 8.0,该版本中包括信号处理、图像处理、通信、定点运算、小波分析、高阶谱分析、地理信息系统、数理统计、偏微分方程、样条、优化、系统辨识、控制系统、鲁棒控制、模型预测、模糊逻辑、非线性控制设计等18种工具箱,这些函数能用于各种学科的数学计算和处理[6]

在数据处理上,DEM和DOM有一个共同的特点是它们都按行列顺序存放数据,与矩阵的形式十分相似,因此,利用MATLAB工程设计软件处理有其独特的优势[7, 8]

1 利用MATLAB实现DEM的可视化 1.1 DEM的格式

在测绘领域,通常所用的DEM格式包括BIL格式的栅格型二进制文件、JX-4A全数字摄影测量系统的DEM文件[9]、VirtuoZo摄影测量系统的DEM文件[10],以及国家标准交换NSTD格式的brd文件等。后面3种DEM文件是文本格式的,可以用写字板打开来了解其文件格式,这3种格式基本上是相似的,都包含一个文件头和DEM数据。文件头通常含有起始点位置、格网间距、行列值等信息。这里讨论JX-4A全数字摄影测量系统的DEM格式,并利用MATLAB来实现其三维效果。

文件中格网点高程值是实际高程值的一个倍数(高程放大因子),该因子一般为1 000,这意味着实际高程值精确到毫米级。图幅外的无效数据一般赋予非法值予以区别,在JX-4A系统中,非法值为-99 999。

DEM的数据存贮从左上角格网点起,采取由西向东、再由北向南的方式,形成m(行)×n(列)的二维矩阵存放其高程。这样,只要给出起始点的XY坐标以及行数m、列数n,便可很容易地得到任一点的XYZ坐标。

1.2 数据输入

MATLAB的文本输入函数是fscanf和sscanf, 在使用该命令前,首先使用fopen打开该文件。具体命令如下:

>>[fid, message]=fopen(‘d:\0a6.dem’, ’r’);

>>[A, count]=fscanf(fid, ’%d’, [ynum, xnum]);

第一条命令将DEM文件以只读方式打开,输出值fid是文件的句柄值,输出变量message中包含了打开文件操作结果的有关信息,可以缺省,如果该文件不存在,则句柄值fid返回为-1,message的值为字符串“No such file or directory”。第二条命令将fid指代文件的有关内容读入到xnum×ynum矩阵A中,“%d”表示数据按十进制数据进行转换。此时矩阵A中的内容就是该DEM的数据。

1.3 三维显示

mesh和surf等命令可以进行DEM的三维表面的显示。mesh进行三维网格图形绘制,surf进行三维表面图形绘制。最简单的调用命令如下:

>>mesh(A);

>>surf(A);

利用mesh命令绘制出的效果如图 1所示。为了得到更好的效果和图形表现,可以调用MATLAB大量的图形绘制函数来实现,如使用shading设置渲染模式,colormap进行调色板设置,brighten进行图形亮度调整,diffuse进行漫反射处理,lighting进行光照模式设置等等,也可以对各种图形对象(包括坐标系对象、图形窗口对象、曲面对象、图像对象、文字对象、光源对象等)进行设置。另外,MATLAB的图形窗口figure提供一些简单的操作,如属性编辑、文件保存输出,根据鼠标进行图像的缩放、实时旋转等。

图 1 DEM的三维显示 Figure 1 3D Visualization of DEM

1.4 纹理叠加

在MATLAB中,使用warp函数可以将纹理图像叠加到DEM曲面上。在进行纹理叠加之前,应使用imread函数将正射影像读入至一个影像矩阵中,具体程序如下:

I=imread(‘D:\0a6.tif’);

Warp(I, A);

第一条命令将DOM影像文件0a6.tif读入到矩阵I中,imread命令支持的影像格式有BMP、HDF、JPG、PCX、TIF、XWD。第二条命令将影像矩阵所包含的纹理信息贴到DEM模型上。

1.5 等高线生成

在测绘行业,等高线一直是非常重要的产品,也是传统纸质图上表现地形地貌的唯一通用而有效的表示方法。在数字测绘时代,DEM逐渐取代等高线的应用领域,但等高线还是纸质地形图最重要的地貌表现。从DEM内插等高线的算法是非常复杂的,但在MATLAB中这个过程变得极为简单,contour命令即能完成这种算法,具体命令如下:

contour(A, 20);

或[C, h]=contour(A, 20, LineSpec)

第一条命令是简单的调用函数,A是记录DEM数据的矩阵,20为生成等高线的条数,图 2就是利用该命令生成的等高线图。第二条函数较为复杂,C是函数返回的等高线矩阵,利用等高线矩阵C还可以进行等高线高程注记,h是返回的图形句柄,LineSpec定义绘制等高线的线型和颜色等属性。

图 2 DEM生成的等高线 Figure 2 Contour Lines Generated by DEM

在等高线应用中,还有其他几个应用函数,如contourf进行等高线填充绘制,contours进行三维等高线的生成,surfc进行带等高线的三维表面绘制,meshc进行带等高线的三维网格绘制,clabel进行等高线高程注记等。

1.6 影像显示

与影像数据一样,DEM的数据大多通过栅格表示,因而用影像表示DEM也是实现其可视化的一种有效方法。影像显示的具体含义是根据DEM所表示的地形高程进行颜色赋值,一定的高程用一定的颜色值表示。由于在数字图像中,每一像元灰度值通常定义在0~1之间,为了合理地表示DEM影像,应该将表示的高程数据通过线性变换公式规划至0~1之间,也可利用非线性变换公式突出某一高程区域的细节。MATLAB使用image和imshow等函数来实现DEM的影像显示,函数中有一项参数指明所使用的颜色表,如hsv、hot、cool、gray、copper、bone、jet等,也可以自己定义颜色表矩阵。图 3是使用灰度色表gray显示的某一地区的DEM数据。

图 3 DEM的影像表示 Figure 3 DEM Image Representation

1.7 三维景观的动画显示

MATLAB提供动画功能,用户可通过存储一系列图片,然后将这一系列图片用movie函数播放出来。系列图片必须用getframe来制作,并可使用moviein来检测并生成存储系列图片的矩阵变量,并分配足够的内存空间。

2 结束语

在测绘行业中,我们不但要进行大量的数据分析,还要进行大量的图形图像处理,如GPS数据的处理、地理信息系统的建设、遥感影像的信息提取、各种系统的数据和标准的统一等,MATLAB对此是一个十分优秀的软件。本文所采用的方法可快速、高效地实现DEM产品的可视化,为满足市场对数字化地图的需求开辟了一条快捷、有效的技术路径。

参考文献
[1] 李志林, 朱庆. 数字高程模型[M]. 2版. 武汉: 武汉大学出版社, 2000
[2] 齐晓飞, 王光霞, 崔秀飞, 等. DEM误差可视化方法分析与研究[J]. 测绘科学, 2011, 36(3): 169–171
[3] 朱长青, 王志伟, 刘海砚. 基于重构等高线的DEM精度评估模型[J]. 武汉大学学报·信息科学版, 2008, 33(2): 153–156
[4] 常小林, 李明峰, 李熹微. 基于MATLAB的DEM数据处理研究[C]. 华东六省一市测绘学会学术交流会, 南京, 2011
[5] 伯晓晨, 李涛, 刘路. MATLAB工具箱应用指南——信息工程篇[M]. 北京: 电子工业出版社, 2000
[6] 赵书兰. MATLAB建模与仿真[M]. 北京: 清华大学出版社, 2013
[7] 张祖勋, 张永军. 利用国产卫星影像构建我国地理空间信息[J]. 测绘信息与工程, 2012, 37(5): 7–9
[8] 张春, 刘晓峰. MATLAB在测绘工作中的应用[J]. 华北国土资源, 2011, (1): 61–62
[9] 刘小明, 李悦丽, 郭福生, 等. 基于全数字摄影测量系统的数字正射影像图的制作[J]. 测绘科学, 2010, 35(s1): 198–199
[10] 郭微. 基于VirtuoZo的正射影像图制作与精度控制研究[J]. 测绘与空间地理信息, 2014, 37(12): 196–197 DOI: 10.3969/j.issn.1672-5867.2014.12.064