基于Matlab的水下碍航物可视化研究
2016-02-21王华强王宇凯王久
王华强++王宇凯++王久
摘要:本文从介绍Matlab强大的数据插值功能和数据可视化功能着手,分析了Matab在水下碍航物三维可视化方面的技术应用,重点研究了碍航物水深数据在Matlab中的三维表达以及空间分析应用,论述了基于Matlab碍航物三维可视化研究的意义。关键词:碍航物 Matlab 可视化 空间分析
1.引言
随着现代海洋经济的不断发展和海运事业的不断拓展,水下碍航物一直是影响海洋航行安全的重要因素。探测新开辟水域的海底地形,精确测量水下碍航物的位置和形态,是保障船舶航行、锚泊安全的必然要求。多波束测深系统目前已经成为海底地形测量的主要工具,其获得的数据经过处理后,可以获得厘米级分辨率的水深数据用于海底地形成图。受多波束测深系统的物理特性影响,多波束测量获取的水下碍航物水深数据具有数据量大,分布不规则,点阵离散的特点。针对高密度水深数据的精细插值,一般可视化软件需要设计较为复杂的算法来进行计算,而Matlab可以直接使用内部函数来对散点数据进行网格化计算,从而实现三维可视化制图,并且能够针对三维图形进行相关空间分析工作。
Matlab是由MathWorks公司推出的面向科学计算的程序设计语言,主要运用于矩阵计算、科学数据分析、数据可视化等方向的研究,可以实现数值分析、统计、偏微分方程数值解、信号处理、图像处理等诸多领域的计算和图形显示功能。Matlab使用C语言编写,以向量和矩阵为基本数据单位,软件内包含有大量事先定义的矩阵函数,并且有很强的用户自定义函数功能,可以通过设计高级算法来完成高性能数值计算,编程效率远高于其他语言,其程序的可扩展性和可移植性也较好,可以与C、C++Builder、VB、VC等集成编辑环境和应用程序进行交互。
2.Matlab在碍航物三维可视化中的应用
Matlab拥有一系列二维、三维绘图函数和高级图形命令来绘制计算结果,并能通过对图形线型、边界面、色彩、渲染、光线、视角等特性的处理将图形特征完美呈现。Matlab还提供了句柄图形命令,句柄图形命令可以对图形对象(例如线,面,文本框等)的属性值直接进行更改,从而实现对图形的显示进行精密控制。
2.1 绘制碍航区水深点云图及等值线图
通过多波束系统采集的碍航区水深元数据经过数据后处理后,可以直接使用“load”命令导入到Matlab中,然后再利用scatter3(x,v,z)函数可以绘制出碍航区的水深点云图。以2014年珠江口某次Reson 7101多波束扫海数据为例,原始数据为Caris Hips输出的原始水深数据文件,load进matlab后成为数据矩阵变量MB7101,二、三维散点图(见图1)的绘图主要程序语句为:
subplot (1,2,1);scatter(MB7101(:,1),MB7101(:,2),b.);
subplot(1,2,2);scatter3(MB7101(:,1),MB7101(:,2),MB7101(:,3).b.):
%MB7101(:,1)为数据变量的第一列;%MB7101(:,2),MB7101(:,3)为数据变量的第二、三列;%b.表示蓝色散点图。
2.2 生成碍航区格网水深数据表
在构建碍航区三维网格模型时,通过多波束采集处理得到碍航物水深数据一般多为无规律的离散点数据,且分布状态也不能满足建模要求,为了使碍航区的三维立体模型更加精准,Matlab针对离散点的绘图需要先行进行插值计算,生成新的规则分布的格网水深点。zi=Griddata(x,Y,z,Xi,yI,method)函数可以对原有的(X,Y,Z)数据在新的规则格网(xi,vi)上进行插值生成新值Zi,采用的插值方式(method)主要有linear(线性插值),cubic(三次插值),spline(三次样条插值),nearest(最邻近点插值)等四种方式,默认为线性内插。继续以上面的数据矩阵变量MB7101为例,为获得等值线图和格网立体图(见图2),其程序语句为:
[xi, yi] =meshgrid(min(MB7101(:,1):2:max(MB7101(:,1).min(MB7101(:.2):2:max(MB7101(:.2)));%生成新的规则网格。
zi=griddata(MB7101(:,1),MB7101(:,2),MB7101,(:,3),xi,yi);%在新网格上赋值。
subplot (1,2,1);contour(xi,yi,-1xzi);%绘制二维等深线。
hold on
subplot (1,2,2);meshe (xi yi,-1xzi);%绘制带有等值线图的三维格网图。
对于碍航区而言,通过函数contour(x,y,z,n)中参数n的不同设置,可以迅速调整各种等深线的值得到碍航区不同等值线的等深线图,从而可以快速确定可通过区,为通航条件做出决策依据。
2.3 绘制碍航物三维立体图
Matlab插值生成的规则网格水深数据表中包含有碍航区水深的全部数据,利用Matlab的Surf函数可以将其绘制成碍航物的三维立体曲面图,曲面图的特性与网格图相反:线条是黑色的,线条之间的补片有颜色;在网格图里,补片是黑色的而线条有颜色。Matlab还可以通过调用函数shading来提供平滑加颜色和插值加颜色功能。图3分别显示了曲面图、曲面平滑加颜色图、曲面插值加颜色图和三维等值线图。
2.4 碍航物空间分析
碍航物空间分析的主要内容是其空间形态及其与周边航行环境的空间关系分析。Matlab提供了很多空间分析函数来实现这一过程,在完成三维立体图的绘制之后,除了前文提到的二维和三维等高线工具,还可以利用gradient函数和quiver函数针对碍航物的坡度、坡向进行计算,本次碍航区的坡度、坡向计算结果图如图4所示。
View函数则可以通过设置不同的观察视点,来展示不同视角下三维碍航物的空间特征。其调用格式为:viexv(az,el),参数az是方位角值,参数el是仰角值,均以度为单位。系统缺省的视点定义为方位角-37.5°,仰角30°。当x轴平行观察者身体,y轴垂直于观察者身体时,az=0;以此点为起点,绕着z轴顺时针运动,az为正,逆时针为负。el为观察者眼睛与xy平面形成的角度。当观察者的眼睛在xy平面上时,el=0;向上el为正,向下为负。图5分别显示了从几个不同视角来对观察碍航物的效果图。
当通航区存在碍航物时,在已经探明碍航物的空间形态之后,在做出临时通航决策时,需要获取船舶航行通过碍航区的实时模拟图,完整的三维动态模拟需要耗费较多建模和动态演算的时间,通过Matlab的Contouslice函数可以绘制等值切面图进行测试。图6分别显示了连续等值切面图在碍航物上的效果。
3.结语
(1)三维可视化利用计算机图形学和图像处理技术精确描述和理解水下地质结构物,既可以怍为一项技术,也是一种工具,但是针对水下碍航物的三维可视化研究还比较少,目前的研究多停留在探测技术手段的使用上面,或者说是还停留在数据的获取阶段,而缺少对数据的深入挖掘。可视化技术提供了一种仿真的、三维的并且具有实时交互的能力,帮助研究者从三维图形世界中通过空间形态学和空间分析技术来获取信息或者创造性思维。
(2)Matlab具有强大的计算引擎和图形引擎,提供了图像处理分析函数及工具箱,极大的简化了具体的编程过程,通过矩阵数据的重构快速实现对碍航物的形态重现和空间分析,并且可以通过句柄函数来对图形参数进行修改,即使是在绘图已完成的情况,仍然可以在绘图界面实现实时交互,并能通过反编译将最终绘图结果以编程M文件的方式呈现出来,实现从结果到源程序的反编译过程,大大减轻了面向对象程序语言编程的困难。
(3)利用Matlab来对水下碍航物进行三维可视化呈现,一方面解决了地理空间数据可视化过程中的复杂编程,为不同地域空间环境的模拟和仿真提供了捷径,另一方面也为水深数据的深度挖掘提供了一种新的途径,将先进的科学计算可视化软件引入到碍航物的信息化管理当中,可以为碍航区通航决策提供依据,具有重要的实用价值。