遥感图像处理——点云模型可视化模块、点云滤波模块实现方法

2023-12-18 11:30:54

点云处理软件框架

在这里插入图片描述

点云模型可视化模块

一、LOD算法

LOD(Level of Detail)主要用于优化渲染复杂几何数据的性能,特别是在三维模型和地形渲染方面。它通过在不同距离和尺度下使用不同精细度的模型,以提高渲染性能。LOD可以在近处呈现高细节的模型,在远处呈现简化的模型,从而减少需要渲染的数据量。
在点云可视化方面,LOD技术也可用于提高点云的渲染性能。例如,在观察点云时,可以根据点云与观察者之间的距离和观察点的大小,自动选择合适的点云细节层次来显示。在近距离时,可以显示所有的点云细节,而在远距离时则可以显示较少数量或经过简化的点云,以减少渲染开销,提高性能。

通过在不同距离和大小下使用适当级别的点云细节,LOD技术有助于在减少渲染负担的同时保持良好的视觉效果,使得点云的可视化更具效率和流畅性。

二、LOD算法实现思想

对于每一个点云数据,将其表示为不同层次的细节级别,即将每个点云数据分解成若干层,每一层代表一种不同的细节级别,每一层的点云数量比前一层减少,同时每层点云之间存在一定的关联关系。一般来说,每一层的点云数据都可以通过前一层数据进行重建或者近似重建。这样,在可视化时,根据需要,选择合适的细节级别进行显示,能够在保证精度的前提下,减少计算和存储的开销。
LOD(Level of Detail)算法的基本思想是根据视点距离和显示需求等因素,对模型进行适当的简化和优化,以提高显示效率和减少计算开销。LOD算法也常用于对点云数据进行适当的简化和优化,以提高点云渲染的效率。LOD算法的基本思想可以分为两个方面:
减少数据量:LOD算法根据视点距离,将大范围的点云数据进行适当的简化和压缩,减少数据量,提高点云数据的渲染效率。
保持数据的精度:LOD算法在简化数据的同时,尽可能地保留数据的精度。例如,在点云数据简化时,可以保留重要的点和局部细节信息,从而避免丢失重要的特征信息,保持数据的精度和可视化效果。
LOD算法通常会将点云数据分为不同的层级,每个层级对应不同的点云分辨率。在视点距离较远时,可以使用较低分辨率的点云数据来显示,以提高渲染效率;在视点距离较近时,则可以使用更高分辨率的点云数据来显示,以保证显示精度和细节。

三、LOD算法实现

LOD(Level of Detail)算法的实现方式有多种,其中常见的有两种:基于采样的LOD(金字塔层次结构、变形网格)和基于分割的LOD(空间分割)。
基于采样的LOD是指通过对点云数据进行采样,从而得到不同密度的点云表示不同的细节层次。这种方法的优点是简单易实现,可以方便地对不同层次的点云进行展示和处理。常见的实现方式包括:体素化采样和随机采样。其中,体素化采样是指将点云数据按照一定的体素大小进行采样,从而得到不同精度的点云。CloudCompare中就使用了体素化采样的方法来实现LOD算法,用户可以通过设置不同的体素大小来控制不同细节层次的显示。
基于分割的LOD是指将点云数据按照不同的特征进行分割,从而得到不同密度的点云表示不同的细节层次。这种方法的优点是可以更加准确地表达点云数据的特征信息。常见的实现方式包括:基于颜色和法向量的分割、基于曲率的分割等。但是,这种方法相对于基于采样的LOD来说更加复杂,实现起来也更加困难。

具体实现过程:

  1. 初始化体素树:首先,需要在内存中初始化一个体素树,即根据点云数据生成一个体素层级结构,最底层为点云的原始数据,然后不断上采样生成更高分辨率的体素层。
  2. 选择当前LOD:根据视点位置,计算出当前视点在体素树中的层数,进而确定当前需要显示的LOD层数。
  3. 加载数据:根据当前需要显示的LOD,从磁盘中加载相应的数据,即体素、八叉树节点、点云块等。
  4. 体素渲染:将加载的体素通过OpenGL渲染到屏幕上,根据当前LOD选择体素的大小,以保证视觉效果。
  5. 八叉树渲染:对于体素层次结构中的内部节点,需要采用递归的方式对其子节点进行渲染。
  6. 点云块渲染:对于叶子节点(即点云块),则需要根据当前LOD选择加载部分点云块的数据,并通过OpenGL渲染到屏幕上。
  7. 点云渲染:在点云块渲染的过程中,还需要对其中的点云进行LOD处理,即根据当前LOD选择保留一定比例的点云数据进行渲染,而剩余的点云则被抽样或者丢弃。

