一种基于Web的海量点云渲染方法
技术领域
本发明涉及计算机图像处理技术领域,具体地说是一种基于Web的海量点云渲染方法。
背景技术
随着时代的发展,用户更加希望自己可以方便的查看和传输大量的数据信息。而随着计算机技术的发展,浏览器成为用户更方便的查询助手,它可以帮助用户快速的查看所需要的信息。如果用户想要产看一些三维图像的信息就需要把这些东西下载下来才能看,不能像查看二维的图像一样在浏览器上直接查看,这是因为由一些扫描设备产生的三维图像的数据量太大,不容易渲染出来。
而通过各种扫描方法得到的点云是最原始的数据,在一些像三维地图或者地球仪的生成都是把点云进行精确地转换而得到的。为了像其他人展示这些由转换得到的传统模型就需要传输大量的数据或者安装第三方应用程序进行查看。例如:potree是一个基于webGL的非常大数据集的点云查看器。potree软件允许用户在web上发布大型激光雷达点云,这样任何人都可以只用一个现代浏览器来浏览数据。
这种传统的方法是比较麻烦的,随着WebGL的发布,用户可以将自己的内容与客户进行分析并且不需要安装第三方的软件。在很多情况下,数据集较小时可以加载进内存,数据集较大时就加载不进内存。因此,有必要找到一种简洁的方法来展示这些模型。
发明内容
针对现有技术的不足,本发明提出了一种基于Web的海量点云渲染方法,其能够在浏览器上实时的查看和传输大量的点云数据集,并且不需要安装第三方的应用程序。
本发明解决其技术问题采取的技术方案是:
本发明实施例提供的一种基于Web的海量点云渲染方法,它包括以下步骤:
S1,获取点云数据;
S2,采用四叉树数据结构进行分配数据;
S3,利用Potree将点云数据进行渲染到Web浏览器上。
作为本实施例一种可能的实现方式,在步骤S1中,通过捕获数据的各种扫描设备得到海量数据,并将得到的海量数据转换成点云数据。
作为本实施例一种可能的实现方式,所述步骤S2包括以下步骤;
S21,将点云数据转换成可见的模型;
S22,对大规模的点云数据使用MNO结构把点云数据分配到数据结构中;
S23,分配的点密度根据结构中节点的阈值而确定,超过阈值的就被分配到子节点中;
S24,采用均匀分布的四叉树结构将点云数据分成很多段,把点云空间按照四叉树模型进行细化,依次将点云均匀地分布在每一个节点上,并将段内的数据映射到内存中。
作为本实施例一种可能的实现方式,所述步骤S3包括以下步骤;
S31,对点云使用点属性进行着色;
S32,采用插值模式对点云进行渲染;
S33,采用自适应模式调整点的大小;
S34,使用光照模型增强场景的深度感知;
S35,将点云数据显示在Web浏览器上。
作为本实施例一种可能的实现方式,在步骤S31中,渲染出的点云的颜色由点属性进行着色,点属性包括RGB、反向散射信号的强度、高程、分类、返回值、点源和节点的细节级别。
作为本实施例一种可能的实现方式,在步骤S32中,将点云渲染为抛物面而不是平面,并且是通过修改片段着色器内的屏幕对齐的方形的深度值来实现的。
作为本实施例一种可能的实现方式,在步骤S33中,点的大小采用自适应点的大小模式来确定,将点的大小调整到特定细节级别的节点之间的间距,所述特定的细节级别为最高级别的可见节点。
作为本实施例一种可能的实现方式,在步骤S34中,如果没有照明提供的阴影,则很难或者甚至不可能感知形状。
作为本实施例一种可能的实现方式,在步骤S35中,通过Lastools工具把点云数据通过Potreeconverter转换成.las文件,之后在Web浏览器上快速的显示出来。
作为本实施例一种可能的实现方式,所述四叉树的构建过程包括以下步骤:
1)从原始点云中随机读取某段中的一个点,从第一层开始计算;
2)计算落在该层的节点编码;
3)根据编码存储到该层的对应节点位置;
4)如果该层的节点点云个数已经达到上限,则从下一层开始计算,并重复步骤2)至步骤4)直至所有层计算完毕为止。
本发明实施例的技术方案可以具有的有益效果如下:
本发明实施例技术方案的一种基于Web的海量点云渲染方法,它首先获取点云数据;然后采用四叉树数据结构进行分配数据;最后利用Potree将点云数据进行渲染到Web浏览器上。本发明实施例技术方案使得对于由扫描得到的海量的数据可以转换为点云数据,并且用户还可以在不需要安装第三方软件的基础上在浏览器上传输数据,并且可以在浏览器上实时的查看三维模型的海量数据。应用本发明实施例技术方案可以方便用户在浏览器上查看三维海量数据时像浏览网页一样方便。
本发明实施例技术方案在浏览器上可以对大量的点云数据进行渲染和处理,提供了一个在浏览器上可以实时的查看和传输大量的点云数据集,并且不需要安装第三方的应用程序。利用本发明实施例技术方案提供的方法,用户可以在Web浏览器上传输和查看海量点云数据,而不受内存大小的限制。本发明实施例技术方案方便了用户可以在标准的浏览器中实时的查看海量的点云数据集并且可以在不需要提前安装第三方应用程序的情况下传输大量的数据。
附图说明
图1是根据一示例性实施例示出的一种基于Web的海量点云渲染方法的流程图;
图2是根据一示例性实施例示出的一种采用四叉树数据结构进行分配数据的流程图;
图3是根据一示例性实施例示出的一种基利用Potree将点云数据进行渲染到Web浏览器上的流程图;
图4是根据一示例性实施例示出的一种四叉树编码方式的示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
图1是根据一示例性实施例示出的一种基于Web的海量点云渲染方法的流程图。如图1所示,本发明实施例提供的一种基于Web的海量点云渲染方法,它包括以下步骤:
S1,获取点云数据;
S2,采用四叉树数据结构进行分配数据;
S3,利用Potree将点云数据进行渲染到Web浏览器上。
在一种可能的实现方式中,在步骤S1中,通过捕获数据的各种扫描设备得到海量数据,并将得到的海量数据转换成点云数据。
如图2所示,在一种可能的实现方式中,所述步骤S2包括以下步骤;
S21,将点云数据转换成可见的模型;把通过各种扫描方法得到的原始的点云数据转换成可见的模型。
S22,对大规模的点云数据使用MNO结构把点云数据分配到数据结构中;在获取大规模的点云数据之后,对于超出内存的大量的点,不适合渲染,这就需要用获取、处理和呈现很少一部分数据的核外算法,使用MNO(可修改的嵌套八叉树)结构把点云数据分配到数据结构中。
S23,分配的点密度根据结构中节点的阈值而确定,超过阈值的就被分配到子节点中;分配的点密度是根据结构中节点的阈值而确定的,超过阈值的就被分配到子节点中,这样避免了大量空白节点的出现。
S24,采用均匀分布的四叉树结构将点云数据分成很多段,把点云空间按照四叉树模型进行细化,依次将点云均匀地分布在每一个节点上,并将段内的数据映射到内存中,随机的从内存中读取点云。而分段数和内存大小之间需要进行一定的取舍。
这样就可以允许用户在标准的浏览器中实时的查看大量的点云数据集并且可以在不需要提前安装第三方的软件的情况下传输大量的数据。
如图3所示,在一种可能的实现方式中,所述步骤S3包括以下步骤;
S31,对点云使用点属性进行着色;
S32,采用插值模式对点云进行渲染;
S33,采用自适应模式调整点的大小;
S34,使用光照模型增强场景的深度感知;
S35,将点云数据显示在Web浏览器上。
在一种可能的实现方式中,在步骤S31中,渲染出的点云的颜色由点属性进行着色,点属性包括RGB、反向散射信号的强度、高程、分类、返回值、点源和节点的细节级别。
在一种可能的实现方式中,在步骤S32中,在Potree中采用插值模式来提高点云的渲染质量,将点云渲染为抛物面而不是平面,并且是通过修改片段着色器内的屏幕对齐的方形的深度值来实现的。在一种可能的实现方式中,在步骤S33中,点的大小的确定也是渲染速度和视觉质量的一个重要的因素。Potree采用自适应点的大小模式来确定点的大小,将点的大小调整到特定细节级别的节点之间的间距,所述特定的细节级别为最高级别的可见节点。
在一种可能的实现方式中,在步骤S34中,光照模型用于增强场景的深度感知,并使结果更加舒适,如果没有照明提供的阴影,则很难或者甚至不可能感知形状。EDL是一种不需要法线,沿着轮廓创建光照表面和框架的方法。Potree使用在对数深度中的EDL的变化,这是通过计算周围样本的深度差异来获得响应。理论上可以增加邻域样本数量以达到更高的质量,但是我们已经对四个样本的结果感到满意,并且保持了样本量的低效益。默认情况下,通过评估左,右,上,下邻近的深度值,对4连通邻域进行采样。另外,提供了一个半径参数,其允许用户将样本放置在距离当前像素2像素或3像素之外。Potree中的实现基于CloudCompare的EDL着色源,并进行了一些修改。删除标准双曲线深度缓冲器的线性化,代替双曲线的深度缓冲器值的是渲染到基数2的对数值,然后从浮点纹理的alpha分量中读取。CloudCompare的EDL着色器支持光线向量。Potree使用了一个完整的分辨率方案,然后组成结果。
在一种可能的实现方式中,在步骤S35中,通过Lastools工具把点云数据通过Potreeconverter转换成.las文件,之后在Web浏览器上快速的显示出来。
如图4所示,基于Web的大量点云的渲染器的数据结构采用如图4所示的四叉树的编码方式。在一种可能的实现方式中,所述四叉树的构建过程包括以下步骤:
1)从原始点云中随机读取某段中的一个点,从第一层开始计算;
2)计算落在该层的节点编码;
3)根据编码存储到该层的对应节点位置;
4)如果该层的节点点云个数已经达到上限,则从下一层开始计算,并重复步骤2)至步骤4)直至所有层计算完毕为止。
本实施例的一种基于Web的海量点云渲染方法通过捕获数据的各种扫描设备得到的海量数据需要先转换成点云数据,然后把转换后的海量点云数据按照四叉树的结构分配;在数据结构中分配数据之后,点云需要使用点属性进行着色;在渲染时提高点云的渲染质量采用了插值模式的渲染模式;改善海量点云数据的渲染速度和显示之后的视觉效果就需要确定点的大小;让渲染出来的图像看起来更加舒适,需要使用光照模型增强场景的深度感知。
Potree所支持的点属性包括:RGB,强度,搞成,分类,返回值,点源,细节级别。在单通道中创建的高质量渲染模式插值模式中,Potree是通过将点渲染为抛物面而不是平面,是通过屏幕对其的矩形或者圆形实现的。
本实施例使得对于由扫描得到的海量的数据可以转换为点云数据,并且用户还可以在不需要安装第三方软件的基础上在浏览器上传输数据,并且可以在浏览器上实时的查看三维模型的海量数据。应用本实施例的海量点云渲染方法可以方便用户在浏览器上查看三维海量数据时像浏览网页一样方便。
本实施例的海量点云渲染方法在浏览器上可以对大量的点云数据进行渲染和处理,提供了一个在浏览器上可以实时的查看和传输大量的点云数据集,并且不需要安装第三方的应用程序。利用本实施例提供的方法,用户可以在Web浏览器上传输和查看海量点云数据,而不受内存大小的限制。本实施例采用的是均匀分布的四叉树采样方法对数据进行采样,渲染的时候通过点属性对点进行着色,提高渲染质量需要确定点的大小,并且需要一个可以提供高质量渲染的渲染模式,如果要有一个让人看起来舒适的渲染结果就需要光照模型进行改善。本实施例方便了用户可以在标准的浏览器中实时的查看海量的点云数据集并且可以在不需要提前安装第三方应用程序的情况下传输大量的数据。
以上所述只是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也被视为本发明的保护范围。