三维云图仿真系统设计与实现

2018-06-14 07:15王连杰
软件 2018年5期
关键词:云团云图灰度

王连杰,韦 群

(1. 航天工程大学,北京 101400;2. 西昌卫星发射中心,四川 西昌 615000)

0 引言

随着卫星遥感技术的不断发展,气象卫星通过搭载的各种气象遥感器,能够从太空进行全方位、全天候观测,观测的内容包括云图的拍摄、云顶温度和水汽、臭氧等内容,这些数据经地面站处理后,可以得到红外云图、水汽图以及可见光云图。然而,基层台站目前接收的云图数据基本上都是二维云图,用户根据云图的颜色不同,对云图进行分析。对比三维云图而言,二维云图不能反应云团的垂直分布特征,对台风、低涡等天气系统反应不够直观,真实感较差。

由于云状能够直接反应的大气的活动状态,国内外众多学者开展了云图的三维可视化研究。主要有申闫春等从二维云图中提取云的三维信息,并利用改进的Billboard算法对其进行空间填充实现三维立体云的仿真[1];Mark J.Harris等人利用前向散射的云阴影算法,在运行过程中利用一阶各向异性散射和帧对帧的相干性加快云的绘制速度,构建出的三维云图仿真算法[2];还有郭胜等利用实时的红外云图数据,在数字地球上采用OGS三维渲染技术,实现云图的三维显示[3]。

前人的众多研究,都为本文奠定了很强的理论基础[4-5]。本文将采用基层台站接收的红外云图数据,利用OpenGL图形和模型库,研究构建云图的三维模型,设计并实现三维云图仿真系统,该系统将极大的方便岗位人员掌握云团的变化情况,具有很强的现实意义。

1 红外卫星云图概述

1.1 红外卫星云图的探测原理

在气象卫星上,安装红外线仪器对云层中的温度进行测量,其测量结果将以灰度的形式表现出来,卫星上的红外线仪器能够接收红外谱段为 10.5-12.5 μm的辐射,辐射通量的表达式为

其中上式表达式中Ts表示地表的温度,∆S表示卫星观测地表的面积,∆Ω表示卫星仪器上观测的立体角。通过上式(1)可知,如果云团的温度越高,那么向外辐射的红外辐射就会越强;反之就会越小。也可以认为红外云图反应的是温度分布图,通常云顶温度高、辐射强的云团,对应的灰度值也相对较小,像素点表现比较暗,反之则相反[6]。

1.2 红外云图的数据格式

目前,对于基层台站而言,最为简单和直接的方法获取卫星云图数据就是通过 CMACast系统接收卫星云图数据,其数据格式采用Micaps第十三类数据格式,具体红外云图的数据内容见表1所示。

表1 第十三类数据图像文件Tab.1 13th Class data image file

文件的描述部分共有128个字符组成,在描述文件后,就是存储的云图数据,该数据全部为二进制数据文件,按照先X方向后Y方向的顺序进行存储,每一个像素点占一个字节。

2 总体设计

2.1 系统目标

云团的变化能够直接反应大气运动的状态,因此对于云状的观测始终是气象观测的重点。但对于基层台站观测员而言,夜间往往会受到光线或视野的影响,造成观测结果的不准确,进而影响天气预报的制作。另外,预报员在分析云图过程中,部分云系的特征不够明确,也可能造成岗位人员对天气系统的误判。

根据红外卫星云图夜间能够成像的特点,研究实现三维云图仿真系统,将有效提高对云状的判断准确度。系统需要完成以下功能:(一)应用接收到红外云图数据,实现云图的二维、三维显示;(二)云图数据浏览过程中,能够实现向前、向后翻页、旋转、平移、缩放以及动画功能;(三)对于云图成像过程中,用户可以应用不同的调色板,改变云图的颜色,并且能够将云图数据输出。

2.2 系统功能模块设计

根据系统的目标,本系统可分为数据导入和数据显示两个模块,各个子功能模块如图1所示。

图1 三维云图仿真系统功能模块Fig.1 Functional modules of 3D cloud map simulation system

数据导入模块是整个系统的数据来源,主要是用于将云图、地图以及调色板数据导入到系统。其中云图数据中存储了大量的灰度值信息,在读取过程中需要根据云图描述文件中x、y轴图像的大小,将灰度值数据存储到数组中;载入地图的大小则根据云图描述文件中的头文件中包含经纬度数据信息,将与云图数据相应大小的bmp文件载入到系统中,以实现地理信息显示的功能;调色板中的数据主要用于将灰度值与各颜色分量进行转换,实现云图的着色。