点云滤波

一、点云噪声形成

在获取点云数据过程中,由于获取设备的精度、设备操作者经验、环境因素等带来的影响,以及电磁波衍射特性、被测物体表面性质变化和数据拼接配准操作过程的影响,点云数据中将不可避免地出现一些噪声点。实际应用中除了这些测量随机误差产生的噪声点之外,由于受到外界干扰如视线遮挡、障碍物等因素的影响,点云数据中往往存在着一些离主体点云较远的离散点,即离群点。

二、点云滤波

滤波的作用就是利用数据的低频特性剔除离群数据,并进行数据平滑或者提取特定频段特征。通过滤波完成的功能还包括孔洞修复、最小信息损失的海量点云数据压缩处理等 。在点云处理流程中滤波处理作为预处理的第一步,往往对后续处理流程影响很大,只有在滤波预处理中将噪声点、离群点、孔洞、数据压缩等 按照后续需求处理,才能够更好地进行配准、特征提取、曲面重建、可视化等后续流程。

常用的点云滤波算法有以下几种:

  1. 直通滤波器
    原理:在点云的指定维度上设置一个阈值范围,将这个维度上的数据分为在阈值范围内与不在阈值范围内,从而选择过滤与否。能够快速过滤掉用户自定义区间范围内的点云。
    在实际应用中,由于激光扫描采集的距离较远,但是根据功能需求的不同可能只关心一定区域内的数据,比如低速物流车的运营场景,可能在X方向只关心前后60米,Y方向只关心左右20米的范围。此时就可以利用直通滤波器提取出感兴趣区域,可较快剔除部分点云,达到第一步粗处理的目的。

  2. 条件滤波器
    原理:通过设定滤波条件进行滤波,类似于分段函数,判断点云是否在规则的范围则中,如果不在则舍弃。上述的直通滤波器就是一种较简单的条件滤波器。

  3. 高斯滤波器
    原理:采用加权平均方式的一种非线性滤波器,在指定域内的权重是根据欧式距离的高斯分布,通过权重加权平均的方式得到当前点的滤波后的点。
    特点:利用标准差去噪,适用于呈正态分布的数据平滑效果较好,但是边缘角点也会被较大的平滑。

  4. 双边滤波器
    原理:通过取邻近采样点的加权平均来修正当前采样点的位置,在高斯滤波器只考虑空间域点的位置基础上,增加了维度上的权重。一定程度上弥补了高斯滤波的缺点。
    特点:既有效地对空间三维模型表面进行降噪,又可以保持点云数据中的几何特征信息,避免三维点云数据被过渡光滑。但是只适用于有序点云。

  5. 体素滤波器
    原理:通过对输入的点云数据创建一个三维体素栅格,然后在每个体素内,用体素中所有点的重心来近似显示体素中的其他点,这样该体素内所有点就用一个重心点最终表示。
    也有另外一种相似的表达形式:利用每一个体素立方体的中心来近似该体素立方体内的所有点,相比上一种方法计算速度较快,但是损失了原始点云局部形态的精细度。
    特点:可以达到向下采样同时不破坏点云本身几何结构的功能。点云几何结构不仅是宏观的几何外形,也包括其微观的排列方式,比如横向相似的尺寸,纵向相同的距离。随机下采样虽然效率比体素网格滤波器高,但会破坏点云微观结构。

  6. 统计滤波器
    原理:对每个点的邻域进行一个统计分析,并修剪掉那些不符合一定标准的点。我们的稀疏离群点移除方法基于在输入数据中对点到临近点的距离分布的计算。

