元胞自动机改善大规模海面污染物扩散实时绘制算法
2020-05-16吕梦雅刘培艺
吕梦雅,张 鹏,刘培艺,唐 勇,李 颖
1(燕山大学 信息科学与工程学院,河北 秦皇岛 066004)
2(河北省计算机虚拟技术与系统集成重点实验室,河北 秦皇岛 066004)
E-mail:tangyong@ysu.edu.cn
1 引 言
近年来,中国沿海城镇工业化发展进程加快,沿海海域污染程度日趋严重,对沿海居民的身体健康和沿海海域内的生态环境造成了极大的影响.因此,模拟海洋污染扩散对于了解污染物在海洋中扩散的过程和程度以及有效地治理沿海污染具有重要的现实意义和广泛的应用前景,但由于污染物在大规模海洋中扩散受到多种外界因素的影响,较难展现大规模海洋污染扩散蔓延等细节.
真实感的海洋场景一直都是计算机图形学的研究热点.为模拟逼真的大规模海洋污染场景,不少国内外研究人员取得了很多优秀的研究成果.2015年,Christopher等[1]对多种非定向海浪谱以及方向分布函数进行研究对比,提出了一个“swell”参数来模拟从波涛汹涌海面到平静海面的平滑过渡,但模拟海面陡峰突兀,真实感较差;2016年,唐勇等[2]将光强、太阳光颜色和位置信息加入到海面颜色的计算中,实现了不同时刻海岛周围海水的颜色变化,但仅可以实现具有一定幅度海面,且并未考虑到存在污染物时海面颜色的变化,具有较大的局限性;2018年,Jeschke等[3]提出了一种基于小波变换的海浪实时构造方法,实现了大规模、可交互且能体现微小细节的海面场景,但并没有考虑存在污染物时海面波动情况;同年邹长军等[4]采用纹理投影技术,实现了基于GPU的海面溢油实时可视化方法,但纹理投影实现的海面溢油效果细节不足,真实感较差;2011年,刘世光等[5]基于浑浊水体成分对光学特性的影响,提出了一个浑浊水体的光学模型,根据光线在浑浊水体中的传播及衰减作用,将其转化为RGB颜色系统进行绘制.但是该方法仅仅考虑水中小颗粒的影响,光学模型的计算精度较差,真实感较差.2012年,Jinjin Shi等[6]基于生物光学模型应用光子映射技术在小规模水体内实现了水内可溶有机物与悬浮颗粒的扩散效果,但是光子映射技术计算量过大,实时性较差,且仅应用于小规模水体渲染.2017年,Rufu Q等[7]提出了一种基于分子布朗运动和粒子跟踪扩散模型的污染物扩散预测系统,并与GIS系统结合,为水体污染预警提供依据,但并未实现三维空间的海面污染物扩散模拟.2004年,Dobbins等[8]分析了基于GIS进行管理和预测水体中污染物扩散漂移进程的系统,但其仅模拟二维平面的海面污染物扩散模拟,并未扩展至三维空间场景.2006年Weiss等[9]提出了一种基于CPU的中值滤波算法,提高传统滤波算法效率.
因此,提出一种结合投影网格和元胞自动机的方法动态模拟大规模海洋污染物的扩散.首先,利用投影网格绘制大规模海面,并采用元胞自动机对水体中污染物的扩散漂移过程进行模拟;然后,利用高斯平滑滤波算法并引进浓度因子增加污染物扩散漂移过程的细节.最后,采用四叉树算法简化海面网格,提高绘制速率,实现大规模海面污染物扩散实时动态模拟.
2 基于投影网格的大规模海面网格建模
为模拟大规模海面场景,常采用海面网格将大规模海面划分为规则网格.由于Nyquist极限的限制,为平衡计算量和模拟细节,采用投影网格算法搭建海面网格.
传统的投影网格算法通过在投影空间中创建规则的网格,并将网格投影到世界空间中的基准平面上,最后根据高度场函数移动顶点.但是当视线方向与基准平面平行时,视线方向与基准平面不相交,该算法失效.同时视点高度小于基准平面时,该算法也会出现问题.
图1 优化的投影网格算法示意图
为解决上述问题,应用改进的投影网格算法,通过引入一个辅助相机以达到填充屏幕网格的作用.辅助相机的位置与相机位置重合,辅助相机的视景体的下切割平面始终垂直与水平面,而其他切割平面与原相机的视景体相应的切割平面保持一致,如图1所示.通过该方法可以使投影网格始终覆盖整个屏幕网格.
3 基于元胞自动机的污染物扩散模拟
污染物在海面中的扩散过程受到水体流速、流向、风向、风速和自身的物理性质等多种因素影响,所以其过程具有局部性、时空离散型等特点.由于元胞自动机具有快速模拟复杂系统局部时空演化过程的能力,采用元胞自动机模拟污染物在大规模海面中的扩散过程.
3.1 海面污染物扩散的元胞自动机模型
元胞自动机通常由元胞、元胞空间、邻域和状态演化规则构成.第2节所述投影网格的每一个规则网格定义为一个元胞,每一个元胞的状态由周围邻域的元胞状态共同决定.
3.1.1 浓度因子优化元胞自动机状态
(1)
3.1.2 海面污染物扩散元胞自动机的扩散规则
以二维元胞自动机为模型,并采用摩尔型邻域.同时为简化计算,假设海洋中的污染物不会与海水发生化学反应以及发生蒸发、降解和乳化等现象,污染物仅受到本身分子运动和水流以及风的作用.根据上述假设,污染物在海水中扩散的过程中会发生分子扩散和机械弥散两种情况.
当污染物流入海洋时,由于污染物本身的分子运动,污染物通常由高浓度处向低浓度处扩散,这种扩散称为分子扩散.根据菲克定律,可以得到污染物在海面的扩散规则:
(2)
其中M为质量,i,j为行列号,m为静态扩散系数,d为斜向系数,t为时刻.根据Karafyllidis[10]的研究得知,当m=0.084、d=0.16时模拟效果最契合实际情况.
在实际情况中,水流和风对污染物的扩散存在重大的影响,这种由于水速或风速造成的扩散漂移现象被称为机械弥散.结合分子扩散和机械弥散,可得到海水中污染物扩散元胞自动机的扩散规则:
(3)
其中W为元胞八个方向上的修正系数.
3.2 高斯平滑滤波法改善边缘效果
元胞自动机是基于规则的投影网格,而网格分辨率受到计算资源的限制,往往是有限的.当网格分辨率较低时,边缘处就会出现明显的锯齿现象.为解决上述问题,采用高斯平滑滤波法进行元胞自动机边缘的平滑处理,以达到改善边缘锯齿化的目的.
高斯平滑滤波算法原理是每一个像素点都由其本身和邻域内的其他像素值加权得到.随着邻域像素点距离中心像素点的距离增加,其权值将迅速减小,从而使像素点的颜色过渡更加自然.其主要思想是通过对高斯函数进行离散化,以离散点上的高斯函数值为权值对邻域内像素点的加权平均,即可达到平滑边缘的目的.
对于一个N×N的邻域,窗口模板大小为(2h+1)×(2h+1)的高斯卷积核为:
(4)
其中σ为方差,h为模板矩阵的维数,m,n为窗口内相对于中心元素点的相对坐标.
(5)
3.3 基于四叉树算法的网格存储结构
在大规模海面的污染物扩散模拟过程中,元胞自动机和投影网格需要大量的离散数据,简单的数据存储往往会降低绘制速率.引入四叉树算法提高场景绘制速率.将海面平面分割成四个相等的四边形,依次迭代细分,直到满足绘制的网格分辨率或给定的阈值为止.每次迭代出的四边形都为四叉树的一个节点,每个节点保存该区域所包含的所有信息,例如中心点的高度值、分割阈值、水流速度、水流方向、风速、风向、深度值等网格数据.在绘制海洋中污染物的扩散过程时,通过遍历的方式,对四叉树的每一个节点进行访问,如图2所示.
图2 四叉树算法简化网格示意图
4 实验结果与分析
实验采用基于Windows系统,Unity3d平台开发的基于元胞自动机的大规模海面污染物扩散仿真系统,硬件环境为:Intel(R)Core(TM)i7 CPU 4790 3.60GHz,8G RAM,显卡为ATI AMD Radeon R7 200 Series.
图3中为采用本文算法绘制不同分辨率的海面效果与文献[1]中海面效果的对比,图3(a)为文献[1]中采用TMA模型模拟的海面,图中看出波浪具有明显周期性,模拟海面不够真实;而图3(b)-图3(d)为本文采用投影网格算法模拟海面效果,图3b海面网格的分辨率为512×512,分辨率较低,同样具有明显周期性.图3(c)采用相同算法,但海面网格分辨率为2K×2K.图3(d)模拟海面分辨率为4K×4K的海面效果,图3(c)和图3(d)的海面真实感差距不大,但图3(d)绘制速率较低,所以在实时的条件下,图3(c)模拟海面效果最佳.
图4中为本文算法与文献[3]海面波浪效果图,图4(a)为文献[3]模拟的海面,从图中可以看出,文献[3]模拟的海面波浪真实,但文献[3]并没有考虑海面存在污染物的情况;而图4(b)为本文拓展海面存在污染物时海面波动的效果图,在实时的条件下,大大提高真实感.
图3 不同分辨率下模拟海面与文献[1]对比实验
图4 与文献[3]对比实验
图5展示不同时刻污染物的扩散状态.随时间变化以及不同区域浓度因子的变化,污染物扩散的范围以及颜色的效果呈现不同状态,显著提高真实性.
图5 不同时刻污染物扩散效果实验
图6展示应用平滑滤波算法改善边界效果的实验对比图.图6(a)是没有利用平滑滤波算法的效果图,而图6(b)是利用平滑滤波算法的效果图.从图6(a)和图6(b)中可以明显看出,应用平滑滤波算法可以明显改善由于网格分辨率低而产生的边界锯齿化.
图6 应用平滑滤波算法效果对比实验
图7为大规模海面污染场景模拟实验.图7(a)展示真实海洋赤潮生态现象,图7(b)为文中模拟的大规模海面的赤潮场景,图7(c)为海洋泥沙分界现象,图7(d)为文中模拟海面的分界效果图,通过以上对比可以看出,应用文中方法模拟大规模海面污染物扩散场景还原度较高,有较大的真实感.
图7 应用本文方法与真实场景对比实验
为检测大规模海面污染物扩散仿真效果可行性,表1列出了本文实验以及是否使用四叉树算法数据的对比状况.可以明显看出本文算法在显著提升模拟的细节同时,保证了实时性.
表1 大规模海面污染物扩散模拟实验数据对比
Table 1 Comparison of simulated experimental data of large-scale sea surface pollutants
实验图网格分辨率使用四叉树算法帧率(FPS)未使用四叉树算法帧率(FPS)D图3b512×5127432图3c2K×2K4218图3d4K×4K123.8图4b640×4807126图5(a),5(b),5(c)640×48070,68,5635,24,11图7b1200×7206321图7d1200×7205926
5 结 论
本文提出一种元胞自动机改善大规模海面污染物扩散模拟方法.首先,采用投影网格方法进行海面网格建模,在模拟大规模海面同时提高绘制速率;此外,利用元胞自动机结合海面网格的方法,实现海洋中污染物动态扩散过程的模拟,引入浓度因子,增加污染物扩散的细节,并利用高斯平滑滤波算法平滑元胞边界效果;最后,采用四叉树算法简化海面网格,大大提高绘制效率,大幅度提升大规模海面污染物动态扩散过程真实感.实验数据表明,本文的方法能够实现大规模海面污染物扩散状态下的实时模拟.在未来工作中,需进一步研究污染物与环境的交互,提高模拟真实度.