首席数据官

Hi, 请登录

项目总结——基于WebGL的点云全景可视化

1.项目简介

这个项目是我2016年研一上学期的个人项目,目的是使用webgl在浏览器端渲染点云和全景数据,要求流畅高效,能够实现海量点云和全景数据的可视化,以及基于点云的简单量测功能(使用ThreeJS库,也涉及到简单的前端、数据库知识)。这个项目是在我的本科毕业设计的基础上进行的,本科毕设做的是基于webgl的点云可视化(点云网络可视化示例),研一上做的是用多分辨率八叉树建立点云索引,并增加了全景数据的可视化以及与OSM的联动,但是两者的区别还是非常大的。核心区别在于前者是使用普通的均匀八叉树对点云数据建立索引,无法满足网络可视化要求,而后者使用的是多分辨率八叉树对点云建立索引,效果更好。

2.研究现状

国内外在点云全景可视化方面差距巨大,国内的类似项目产品不是很多,比如wish3D等,国外的开源和商业的比较多,比如potree、navvis、cesium、Pointcloudviz、AHN 3D viewer、Cyark viewer、3DHOP、euclideon、Matterport等,有用于科研,也有商业产品。其实对于一般用户来说,图像更为直观,所以纯点云的可视化很难用于商业用途,通常需要加上影像。为了达到直观的浏览效果和可靠的量测功能,我们有三种选择方式:图像加隐藏的点云、带有深度信息的图像、LOD Mesh,三种方式各有优劣,我所做的属于第一种方式。

3.点云索引

点云数据的特点是数据量巨大,分布极不均匀,特别是车载点云数据,不管是为了方便数据处理,还是可视化,我们都需要对其建立索引,常见的点云数据索引有Octree和KD tree;当然对于不同类型的点云数据,建立索引的方法又有所不同,比如,机载激光点云呈面妆分布,适合用四叉树建立索引。下面仅简要介绍规则八叉树、多分辨率八叉树和KD树。

3.1 规则八叉树

规则八叉树是最简单直观的一种八叉树,是四叉树在三维空间上的推广,适用于建立三维空间数据的索引。规则八叉树数据模型在三个相互正交的方向对三维空间的几何实体进行平均剖分,每次剖分都将一个体元等分为八个体元,每个体元具有相同的时间和空间复杂度,通过循环递归的方式,一个体元可以被剖分为2^n×2^n×2^n个体元,最底层的体元为叶结点,其余体元为父结点。剖分的终止条件可以是最大层次,也可以是最小体元的大小或数据的多少。

规则八叉树建立索引后,点云数据只存在于叶结点,无法用于可视化,我们需要将给上层非叶子节点分配适量点云,比较简单的办法是从叶子结点抽取部分点云数据到上层结点(File 0~File 7抽取八分之一到File 64,以此类推),如下图;其缺点是节点数据分布不均,且数据总量变大,只适用于客户端软件的点云可视化,在浏览器端基本无法使用,解决该问题的一个直观方法是,在建立索引之前对点云进行预处理,使数据量减小,分布更加均匀,同时也不影响可视化效果。

北京缔元信互联网数据技术有限公司公司规模_基于html5和webgl技术的大规模数据可视化_大数据可视化页面

3.2 多分辨率八叉树

多分辨率八叉树是一种有损的索引方法,它将原始点云数据分布在八叉树的各个节点上,不会是数据总量变大,非常适合点云网络可视化。首先,根据点云数据的boundingbox和数据量确定八叉树层数和根节点点云密度,下层点云密度是上层点云密度的八倍(如下图),然后判断每个点所属的结点和层数;对于根节点,若点与根节点中的其他点的距离都大于阈值,则将其纳入根节点,直至无法加入新点,然后对子节点使用同样的方法,将子节点数据填满,以此类推;对于没有归属的点云数据则直接丢弃,为了尽量减少丢弃数据,需要确定合理的八叉树层数和密度参数。

使用多分辨率八叉树建立的索引直接就构成点云数据的多层次细节模型(LOD),而且每个节点的点云数量相差不大,能够快速加载数据,保证网页浏览的流畅性。

3.3 KD树

KD树是一种平衡二叉树,是对数据点在k维空间中划分的一种数据结构,常常用于高维数据的索引。对于三维点云数据,我们可以根据其x,y,z坐标以及其他属性不断进行二分,从而建立索引。KD树非常灵活,不仅适用于点云数据的可视化,也适用于数据查询。

3.4 对比

大数据可视化页面_北京缔元信互联网数据技术有限公司公司规模_基于html5和webgl技术的大规模数据可视化

规则八叉树建立索引的特点是节点大小极不均匀,可能存在许多空节点,而且建立LOD模型后索引数据大小比原数据大很多,因此适用于客户端点云数据的可视化,但是不方便进行后续的点云数据处理,不适用于点云的网络可视化;多分辨率八叉树建立索引的特点是节点大小均匀,不会存在空节点,索引数据大小和原数据大小差不多,但是只适合用于可视化,不能用于后续数据处理;KD树的优点是在领域查询上有优势;缺点是当数据量很大时,若划分粒度较小,建树开销会很大;此外,KD树对数据的插入顺序很敏感,因为它对数据没有处理机制基于html5和webgl技术的大规模数据可视化,没有像二叉树那样有平衡旋转,使得数据非常依赖于插入顺序。

4.全景可视化

全景可视化比较简单,需要对全景建立索引,划分成小块,并进行下采样,得到分块多分辨率的图像块,加载时优先加载屏幕内图像块和低分辨率图像,尽量减小加载的数据量,保证流畅性。

试看结束,如继续查看请付费↓↓↓↓
打赏0.5元才能查看本内容,立即打赏

来源【首席数据官】,更多内容/合作请关注「辉声辉语」公众号,送10G营销资料!

版权声明:本文内容来源互联网整理,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 jkhui22@126.com举报,一经查实,本站将立刻删除。

相关推荐

评论

  • 昵称 (必填)
  • 邮箱
  • 网址
二维码
评论