基于OpenGL的海底地形三维渲染方法

2018-02-01 04:54,,2,,
关键词:色相水深光源

,,2,,

(1.山东科技大学 测绘科学与工程学院,山东 青岛 266590;2.海岛(礁)测绘技术国家测绘地理信息局重点实验室,山东 青岛 266590)

多波束测深系统在水深测量中应用广泛[1-3],如何利用多波束数据实现海底地形的可视化越来越受到关注。自20世纪40年代以来,随着计算机技术的出现和蓬勃发展,以及计算机图形学、计算机辅助制图、现代数学理论等的完善和应用,各种数字地形的表达方式与可视化技术得到迅速发展。地形可视化技术经历了从简单到复杂、从低级符号化到高级符号化、从抽象到逼真的过程,其表达方法也从二维可视化向三维可视化转变[4-5]。在可视化方法中,等高线法能较为科学地反映地形的高程、坡度坡向、山脊山谷等基本形态及其变化,但是缺乏视觉立体感,无法表达等高线之间的微小地貌;分层设色在等高线地形图的基础上绘制,用不同的色调和色相只能概略表达地势起伏状况,且某些要素符号的颜色易受干扰;明暗等高线法、半色调符号表达法等只能在普通二维地形图中表达出相对的地势起伏,上述方法均难以直观、方便地反映海底地形的真实变化。

海底地形三维可视化可以利用多波束测深系统等获取的全覆盖离散数据生成海底数字高程模型,并通过叠加颜色渲染以及光照等方法,建立真实感的三维海底场景[6]。三维地形渲染能够运用光照与颜色来表达和区分不同的海底水深,选取合适的渲染模型和方法能够高效地表达海底地形,具有立体感强、形象美观的特点,在三维可视化领域具有重要作用且被广泛应用[7-8]。本文分析了计算机数字图像处理中常用的颜色模型,其中HSL颜色模型能够直观、直接地用色调、饱和度、亮度描述彩色物体[9],相对于其他颜色模型而言,HSL颜色模型用来描述颜色更加自然,更具有视觉直观性,因此基于HSL颜色模型提出了海底地形的多色渐变渲染算法。在创建三维海底场景时,光照具有十分重要的作用,只有叠加上光照场景才会具有真实感,虽然其本身的计算比较复杂,但OpenGL图形库的函数简化了光照计算的算法[10]。因此,基于OpenGL实现真实感光照,并基于MFC与OpenGL开发海底地形三维可视化工具,利用实测数据,比较本文提出方法与其他成图软件的渲染效果。

1 海底地形三维渲染方法

1.1 HSL模型和RGB模型多色渐变渲染

在计算机数字图像处理中常用的颜色模型包括HSL模型和RGB模型。

HSL颜色模型通过对色相(H)、饱和度(S)、亮度(L)三个颜色通道的变化及其相互之间的叠加得到各式各样的颜色,HSL模型如图1所示。

HSL的h(hue)分量代表人眼所能感知的颜色范围,即是色相,取值范围为[0,360),如图2所示。s(saturation)分量代表色彩的饱和度,取值范围为[0,1],用于描述相同色相、亮度下色彩纯度的变化,数值越大颜色越鲜艳。l(lightness)分量代表色彩的亮度,取值范围为[0,1],用于描述色彩的明暗变化,数值越大色彩越亮越接近白色,数值越小色彩越暗越接近黑色。

图1 HSL颜色模型[11]Fig.1 HSL color model

图2 色相取值范围Fig.2 Value range of hue

RGB颜色模型的颜色空间采用笛卡尔直角坐标系来定义,三个坐标轴分别对应红、绿、蓝三个分量,三个分量的取值范围均为[0,255]。

由HSL颜色模型的性质可知,固定饱和度与亮度,根据水深对色相H线性插值即可实现按照光谱顺序连续变化的多色渐变渲染。而对于RGB颜色模型,通过设定最大水深值与最小水深值的颜色,根据水深值对三个颜色分量分别进行线性插值计算只能获得两种颜色渐变的渲染效果。例如,设计色谱首末端的颜色为红色和蓝色,对于南海某海域同一海底数字高程模型,两种不同颜色模型的渲染效果截然不同,如图3所示。

图3 不同颜色模型的渲染效果Fig.3 The rendering map displayed by different color models

RGB颜色模型只有首末端两种颜色的渐变渲染,而HSL颜色模型则是红、黄、绿、青、蓝按照光谱顺序连续变化的多种颜色平滑渐变的渲染。因此,HSL颜色模型渲染方法色彩丰富、颜色渐变平滑,且算法较易实现,能够达到较好的渲染效果。