数据显示是整个系统实现功能的核心部分,主要用于将载入系统的云图数据,经过数据网格化处理,构建出三维云图模型,与地图文件共同实现云图的显示,并且在可视化过程中,能够实现对云图的缩放、平移、动画、旋转等功能,便于用户的浏览。

2.3 系统坐标系

在自然界之中,任何大于绝对零度的物体,都会向外产生黑体辐射,并且随着物体温度越高,辐射也会越强。在云团中,高度每上升 1000m,云团的温度就会下降 6℃,当云团的温度越高,表明云图越贴近地面,则该类云图对应的灰度值就会变小,在云图显示过程中表现的色调就越暗,如图2所示。

图2 红外云图三维仿真原理示意图Fig.2 Schematic diagram of three dimensional simulation principle of infrared cloud image

由于云图的灰度值与云团高度具有一定的相关性,云团的灰度值越大,则表明云团的高度越高,可以利用云图的灰度值来近似的反应云团的高低起伏变化。此外,在云图的头文件中包含了经纬度起始坐标信息和图像的大小,因此可以选用经度坐标为x轴坐标,纬度坐标为y轴坐标,云图的灰度值为z轴坐标的方式来构建云图的坐标系,其视口坐标系如下图3所示。

图3 OpenGL 视口中的坐标系Fig.3 Coordinate system in OpenGL viewport

3 关键技术

3.1 云图三维模型构建

在构建云图的三维模型过程中,除了需要云团的经纬度信息准确以外,还需要利用灰度值来准确的反应云顶的高度,将相邻的像素点进行连接,这是构建云图仿真系统的关键。在设置云图的高度值时,发现直接使用灰度值作为高度值,会造成云图三维模型上下起伏过于明显,三维云图仿真效果不够理想。因此在使用灰度值数据过程中,采用将灰度值数据除以10,作为云图的高程值,能够有效降低了云图的上下起伏程度,提高云图显示效果,还不会造成云图信息的丢失。此外,为了达到快速将三角形连接起来的目的,本系统选用OpenGL中的GL_TRIANGLE_STRIP线型连续填充函数来构造三角形,该函数在绘制三角形过程中,对比其他OpenGL几何图元函数,能够使三角形更加具有连续性,其绘制方法是根据函数顶点的奇偶性来将云图数据中的每3个像素点连接成为一个小三角形,如图4所示。

图4 GL_TRIANGLE_STRIP 函数几何图元示意图Fig.4 GL_TRIANGLE_STRIP function geometric diagram

3.2 法向量的处理

在构建云图的三维模型过程中,如果不对光照的反射进行处理,则会导致模型表面不够光滑,出现棱角不够分明,图像看不出的情况发生,因此对顶点法向量进行处理就显得尤为重要。在卫星云图数据中,由于该类数据并没有保存顶点的法向量信息,因此需要通过逐个计算得到顶点法向量数据,本系统通过构建云图的三维模型过程中,共构造出了512*511个三角形,计算顶点法向量的过程如下:

(1)计算每个三角形的平面法向量;平面上有P0、P1、P2三个点,那么其法向量为N。

其中

(2)将平面法向量进行归一化处理,得到法向单位向量e;

(3)一个点的法向量等于以该点为顶点的所有三角形的法向量之和平均值,在云图的网格之中一个点法向量往往由8个三角形面求平均而得出,由8个单位法向量的平均值既可以得到该点的顶点法向量。

3.3 调色板及透明度处理

在构建完云图的三维模型后,可以采用纹理映射的方式为云团进行着色,实现云图的三维显示。但是由于云系高低起伏不平,高云和低云之间存在着颜色上的差异,相对而言,使用纹理映射的方式会造成大量的数据进入到内存中。为此本文在实现过程中,采用glColor4ub函数为每个顶点以及组成三角形的边,赋值相应的像素值颜色。在赋值过程中,由于OpenGL中的glColor4ub其颜色强度值为0-255,而 Micaps调色板中各颜色分量强度为0-65535,其转换公式为

利用公式(8),可以将Micaps中的颜色强度进行转换,得到适用于glColor4ub的颜色强度。

另外,在云系的显示过程中,存在着一些云系不连续的过渡地带,在系统在设计实现过程中,需要采用glColor4ub函数来控制Alpha的值,根据在多年工作中的经验,系统将灰度值在112.5-176.25,设置为云团的过渡地带,当灰度值小于112.5,则认为探测到的为地物向外的辐射,其透明度为 0;而大于 176.25,则默认为云图的红外辐射,全部进行显示;其余则为过渡云团的颜色。

