Lidar原始点结构分析

Lidar数据在几何结构上非常简单,主要是点的坐标值,但是其呈现的地物特征却是非常复杂的,这也是滤波困难的主要原因。由于地形地物的多样性,滤波算法很难能够适应所有的情况,难免对某些地形变化失效,为了测试和了解算法的性能,ISPRS小组在2003年组织的滤波算法测试过程中,同时分析了点云数据的主要结构,列举了滤波困难地物的结构特性,主要分成以下几类。

1、 高程异值孤立点

这些点具有明显的高程特征,其与周围的临近的点具有明显的高程差,因而呈现出孤立的状态,同时这些点数量较少,分布无规律,很少有多点聚集的情况。在三维显示图上可以明显的分辨出来。归纳起来主要有以下两种:

(a)较高的局部点-高空的外部孤点

Lidar扫描点中通常有些点是不属于地物数据集的,但是激光扫描接收器由于无法分辨,故将其反射信号全部纳入点云中。例如激光信号打到空中物体上,如飞鸟,低空飞行的飞行物等等产生的数据点。

在这里插入图片描述
(b)较低的局部点-地面以下的外部孤立点

这些点具有极低的高程值,多数是由于多路径效应产生的错误或者激光测距仪的误差产生的坐标点。
在这里插入图片描述
对于这类数据点,由于多数滤波分类方法中,通常认为点云数据中高程最低的点应该是地面点,这样容易在分类结果中造成错误,由于在算法执行前没有预先处理掉这些错误的极低点,导致生成的DEM在局部严重下陷。

在这里插入图片描述
2、复杂的建筑物

这类地物点的结构是最复杂的,现在的建筑工艺使其结构往往呈现出多种多样的形态,很难用同一的标准来定义,其顶层结构很多都是不规则的套嵌形式,这加大了其分析的难度,多数滤波算法都难以区分这类地物,是干扰滤波质量的关键因素。具体的总结起来主要有以下几种:

(a)大面积建筑物

由于算法设计的原因,判断准则都是考虑相邻的点或者小区域的点,致使具有大面积的建筑物形成的点集超出了算法执行的范围,往往对滤波条件失效,导致这类地物在算法执行后没有任何的变化。

在这里插入图片描述
(b)小面积建筑物

通常这些面积小的建筑物都比较狭长, 因而回波点比较少,有很少的点集合,一般情况只有10个回波点或者更少,在结构上很像孤立的点,但是其又不具备高程异值的特征,造成对滤波算法的干扰,判断比较困难。

(c)陡坡上的建筑物

这些建筑物建立在陡坡地形上上,一般体现在屋顶在坡上,而另外一部分还在坡下,呈现出蔓延且连续的特征,对分类处理造成困难。

在这里插入图片描述
在这里插入图片描述
(d)复杂结构建筑物

在城市地区数据分类的主要困难还是对形状各异的复杂建筑物的分类。这种地物的形状、结构和排列都是不同的,很难用单一的模型或者结构去检测。

3、连接型地物

这些人工地物不是单独的孤立地物,而是与一些地形或者地物相连接的。结构上与地形数据具有一定的连续性。典型的有:

(a)桥梁

部分桥梁结构会在地表有一定的衍生(比如连接的道路、河流等等)。
在这里插入图片描述

(b)坡道

自然/人工的结构延伸在地面上,且一端比另外一端要低。

在这里插入图片描述
4、植被

植被点是一个特殊的群体,有时单个植被地物就就只有一个点或者几个点,因此其又不能完全按照地物的结构概括,在滤波算法中,一般都假设植被点的高度要显著高于周围的临近点高程。但是在一些陡峭的地形区域中,有时坡上的地面点和植被点是一样的高。还有一些低矮的植被和低的建筑物显现出一样的特征,导致分类错误。

在这里插入图片描述
在这里插入图片描述
多数滤波算法假设条件中很重要的一个特征,即地形表面是连续的,但是在一些陡坡地形中,地面点会出现高程不连续的情况,按照法则判断标准,会将这部分点作为地物点分类,导致错误。

在这里插入图片描述
在这里插入图片描述

5、不连续的地形

地物及地形数据结构的复杂性给滤波算法的设计带来了很大的困难,很难有一种算法可以自适应的改变滤波参数适应所有的地物情况,这是滤波技术的一个瓶颈问题。分析数据结构对于算法的设计和改善有重要的帮助作用。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\],lidar_align的源码包含了四个cpp文件:aligner.cpp、lidar_align_node.cpp、loader.cpp和sensors.cpp。其中,aligner.cpp实现了lidar和odom校正的函数,lidar_align_node.cpp是程序的入口,loader.cpp负责加载数据,sensors.cpp处理lidar和里程计的数据。 根据引用\[2\],在Aligner类中设置了一些校正相关的参数。其中,Config结构体包含了以下参数: - local:用于指定执行局部优化还是全局优化,默认为false,表示执行全局优化,并将结果用于初始估计,然后执行局部优化。 - inital_guess:校准的初始估计,仅用于运行local模式。 - max_time_offset:最大的时间对准偏差,即x\[6\]的上下浮动范围。 - angular_range:在初始估计位置的搜索范围(弧度),角度偏移上下限为+-0.5弧度。 - translation_range:在初始估计位置的搜索范围(位置),位置偏移上下限为+-1米。 - max_evals:最大的评估次数。 - xtol:x的容差。 - knn_batch_size:点的偏移数量,用于寻找最近邻点时。 - knn_k:寻找最近邻点的个数,程序中自加1了,因为在一个点云里面找其中一个点的最近邻一个是自己一个才是真的最近邻。 - local_knn_max_dist:局部优化的时候最近邻点的最大距离。 - global_knn_max_dist:全局优化的时候最近邻点的最大距离。 - time_cal:是否执行时间补充计算,即根据时间对里程计进行插值。 - output_pointcloud_path:点云文件保存路径。 - output_calibration_path:校准信息文件保存路径。 根据引用\[3\],根据配置参数(是否执行全局优化),首先执行初始角度的赋值。如果执行全局优化,则先进行一个估计,得到角度;否则直接使用设置的初始值。代码中设置了参数向量的下限和上限,将全局优化得到的角度的初始估计值叠加到上下限中。如果配置中开启了时间补偿的优化,则将时间补偿的范围加到上下限中。 综上所述,lidar_align的源码包含了四个cpp文件,其中aligner.cpp实现了lidar和odom校正的函数,lidar_align_node.cpp是程序的入口,loader.cpp负责加载数据,sensors.cpp处理lidar和里程计的数据。在Aligner类中,根据配置参数执行校正,并设置了相关的参数范围。 \[1\] aligner.cpp, lidar_align_node.cpp, loader.cpp, sensors.cpp \[2\] Config结构体中的参数设置 \[3\] 参数范围的设置和初始角度的赋值 #### 引用[.reference_title] - *1* *2* *3* [lidar_align--雷达和里程计校准--详解](https://blog.csdn.net/qq_32761549/article/details/120044319)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值