针对HSL颜色模型的多色渐变渲染方法,在实际应用中,为了使颜色更加纯正,通常饱和度S取值为1.0;由于亮度取值过大颜色接近白色,亮度过小又接近黑色,因此通常亮度l取值为0.5;鉴于海底地形的色谱通常为红、黄、绿、青、蓝,色相h的取值范围为[0,240]。

当海底最大水深值为Zmax,最小水深值为Zmin时,色相取值范围为Hmin~Hmax,则水深为Z时的h、l、s的值分别为:

(1)

由于OpenGL不支持HSL颜色模型,因此需要将HSL模型转换成OpenGL所支持的RGB颜色模型[12]。设HSL模型的色相、饱和度、亮度分别为h、s、l,h的取值范围为[0,360),s与l取值范围为[0,1],引入中间变量p、q,计算公式如式(2)、式(3)所示:

(2)

p=2×l-q。

(3)

设r、g、b分别为RGB颜色模型的红、绿、蓝分量,其计算公式如式(4)所示:

(4)

根据式(5)进一步计算r:

(5)

再根据式(6)计算出r最终的真实值:

(6)

同理,计算出g、b的值,即完成了HSL模型到RGB模型的转换。

HSL模型的多色渐变,可采用分层设色的方法,即需要根据水深划分区间,每一个水深区间对应一个颜色渐变区间。海底分层设色的原则是:随着海底高程的变高,色调由冷色调向暖色调渐变。水深越深越接近蓝色,水深越浅越接近红色,如图4所示,使地形的起伏和形态特征具有一定的立体感,直观地表达海底的起伏变化。

图4 色谱Fig.4 Chromatograph

在海底地形渲染中,通常采用的颜色渐变区间为红到黄、黄到绿、绿到青、青到蓝四个区间,因此选取三个高程边界点,设为Z1、Z2、Z3(Z1>Z2>Z3)。当高程Z>Z1时,颜色渐变区间为红到黄;当高程Z1>Z>Z2时,颜色渐变区间为黄到绿;当高程Z2>Z>Z3时,颜色渐变区间为绿到青;当高程Z

(7)

DEM只能反映海底地形的起伏状况,一般地,对于Z1、Z2、Z3的取值,可根据具体的DEM高程数据以及场景的绘制要求,人工设置三个高程边界点,因地制宜地设计合理的颜色方案,实现地形多色渐变渲染,使颜色渲染对比显著、直观立体。

1.2 OpenGL光照计算

光照处理是增强图形真实感最重要的手段,只有叠加上光照才能增强多层次的颜色渐变和明暗过渡的三维视觉效果[13],如图5所示。

为了获得更立体直观的三维晕渲效果,本文运用OpenGL对光照进行设置,OpenGL把现实世界中的光照系统分为光源、材质和光照环境三部分。在RGBA模式下,与此相对应,影响光照效果的因素主要是光源属性、材质属性以及光照模型的参数设置。

OpenGL在场景中设置光照的步骤如下:

①计算每一个顶点的法线向量。

法线反映了物体相对于光源的朝向,决定了DEM格网点的光强,进而决定了光照效果。在格网DEM中,将曲面划分成许多的小三角形面,一个顶点被多个三角形面共享,如图6所示,因此每个顶点的法向量是所有共享该顶点面的法向量平均值,n为该格网点水深值。

图6 法线计算示意图Fig.6 The schematic diagram of normal calculation

计算出向量n2与n3,再计算其叉积,将叉积进行单位化,即为n、n2、n3组成的三角形面的法向量,计算如式(8)所示:

(8)

同理计算出6个共享顶点的面的法向量,取其平均值即可得到该顶点的法向量。在OpenGL中,glNormal3f()函数用于指定当前顶点的法向量。

②创建光源,设置光源的属性。

光源的属性包括颜色、位置和方向。OpenGL中,使用glLightfv()函数创建光源、指定光源的全部属性,设置完毕后通过glEnable()函数启用光源。

OpenGL将光源分成环境光、漫反射光、镜面光,通过分别计算这三种类型光的分量,将三种分量叠加形成最终的光照效果。环境光不依赖于光源的方向,漫反射光只依赖于光源的方向和法线的方向,而镜面光依赖于光源的方向、法线的方向和视角的方向。环境光默认值是{0.0,0.0,0.0,1.0},即光源中没有环境光;漫反射光与光源的颜色关系最为密切,默认取值为{1.0,1.0,1.0,1.0},即亮白色。取值不同的光源分量生成的地形图也不同(图7),只有根据具体的海底数字高程模型适当设置光源的三个分量取值,才能获得理想的光照效果。

图7 光源分量取值对地形图的影响Fig.7 The effect of light value on topographic map

不同的光照方向产生的光照效果也不同,在实际应用中,通常光源方向设置为太阳方位角315°太阳高度角45°时,能够获得较好的渲染效果[14]。