4 三维云图仿真系统详细设计

在三维云图仿真过程中,主要步骤可以分为(一)读取云图文件,并实现云图数据网格化;(二)利用OpenGL构造三角模型,并计算三角形中各个顶点的法向量,根据调色板为云团进行着色处理;(三)将得到的三维云图和地图进行融合显示,系统的函数关系图如图5所示。

4.1 读取云图文件模块设计

在应用MFC开发过程中,使用Doc类来管理、加载以及保存应用程序的数据。本系统在开发过程中,将云图数据的加载、读取以及获取云图的标题等功能在CCloudFile类中实现(如图6所示),CDoc类依赖于File类实现相应的功能。其中由于云图的灰度值范围为0-255,因此将存储云图数据的数组设置成为unsigned char型,使其显示的数据范围为0-255。

图5 函数关系图Fig.5 Function relation graph

4.2 绘制云图模块设计

3dCloudView作为仿真系统的核心类,其在实现过程中数据来源于Doc类,在构建云图的三维模型主要通过DrawCloud函数实现,首先将云图数据网格化后,再使用OpenGL函数对云团进行透明化处理,为云团进行着色;另外,还需要在该类中还需要使用LoadMap函数实现地理底图的加载,以及DrawMap函数实现地图文件的绘制,其在实现过程中,还需要依赖Pal类获取灰度的转换信息和Graph类实现OpenGL的信息。

4.3 可视化功能实现

MainFrame该类主要用于实现仿真系统的各项功能,主要的功能有实现云图的前后翻页、动画、全屏、保存、云图的前后翻页等功能。

5 系统的实现

本系统主要是基于 OpenGL函数库和 MFC类库,利用C++语言,进行的系统开发。在使用该系统进行显示云图过程中,能够准确显示云图中所包含的信息,台风等云系特征明显,图6为系统运行效果图。

图6 三维云图仿真系统运行效果图Fig.6 Running effect Map of 3D Cloud image simulation system

6 结论

本文详细阐述了三维云图仿真系统实现过程中所涉及到的关键问题,主要对云图三维模型构建与调色板应用进行了详细的阐述,并对系统的详细设计进行了重点阐述。经过实例证明,应用该系统可以实现云图的三维仿真显示,有效提高了云图数据的使用效率。但是,本系统目前只能够提供三维云图的浏览,功能上相对简单,今后将扩展本系统的功能,进一步挖掘云图中的信息。

[1] 申闫春, 朱幼虹, 曹莉, 温转萍. 基于OSG的三维仿真平台的设计与实现[J]. 计算机仿真, 2007(06): 207-211.

[2] Mark J. Harris and Anselmo Lastra Department of Computer Science, University of North Carolina, Chapel Hill, North Carolina, USA Real- Time Cloud Rendering EUROGRAPHICS 2001/A. Chalmers and T.- M. Rhyne.

[3] 葛亮, 姜晓峰, 倪小军. 一种云场景的实时渲染方法[J].计算机工程与应用, 2011, 47(11): 167-170.

[4] 汪归归, 宋歌, 陈安太, 杨红雨. 飞行模拟场景中三维云的实时建模和绘制[J]. 计算机工程与设计, 2011, 32(07):2414-2416+2522.

[5] 佟志忠, 姜洪洲, 韩俊伟. 面向飞行模拟的云仿真及其实时绘制[J]. 吉林大学学报(工学版), 2008(06): 1434-1440.

[6] 孙文广, 吴玲达, 宋汉辰, 张玉新. 基于红外卫星云图的云的三维表现[A]. 中国计算机学会、中国图象图形学学会、ACM SIGCHI中国分会、清华大学计算机科学与技术系.第一届建立和谐人机环境联合学术会议(HHME2005)论文集[C]. 中国计算机学会、中国图象图形学学会、ACM SIGCHI中国分会、清华大学计算机科学与技术系, 2005: 6.

[7] 李培军, 谭永强. 一种基于卫星云图定量估计的三维显示方法[J]. 气象科学, 2007(03): 329-334.

猜你喜欢
云团云图灰度
采用改进导重法的拓扑结构灰度单元过滤技术
巴蜀少年齐上一堂云团课
基于灰度拉伸的图像水位识别方法研究
成都云图控股股份有限公司
黄强先生作品《雨后松云图》
面阵探测下的污染云团红外光谱仿真∗
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于TV-L1分解的红外云图超分辨率算法
基于灰度线性建模的亚像素图像抖动量计算
葡萄牙现明亮橘色云团似握着火球的拳头