基于 Web GL 的机载激光雷达点云数据可视化
来源:第三维度 作者:曾珣 单位:武汉大学遥感信息工程学院
摘要:提出了一种基于网络图形库 Web GL,在网络浏览器中对大规模机载激光雷达点云数据进行交互式三维可视化的方法。该方法以平均分布四叉树进行数据组织,基于视点对四叉树进行快速视锥体裁切实现点云渐进绘制。在此基础上开发了原型演示系统。实验证明该系统能为用户在网络浏览器中提供很好的机载激光雷达点云数据的交互式三维可视化体验。
机载激光雷达 (Airborne Light Detection And Ranging-机载 LiDAR)系统是一种集激光雷达、测姿定位系统(POS系统)以及控制系统为一体的新型航空传感设备,能直接高精效获取地表点的三维坐标,并带有一定的被观测目标的垂直结构信息以及强度信息。近年来随着机载激光雷达技术的飞速进步,机载 LiDAR以其精度高、数据信息丰富、适应性强等特点,正在成为数字高程模型最主要的获取手段之一,在城市测量、电力线路勘测设计、公路铁路勘测、露天矿和垃圾堆放场、森林管理、海岸线的保护、地质灾害监测等行业得到广泛应用[1-2]。
不同于传统的航空摄影测量,机载激光雷达系统直接获取的原始点云数据是一组三维空间内离散分布的点,要进一步对其进行数据分析和结果检验就需要进行点云的三维可视化。而传统的网络地理信息系统(Web GIS)是针对二维的栅格和矢量数据开发的。如何在网络环境中有效地发布激光雷达点云数据在地理信息系统高度网络化的今天仍然没有得到较好的解决。
新的 Web GL(基于网络的图形库)规范[3]的出现为互联网浏览器带来无插件 3D硬件图形加速。该技术的出现使得三维地理信息数据无需插件直接在网络浏览器中的可视化成为可能,立即引起了Web GIS领域的广泛关注。2011年 10月 Google Map率先启用了 Maps GL功能。Maps GL采用了 Web GL技术,无需安装 Google Earth插件就可以在浏览器中实现类 3D的卫星地图界面,以增强 Google地图的体验[4]。ArcGIS等其他各大地理信息系统开发商也纷纷跟进,在今年将对 Web GL的支持纳入到新的开发路线图[5。
在点云数据处理领域,基于 Web GL的点云数据可视化迅速成为了新的研究热点。开源三维点云处理库 Point Cloud Library[6],加拿大 Arius3D公司的Pointstream[7],Open Web Globe项目[8]以及德国海德堡大学地理学院的 GIScience Group研究组[9]都迅速提出了自己的基于 Web GL的点云数据浏览窗口研究方案,并已经开发出了原型。但这些研究主要是针对地面激光扫描点云数据。而目前国内对这方面的研究尚属空白。
本文在简要介绍 Web GL技术的相关知识基础上,分析了机载激光雷达点云数据网络可视化需要解决的难题并给出了技术方案,结合 Web GL技术的特点提出了一种以平均分布四叉树进行数据组织,基于视点进行快速视锥体裁切的点云渐进绘制方法,并在此基础上开发了原型演示系统。实验证明该系统能为用户在网络浏览器中提供很好的机载激光雷达点云数据的交互式三维可视化体验。
1 Web GL
Web GL是一套跨平台,开放免费的底层三维图形 Java Script API,允许开发者在浏览器中直接嵌入支持硬件加速的互动 3D图形。Web GLAPI是基于OpenGLES2。0的,是 OpenGLES2。0的 子 集。Web GL可以为 HTML5Canvas提供硬件 3D加速渲染,这样 Web 开发人员就可以借助系统显卡来在浏览器里更流畅地展示 3D场景和模型了,还能创建复杂的导航和数据视觉化。作为一项开放的 Web 标准,Web GL是由 KhronosGroup开发的,受到业界主流硬件产品和浏览器软件提供商的广泛支持,包括Google,Apple,NVIDIA等公司和组织都是其中的成员,即这一标准的制定者和积极倡导者。FireFox,Google Chrome,Opera和 AppleMacOSSafari等浏览器产品已提供对 Web GL的支持。[3]Web GL完美地解决了现有的 Web 交互式三维动画的 2个问题:第一,它通过 HTML脚本本身实现Web 交互式三维动画的制作,无需任何浏览器插件支持;第二,它利用底层的图形硬件加速功能进行的图形渲染,是通过统一的、标准的、跨平台的 OpenGL接口实现的,所以 Web GL可以运行于许多不同的硬件设备之上,例如桌面电脑、智能手机、平板电脑和智能电视。
因为是被设计成直接工作在底层显卡端的,所以 Web GL比目前其他的典型的 Web 技术都要更加复杂。这也正是它为什么能够如此迅速的完成大量的计算,并实现复杂的实时 3D渲染的原因。因此,很多第三方的 Web GL中间件(Three.js,Scene JS,Processing.js等)被开发出来,帮助不熟悉 OpenGL着色语言(Open GL'sshading language,GLSL)的使用者完成一些复杂的操作,减轻三维网络应用的开发负担。然而,这些 Web GL中间件中的大多数都是针对纹理网格(texture dmeshes)开发的,对于点云数据的可视化并不适用。
XB Point Stream[10]是一个专门针对点云数据开发的开源 Web GL图形引擎。它提供了点云数据基于Web GL的网络可视化所需要的基础框架,大大简化了基于 Web GL 的点云数据可视化应用的开发流程。因此,本文选择在其基础上进行基于 Web GL的机载激光雷达点云数据可视化的开发。
2 研究方案
机载激光雷达获取的点云数据数据量很大,单个分块的数据量通常达到几百 MB甚至几个 GB。要在网络浏览器中对数据量如此巨大的点云进行可视化显示,就必须解决以下 2个问题:
1)点云数据的大小往往超过了计算机内存和图形处理器显存的容量。
2)将整个点云文件下载到本地计算机往往需要几分钟甚至更长的时间,这在网络环境中是不可容忍的。交互式可视化显示和操作环境中几秒钟的延迟都是用户无法容忍的。
当前大规模点云数据可视化的主流解决方法是使用多层次细节模型(level-of-detail,LOD)与内外存 调 度 (out-of-core)的 点 云 数 据 绘 制 技术[11-12]。但这并不适用于本文所需要解决的问题。
因为 Web GL是一组 Java Script API,基于 Web GL的网络应用也使用 Java Script开发并运行在浏览器中。
而这些算法往往数据结构复杂、CPU计算密度大并不适用于基于 Java Script的 Web GL开发。因此本文采用了一种数据结构简单,算法易于实现的以平均分布四叉树进行数据组织,基于视点进行快速视锥体裁切的点云渐进绘制方法。
该方法试图从两方面出发解决上述 2个难题:
1)数据预处理:对需要网络发布的点云数据采取四叉树空间划分的数据组织,将原始点云数据进行分块存储。
2)绘制机制:在浏览器端采用视点相关的点云渐进绘制方法,只下载和绘制与当前视点相关的数据块,而不是一次性装载整个点云的数据。 3 基于四叉树的机载激光雷达点云数据组织
点云数据的可视化数据组织多采用八叉树或其变种的组织形式[13-14]。但是这些可视化应用所针对的主要是近景激光扫描或近景摄影测量所得到的点云数据。而机载激光雷达所获取的点云数据与之相比具有以下特点:
1)机载激光雷达获取的点云数据往往覆盖一片很大的区域,在平面坐标方向(x轴,y轴)分布很广,而在高程坐标方向(z轴)的分布与前者相比通常很小。因此在使用八叉树对机载激光雷达数据进行空间划分数据组织时,会在 z轴方向产生大量空节点,既浪费了存储空间也降低了绘制效率。
2)另一方面,对于机载激光雷达点云的可视化渲染通常采用鸟瞰,飞掠(fly-by)视角。在这种视角下,基于四叉树的空间划分就可以有效地进行视场剪裁。
因此,本文采用黄先锋等人[15]提出的均匀分布四叉树点云数据组织。传统的四叉树结构,将所有的点都存储在叶子节点中,中间节点仅存储指向子节点的指针。均匀分布四叉树,首先将点云空间按照四叉树模型进行细化,依次将点云均匀地布置在每一个节点上。绘制时,可以通过视场范围快速地进行数据裁切。由于点云数据紧凑地组织在一起,所以可以使用内存映射的方式将数据快速传给显卡的图形处理单元(GPU)进行渲染。
4 点云数据预处理
点云数据预处理程序从原始点云文件中读取点云数据,然后构建点云的平均分布四叉树,将四叉树中每个节点中包含的所有点存储到一个单独的文件中;同时生成该点云数据的元数据文件,元数据文件包含该点云数据格式,数据文件存储目录,空间覆盖范围,总点数,个子节点文件名和包含点的个数等描述信息。在构建平均分布四叉树时,本文采用文献[15]中将原始点云文件的分段的方法自上而下递归构建四叉树,流程如下:
1)直接将文件分成 100000段或者更多段。
2)从原始点云中随机读取某段中的一个点,从第一层开始计算。
3)计算落在该层的某个节点编码,如果该节点上点云个数已经达到上限 max Num Node Points,则从下一层开始计算,继续执行 2)。
4)根据编码将该点存储到该节点对应的数据块文件中。
max Num Node Points对于点云的绘制效果有很大的影响。maxNumNodePoints过大时,数据分块过大,在绘制时由于每块节点数据的传输延迟会出现卡顿的情况。ma xNum Node Points过小时,四叉树的层次太大,加重了视锥体裁切运算和数据输入线程的负担。
5 基于视点的点云渐进绘制
文献[6-9]中的点云可视化方法都是将一次性静态地载入整个点云,无法实现大规模点云的可视化。本文采取一种基于视点的点云渐进绘制机制。
可视化应用启动时只装载四叉树根节点的数据,后续的文件输入由一个背景线程进行处理以免影响用户对三维点云的交互操作。在每一帧绘制开始时,根据当前的视锥体和投影参数对四叉树进行裁切。对于落入视锥体范围的四叉树节点将其对应的数据块文件按照四叉树中从上到下的顺序加入XB Point Stream的点云渲染队列,对视锥体以外的节点则将其从队列中删除。由于每个节点数据文件都很小,因此不会由于数据传输造成点云的绘制的停顿。点云均匀分布在四叉树上,XBPointStream对于输入的点云渲染队列是按照四叉树从上到下的顺序进行渐进逐层加密绘制。当用户进行平移,缩放,旋转等互操作时,只需要根据视锥体裁切四叉树的结果,加入或删除对应的节点数据块。这种绘制方法只需要根据视场变化处理相关的部分数据,避免了一次性装载全部点云数据带来的系统和网络负担,能较好地实现大规模点云数据的实时绘制。
在某些极端情况下,例如初始视场覆盖整个点云数据时,视锥体裁切的结果会包含所有的四叉树节点。主流显示器的分辨率为 1920×1080,包含2073600个像素。当点云绘制程序读入的点的个数大于绘制空间的像素数时,就意味着多个点会被同一像素覆盖。因此,本文在由上至下逐级加密绘制点云时,计算四叉树每一层的节点包围矩形 AABB在绘图空间的投影大小,如果投影大小小于一个像素,就停止继续向下读入四叉树节点的点云数据。
6 演示系统与实验结果
在上述思想的基础上,本文开发了一个基于Web GL的机载激光雷达点云数据网络可视化原型演示系统(如图 1所示)。系统包括点云数据预处理程序和基于 Web GL的点云数据可视化 Web 应用两个组成部分。数据预处理程序读取常见的 Las格式的 LiDAR数据,将四叉树构建完成后每个节点的点保存到单独的数据分块文件中,然后上传到网络服务器或云端存储。用户使用支持 Web GL技术的浏览器通过访问基于 Web GL开发的页面获取点云数据的交互式可视化体验。点云数据可视化 Web 应用由四个部分组成。Pointload.js负责进行基于视点的四叉树裁切并将点云数据块队列发送给数据解析器,由其解析成 XB Point Stream所需的数据格式。XB PointStream中间件负责将传入的点云数据绘制到Web 页面,并在用户通过 Web 页面发出交互操作请求 时 进 行 响 应 将 新 的 视 锥 体 参 数 发 送 给pointload.js。
图1 基于 Web GL的机载激光雷达点云数据网络可视化技术流程图
实验硬件环境为:Inteli524102。3GHzCPU,4GBDDR3内存,NVIDIA GT550m显卡;软件环境为 Firefox 15.0.1浏览器。对一个包含 8811489个点的机载激光雷达点云进行绘制时(如图 2所示),当使用全部载入点云数据策略时,绘制速度仅为 10帧左右;而采取本文提出的方法时,绘制速度可以达到 53帧/s,完全能够满足交互式可视化的需要。在实际对点云进行交互式操作(平移,缩放,旋转)时也没有出现任何延迟和卡顿现象。
图 2 演示系统绘制效果
7 结论
本文通过以平均分布四叉树进行数据组织,视点相关的快速视锥体剪裁点云渐进绘制方法,实现了基于 Web GL的机载激光雷达点云数据可视化。传统的 LiDAR点云数据发布机制,需要用户根据航测工程名称,数据空间覆盖范围等元数据信息在网络数据集中查找下载所需的点云原始数据,然后在本地使用专业的 LiDAR数据处理软件进行可视化及后续数据处理和分析。而本文提出的基于 Web GL的机载激光雷达点云数据可视化技术使得用户无须使用昂贵的专业软件仅使用网络浏览器就可以在线实时的浏览 LiDAR点云数据,为将来开发机载激光雷达点云数据网络发布处理平台奠定了一定的基础。下一步我们将把三维量测,点编辑(选取,删除,更改等)功能集成到基于 Web GL的网络可视化窗口中,并以此为基础开展机载激光雷达点云数据处理云计算研究。
参考文献:
[1]刘经南,张小红.激光扫描测高技术的发展与现状[J].武汉大学学报(信息科学版),2003,28(2):132-137.LiuJN,Zhang XH.PrOGREss of airbornel aserscan ningal timetry[J].Geomatics and Information Science of Wuhan University,2003,28(2):132-137.
[2] Shan J,TothC K.Topographicl aserranging and scanning:principles and processing[M].Florence:CRC PressInc-Taylor & FrancisLtd,2008.
[3]Khronos Group.Web GL specific ation[EB/OL].(2011-2-10)[2012-8-31]. https://www.khronos.org/registry/Web gl/specs/1.0/.
[4]Google Inc.Maps GL[EB/OL].(2011-10)[2012-8-31].http://support.google.com/maps/bin/answer.py? hl= zh -Hans&answer=1630790.
[5]Andreas U.Sharing 3D urb and esign with stakeh olders and the public using Web GL[EB/OL].(2012-7-25)[2012-8-31].http://labs.esri.com/presentations/sharing_urban_design_Web gl.pdf.
[6]Kalogiros P.Web GLplugins-streaming point cloud datato the browser[EB/OL].(2012-5-30)[2012-8-31].http://www.pointclouds.org/blog/gsoc12/pkalogiros/index.php.
[7]Pointstream Inc.Pointstream[EB/OL].(2012-6-30)[2012-8-31].http://www.Arius3D.com/pointstream/.
[8]Loesch B,ChristenM,NebikerS.OpenWeb Globe! Anopen sourceSDKforcreatinglarge-scalevirtualglobesonaWeb GL basis[C]//InternationalArchivesofthePhotogrammetry,Remote SensingandSpatialInformationSciences,2012.
[9]Auer MG.Web GLin GIS cience[CP/OL].(2012-1-26)[2012-8-31].http://Web gl.uni-hd.de/.
[10]Salga A.XB_Point Stream[EB/OL].(2011-11-21)[2012-8-31]. http://zenit.senecac.on.ca/wiki/index.php/XB_PointStream.
[11]KovacB,alikB.Visual ization of LIDAR data sets using point-base drendering technique[J].Computers & Geosciences,2010,36(11):1443-1450.
[12]Kreylos O,Bawden GW,KelloggLH.Immersive visual ization and analysis ofLiDAR data[C]//Proceedings ofthe 4th InternationalSymposium on Advances in Visual Computing.Springer,2008.
[13]Wimmer M,Scheiblauer C.Instantpoints[C]//Proceedings Symposium on Point- Based Graphics 2006. Eurographics Association,2006.
[14]Billen MI,Kreylos O,Hamann B,etal,Ageosci enceper spective on Immersive 3D griddeddatavisualization[J].Computers & Geosciences,2008,34(9):1056-1072.
[15]黄先锋,陶闯,江万寿,等.机载激光雷达点云数据的实时渲染[J].武汉大学学报 (信息科学版),2005,30(11):975-978.Huang XF,TaoC,Jiang W S,etal.Real-time renderlarge amount of LIDAR pointclouds Data[J]. Geomatics and Information Science of Wuhan University,2005,30(11):975-978.
上一篇:基于洪水模拟和预报的三维仿真系统设计[ 01-18 ]
下一篇:虚拟流域环境中河道演变的整体自动建模及可视化分析[ 01-19 ]