③选择OpenGL的简单光照模型。

光照模型是模拟场景中物体表面所显示的颜色和明暗。OpenGL启用光源之后,通过glLightModel()函数指定光照模型的参数,包括全局环境光强度、观察点位置、正反面是否采用相同的光照计算等。

④设置物体的材质属性。

物体模型的最终颜色是由场景中的光源和物体本身的材质共同决定的,通过HSL模型多色渐变渲染确定物体的颜色之后,在OpenGL中开启GL_COLOR_MATERIAL颜色材质模式即可实现着色。

以上参数均可根据具体的DEM,通过交互界面人工调整,合适的光源参数、材质参数、光源模型参数可以使得最后形成的海底地形图更具有真实感。

2 实验与分析

本文以VC++6.0为开发平台,采用OpenGL三维图形库开发了海底地形可视化工具。为比较分析本文提出的海底地形渲染方法的效果,利用地形起伏明显的实测多波束数据进行实验。实验数据为南海某海域采用Seabeam3012系统采集的多波束测深数据,平面覆盖范围约390 km×280 km,水深范围约为320~7 200 m。

通过反距离加权插值算法格网化得到规则格网DEM[15],格网文件维数为1 500×1 300,共195万个水深值点。

图8 地形图绘制流程Fig.8 The flow chart of geographical map drawing

本文提出的海底地形渲染方法,详细流程如图8所示:

1) 光照参数设置。创建高度角为45°、方位角为315°、位于地形图西北方向的光源。为了避免光源颜色对海底地形颜色渲染的影响,光源中环境光的RGBA颜色设置为GLfloatlight_Ambient[]={0.5,0.5,0.5,1.0};散射光与光源的颜色关系最为密切,颜色设置为GLfloatlight_Diffuse[]={1.0,1.0,1.0,1.0};镜面反射光颜色设置为GLfloatlight_Ambient[]={1.0,1.0,1.0,1.0}。

2) 观察视点位置设置。方位角180°、高度角90°、方位角180°、高度角45°。

3) 绘制图元。通过三角形图元绘制地形图,OpenGL通过glBegin(GL_TRIANGLES)绘制三角形,使用glVertex3f(x,y,z)函数依次指定三角形的三个顶点,三角形相互连接即形成地形图。在绘制图元过程中,需要计算每一个点的法线以实现光照效果,计算每一个点的颜色,实现地形多色渐变效果。

通过交互界面调整配色方案,设计合理的颜色渲染方案。根据实验DEM数据的水深点分布,设置的颜色渐变区间为:>5 600 m以深渐变区间为青到蓝;4 200至5 600 m渐变区间为绿到青;2 800至4 200 m渐变区间为黄到绿;<2 80 0m以浅渐变区间为红到黄。根据各点的水深值,采用本文提出的基于HSL模型的多色渐变渲染算法,得到各点的r、g、b值,使用glColor3f(r,g,b)函数指定该点的颜色。

由本文所提到的法线计算方法获得每一点的法线,并使用glNormal3f(x,y,z)函数指定法线向量。

经过阴影和颜色渲染处理后,渲染效果如图9所示。

图9显示出本文所提出的方法渲染效果比较平滑,颜色丰富,地形层次变化明显。结合光照效果,增加了地形图的立体性、直观性以及地形显示的真实感,而且能够根据具体的海底DEM因地制宜的设计合理美观的渲染方案。

Surfer是一个功能齐全的三维可视化和表面建模软件,被广泛用于地形三维可视化方面,采用Surfer软件加入太阳方位角为315°、太阳高度角为45°的光照,调整配色方案,经过阴影和颜色渲染处理后,得到海底渲染图(图10(a))。ArcMap中的“山体阴影”功能通过考虑光源的角度和阴影,根据DEM创建并显示晕渲地貌,在创建山体阴影图时,设置太阳方位角为315°、太阳高度角为45°,ArcMap“山体阴影”的渲染效果(图10(b))。

图9 本文方法的渲染效果图Fig.9 The rendering map displayed by the method presented in this paper

图10 Surfer与ArcMap与软件的渲染效果图Fig.10 The rendering map displayed by Surfer and ArcMap

由上述地形图可见,本文所提出的渲染方法与两种商用软件均能够真实、准确地表达海底地形的起伏变化,能够显示地形细节,颜色渲染过渡平滑,均可以调整配色方案,且本方法和Surfer软件均可以通过调整视点角度来全方位观察海底地形。该方法在地形显示的准确度、渲染效果的美观度、交互操作的灵活度等方面同上述两种商用软件的功能相当。

3 结论

基于MFC与OpenGL三维图形库,实现了真实感海底地形场景的建立。根据实验分析,得到如下结论:

1) HSL模型多色渐变渲染算法固定饱和度与亮度,只需线性插值色相即可获得多色渐变效果,能够采用分层设色设计出合理、美观的颜色方案,渲染效果较好;

2) OpenGL光照计算使海底地形表达更加立体,获得更立体直观的三维渲染效果,保证了地形表达的真实感。

[1]阳凡林,韩李涛,王瑞富,等.多波束声纳水柱影像探测中底层水域目标的研究进展[J].山东科技大学学报(自然科学版),2013,32(6):75-83.

YANG Fanlin,HAN Litao,WANG Ruifu,et al.Progress in object detection in middle and bottom-water based on multibeam water column image[J].Journal of Shandong University of Science and Technology (Natural Science),2013,32(6):75-83.

[2]DJIKPESSE H,SOBREIRA J F F,HILL A,et al.Recent advances and trends in subsea technologies and seafloor properties characterization[J].The Leading Edge,2013,32(10):1214-1220.

[3]ATANU B,SAXENA N K.A review of shallow water mapping systems[J].Marine Geodesy,1999,22(3):249-257.

[4]王翠霞.基于OpenGL的三维地形可视化技术理论与方法研究[D].青岛:山东科技大学,2009:2-5.

[5]韩李涛,范克楠.三维地形颜色渐变渲染的光滑过渡方法研究[J].地球信息科学,2015,17(1):31-36.

HAN Litao,FAN Kenan.Research on smooth transition of color rendering for 3D terrain[J].Journal of Geo-information Science,2015,17(1):31-36.

[6]魏金桃,方强飞,齐永刚.三维海底晕渲图绘制方法探究[J].海洋测绘,2013,33(1):60-62.

WEI Jintao,FANG Qiangfei,QI Yonggang.Research on methods of drawing three-dimensional submarine shaded relief map[J].Hydrographic Surveying and Mapping,2013,33(1):60-62.

[7]胡静妍,李霖,李雄科.基于DirectX的地貌晕渲实现机制研究[J].测绘科学,2004,29(4):20-22.

HU Jingyan,LI Lin,LI Xiongke.Research on computer hillshading based on DirectX[J].Science of Surveying and Mapping,2004,29(4):20-22.

[8]范克楠.大规模海底地形可视化关键技术研究[D].青岛:山东科技大学,2013:27-33.

[9]MASTERS B R.Digital image processing,third edition[J].Journal of Biomedical Optics,2009,14(2):029901.

[10]黎华,肖伟,黄海峰,等.三维真实感地形生成的关键技术研究[J].测绘科学,2006,31(4):57-59.

LI Hua,XIAO Wei,HUANG Haifeng,et al.Study on the key technology of generation of 3D realistic terrain[J].Science of Surveying and Mapping,2006,31(4):57-59.

[11]冉冉,杨唐文,阮秋琦.结合HSL模型与傅里叶描述子的三维彩色物体识别[J].智能系统学报,2011,6(1):73-78.

RAN Ran,YANG Tangwen,RUAN Qiuqi.Recognizing a colored object based on an HSL model and Fourier descriptors[J].CAAI Transactions on Intelligent Systems,2011,6(1):73-78.

[12]LIVNY Y,KOGAN Z,EI-SANA J.Seamless patches for GPU-based terrain rendering[J].Visual Computer,2009,25(3):197-208.

[13]李治国,郭立.基于OpenGL的光照处理技术及实现[J].计算机仿真,2008,25(3):221-223.

LI Zhiguo,GUO Li.Implementation of lighting technique based on OpenGL[J].Computer Simulation,2008,25(3):221-223.

[14]江文萍,毋河海,杜清运,等.大型彩色地貌晕渲图的自动生成技术研究[J].武汉大学学报(信息科学版),2004,29(6):496-499.

JIANG Wenping,WU Hehai,DU Qingyun,et al.Automatic generation technology of large-scale colored hill-shading[J].Geomatics and Information Science of Wuhan University,2004,29(6):496-499.

[15]AGUILAR F J,AGUERA F,AGUILAR M A,et al.Effects of terrain morphology sampling density and interpolation methods on grid DEM accuracy[J].Photogrammetric Engineering & Remote Sensing,2005,71(7):805-816.

猜你喜欢
色相水深光源
书法静水深流
基于水深分段选择因子的多光谱影像反演水深
多波束海底地形水深注记抽稀软件对比
光源改变光环境
高效液相色谱在食品安全检测中的应用
色相、心相与舞台造型——民国京剧批评中的“扮相”品评
绿色光源
两种LED光源作为拟南芥生长光源的应用探究
高支纱羊绒衫缩水率问题的试验分析
GPS RTK技术在水深测量中的应用