航道点云数据可视化技术研究与应用盘彬彬

(整期优先)网络出版时间:2018-12-22
/ 2

航道点云数据可视化技术研究与应用盘彬彬

盘彬彬

广东省地图院广东广州510500

摘要:随着科技的不断进步,为解决航道点云数据实时建模显示效果差和耗费时间长的问题,以长江口航道点云数据为对象,在Unity3D开发环境下研究点云数据的预处理、三角网格剖分、插值以及渲染,采用基于高度图的算法,高效地实现航道点云数据的可视化。

关键词:航道点云数据;三角剖分;可视化

引言

随着测量技术的飞速发展,点云数据获取的方式越来越多,越来越先进。如今在陆地上获取点云数据主要是通过激光扫描仪器,而水下航道点云数据主要依靠单波束和多波束声呐设备来获得。声呐设备一般安装在船舶或潜艇上,采集点云数据的精度、密度除跟设备的精度有关外还跟设备的采样周期、船舶航行速度有关。随着多波束技术的快速发展,航道点云数据在密度和体量上都有很大提升。声呐扫描获取的点云数据虽数据量大,但冗余和噪声少,且排列规则。根据声呐采集点云数据的特点,本文创新地采用基于Unity3D的地形处理技术,将离散的航道点云数据可视化地构建成逼真的水下航道。并将该技术成功应用于“耙吸挖泥船模拟仿真平台”项目中。

1Unity3D介绍

Unity3D是一个全面整合的专业3D引擎,在虚拟现实、仿真计算、3D重现上有着广泛的应用。该3D引擎具有丰富的组件模块,如地形、物理、渲染组件等。Unity3D的可视化编程界面能完成各种复杂的开发工作,高效的脚本编辑、模型的自动瞬时导入、一键发布、多平台开发和部署,开发者不需要了解图形底层细节相关知识就能开发出三维程序。Unity3D地形处理模块底层实现原理主要是基于高度图。高度图是由二维数组组成的一组高度数据。地形的高度就是由一系列高度不同的网格组成,数组中每个元素的索引值用来定位网格,而所存储的值就是网格的高度。Unity3D可手动设置地形的长度和宽度,也可以通过脚本来创建地形,设置长度、宽度和高度。Unity3D虽然功能强大,但在点云数据处理方面一直是空白,没有组件可方便地构建场景。对航道数据可视化、地质地形建模、仿真模拟系统开发形成了一定的瓶颈。本文将航道点云数据与Unity3D地形处理模块相结合,开发一套可以高效处理航道点云数据的基础组件,可快速实现点云数据的可视化。

2点云数据

采样设备采集物体表面的空间位置坐标信息,得到1个点的集合,称之为“点云”。该集合能离散地表示1个物体的外表面形状。除(x,y,z)代表的几何位置信息外,还可以表示1个点的RGB颜色、灰度值、深度以及分割结果等。点云数据的格式如下:

PointCloud={x,y,z,r,g,b,灰度值,深度,…}点云数据重建是逆向工程的一个分支,被广泛地应用于计算机辅助设计与制造、可视化仿真系统场景建模、地理信息系统中地形地质建模[7-9]。航道点云数据空间位置坐标信息是基于大地坐标系进行测量得到,可以根据大地坐标系、地图投影、投影坐标系推算出各点处的经纬度信息。

3巷道点云采集及定向

用三维激光扫描仪选定第一个扫描站作为基准站,通过相邻站点间3个同名靶球,按照ICP算法将扫描的6站点云数据配准,其中最大和最小配准误差分别为1.1mm和0.3mm,总体配准中误差为0.8mm。把采集的参考标靶中心点坐标导入SCENE软件中,并强制添加扫描仪坐标下对应点云的各参考标靶中心,计算扫描仪坐标与大地坐标之间的七参数,利用3个平移参数、3个旋转参数以及1个尺度参数,即可将所有点云数据坐标转换到实际大地坐标系统中。

4航道点云数据处理