具体方法如下:
计算每个点到其最近的k个点平均距离,(假设得到的结果是一个高斯分布,其形状是由均值和标准差决定),那么平均距离在标准范围之外的点,可以被定义为离群点并从数据中去除。
特点:主要是根据密度去除离群点,对密度差异较大的离群点去除效果较好。

  • 半径滤波器
    原理:与统计滤波器类似,只是操作更加暴力直观,根据空间点半径范围临近点数量来滤波。
    具体方法如下:
    在点云数据中以某点为中心画一个圆计算落在该圆中点的数量,当数量大于给定值时,则保留该点,数量小于给定值则剔除该点。此算法运行速度快,依序迭代留下的点一定是最密集的,但是圆的半径和圆内点的数目都需要人工指定。
    特点:用于去除离群点,在一定程度上可以用来筛选边缘点。

  • 频率滤波器
    原理:在点云处理中,点云法线向量差为点云所表达的信号。用点云的曲率来表示频率信息,如果某处点云曲率大,则点云表达的是一个变化高频的信号。如果点云曲率小,则点云表达的是一个不变低频的信号。例如:地面曲率小,它表达的信息量也小;障碍物处曲率大,频率就会更高。
    以DoN算法为例,目的是在去除点云低频滤波,低频信息(例如建筑物墙面,地面)往往会对分割产生干扰,高频信息(例如建筑物窗框,路面障碍锥)往往尺度上很小,直接采用基于临近信息的滤波器会将此类信息合并至墙面或路面中。所以DoN算法利用了多尺度空间的思想。
    具体如下:

  • 在小尺度上计算点云法线1

  • 在大尺度上计算点云法线2

  • 法线1-法线2

  • 滤去3中值较小的点

  • 根据第三步得到的法线差,进行欧式分割
    特点:在小尺度上是可以对高频信息进行检测的,可以很好的小尺度高频信息。其在大规模点云中优势尤其明显。

总结:
滤波器主要是通过局部计算的方式,获得一个响应值,然后根据响应值调整点云,比如位置调整,保留或删除某点。
当一种滤波无法完整达到预处理要求时,可以通过组装多个滤波器达到更复杂的功能。比如小编在实际应用中借助于车辆运动轨迹和路沿检测作为感兴趣区域的先验知识进行直通滤波;接着根据激光雷达的线束多少调整统计滤波参数过滤离群点;由于使用了两颗激光雷达做数据拼接,最后通过体素降采样平滑点的间隔。

三、优化方法

现有方法中,在三维空间中通过分析和计算点云几何关系去除噪声点,存在计算复杂、耗时等缺点。对于以上的两个缺点,提出首先对点云进行预处理,将点云映射到图像上,其次通过图像处理方法去除噪声区域,重新恢复成三维点云,最终得到不包含噪声的点云。详细分析了所提算法的实现过程,并通过实验结果验证了所提算法的有效性、实时性。

算法将点云映射到图像上,利用图像处理方法来滤除噪声点云部分,最后恢复出图像中对应的点云,具有简单、快速滤除噪声点的效果。算法主
要分成4个步骤:点云预处理、将点云映射到图像上、图像处理、恢复点云。图4为所提算法过程示意图,大长方体表示物体点云,小长方体表示噪声点,总体过程如下。

  1. 先对点云进行预处理,将 点 云 的 坐 标 系 旋转到以水平向右为y 轴正方向,竖直向下为x 轴正方向,垂直纸面向外为z 轴正方向的坐标系,此时物体点云和噪声点云会被区分出来,如图4(b)所示。
  2. 分别以图4(b)中点云坐标沿x 轴和y 轴的最大值和最小值构建映射图像大小,将点云映射到x-y 平面上,以区分噪声点云区域和物体点云区域,如图4?所示。
  3. 对图4?中的映射图像进行图像处理,滤除噪声点所对应区域,如图4(e)所示。
    4)恢复映射图像中对应的点云,最终得到不包含噪声的点云,如图4(d)所示。
    在这里插入图片描述
    具体地,这4个步骤中又分别包括几个小步骤,如下所示。图5为所提算法过程的具体实施流程图。点云预处理(step1):利用k 最近邻算法对噪声点云进行滤除;计算点云坐标轴沿x 方向和y 方向的最小值,将点云沿x 轴方向和y 轴方向的坐标分别减去其对应的最小值;将点云坐标对应的浮点型数据转换为整型。将点云映射到图像上(step2):对每一个点云数据进行编号,所得序号唯 一;将 点 云 的 x 轴 坐 标 和y 轴 坐 标 映 射 到 图 像 上;标 记 出 每 个 图 像 坐 标 点(u,v)对应的点云序号和点云数量。图像处 理 (step3):对 映 射 图 像 进 行 闭 运 算 操作;计算映射图像中的连通域并进行标记;计算每个连通域中对应的点云数量;选择面积最大的连通域或者选择包含点云数量最多的连通域予以保留,滤除其他区域。
    恢复点云(step4):经过step3后得到了相应的图像坐标,根据图像坐标中对应的点云序号恢复点云,最终得到不包含噪声的点云。

文章来源:https://blog.csdn.net/matt45m/article/details/134831271
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。