航道点云数据的处理流程分为数据读取、数据预处理、三角网格构建、高度插值、渲染等。本文处理的航道点云数据集合只包含几何位置数据,数据存储于文本文件中,每行3个数据,分别表示1个点的x,y,z的值。以流的方式读取点云数据,将数据放入内存。为了快速构建三角网格,点云数据分别按照X轴、Z轴排序,确定地形在X、Z轴上的最小、最大值,分别为MinX,MaxX,MinZ,MaxZ从而得到整个地形区域的整体范围。同时,能得到地形的中心坐标为:

Dx=MaxX-MinX(1)

Dz=MaxZ-MinZ(2)

CenterX=(MaxX+MinX)/2(3)

CenterZ=(MaxZ+MinZ)/2(4)

为了提升地形加载速度,将整块地形加载分割成Column×Row区域块,程序将根据视野范围变化动态地决定那些区域块进行加载与显示。每个区域块的分辨率为Resolution,各个分辨率对应的实际物理长度值为CeilSize,则可得每一区域块的长度为:

CeilLength=CeilSize×Resolution(5)

Column=Dx/CeilLength(6)

Row=Dz/CeilLength(7)

设置该地形块数据初始化为无效数据Valid-DataMask。取一区域包含所有顶点,该区域的大小可以通过现有区域的最小值确定:

AreaMinX=MinX-A,0<A<1(8)

AreaMinZ=MinZ-A,0<A<1(9)

AreaDx=Column×CeilLength+A×2,0<A<1(10)

AreaDz=Row×CeilLength+A×2,0<A<1(11)

最小值减去1个正数,使得其值更小;整个区域块的长宽都进行适当放大,这样使得整个区域面积比实际区域面积稍大,可以包含所有区域范围内的点云数据。将该区域划分成AreaRow×AreaColumn块。将该区域平分成N块,则对应的AreaRow和

AreaColumn分别为:

AreaColumn=AreaDx/N,N>0正整数(12)

AreaRow=AreaDz/N,N>0正整数(13)

N的取值决定了矩形块的大小,同时也决定了区域块中所要处理的三角形的数量。对XZ平面上排序好的点云数据进行二维Delauney三角网剖分。

5三维航道数据可视化实现

航道点云数据经算法处理后,数据序列化存入文件中,在Unity3D程序中反序列化读取对应数据,并将数据传递给地形对象对应的地形数据中,同时,对该区域块数据进行纹理贴图,使得构建的地形更真实。将该构建的地形生成预设体,该预设体可放入不同的Unity3D工程中。

6实验对比与分析

本文实验的点云数据是长江口航道点云数据,以浮点数存储形式储存,每行3个数据,分别对应顶点的X、Y、Z。实验操作电脑系统为Win764位,硬件配置为gtx960显卡、16G内存、i7-4790CPU处理器。实验分2组进行。第1组为同等划分精度,研究数据量与显示帧率的关系;第2组为同等数据量的情况下,研究不同划分精度与显示帧率的关系。

7算法应用

该算法成功应用于发改委资助的创新能力建设项目“耙吸船模拟仿真平台”。根据真实长江口航道点云数据构建航道地形,实现航道三维建模显示,在数据划分精度上采用了0.5m的系数,帧率显示25帧以上。流畅地在仿真环境中模拟疏浚作业,实时漫游浏览航道地形,5种常见地质纹理数据任意切换,对航道地形进行挖泥模拟操作,挖深挖宽可调节。该算法设计已模块化,可快速地将该算法移植到不同的仿真程序中。

结语

本文对点云数据进行排序优化,加快处理速度,创新地采用基于高度图的方法将点云数据处理成Unity3D能识别的数据。

参考文献

[1]房旭东,钟贵才.多波束声呐和侧扫声呐数据融合方法研究综述[J].海岸工程,2016,35(4):63-68.

[2]李岳明,李晔,盛明伟,等.AUV搭载多波束声纳进行地形测量的现状及展望[J].海洋测绘,2016,36(4):7-11.

[3]王丽辉.三维点云数据处理的技术研究[D].北京:北京交通大学,2011.