一、引言

激光雷达系统组成

激光雷达是采用激光特性和光电探测手段相结合的成像方法,相比于相机等,是一种采用激光作为载体的主动成像设备。大多数激光雷达主体由四个组成部分,分别为:发射,接收,控制,信号处理和显示。其中激光发射系统,主要由激光器和光学扩束单元组成,其中激光器按照介质可分为早期使用的二氧化碳激光器,到后来使用半导体激光器和混合激光器等。激光接收系统主要由各种光电探测器构成。激光控制系统主要有高性能控制器构成,主要控制激光脉冲光发送,回波信号接收和扫描振镜转动等。激光信号处理和显示部分是将回波信号进行转化为激光点云做出数据处理并在电脑端显示[。激光雷达原理框图如下图所示,可以看出,其工作原理与微波雷达类似,激光雷达系统主要利用了激光测距的原理。发射部分是由激光器和光学发射系统组成,激光器按一定频率产生激光脉冲,在经过一系列光学变换和扫描系统后射出,激光射出后遇到待测物体,会产生回波信号,利用探测器对回波激光进行探测,后通过信号的来回时间差计算物体与激光器之间的距离,控制系统主要控制激光器发射、扫描系统以及数据计算处理模块中的各种信号。通过扫描系统的二维信息和激光测距的距离信息进行三维成像。 

激光雷达测距原理

激光雷达成像系统主要是由通过激光进行对物体距离的测量,同时利用控制系统和扫描系统对激光发射角度和位置进行调整而成像。其中激光测距主要由激光器和探测器组成。其中激光雷达测距主要是通过激光飞行时间计算物体和激光器之间的距离如下图 所示,激光器发射激光器后会由计时电路出发,等收到回波信号后结束计时,通过计算发射和接收到的时间差 Δt,从而计算出目标距离。

激光测距雷达由激光发射模块,激光接收模块,信号处理模块,时间间隔测量模块组成控制器模块组成。按探测方式可以分为相干探测和非相干探测,按照计时算法可以分为属于相干探测的相位法和非相干的脉冲法和三角测量法。 脉冲探测法的原理是从激光器发射激光脉冲到目标和从目标返回到接收器中,计算时钟脉冲数的乘积的光脉冲的时间差 Ñ 和脉冲间隔,计算距离 R 如下公式所示: ;其中是时钟脉冲频率,每个时钟脉冲的1代表距离基准;是通过计算时钟脉冲数,从而获得目标的距离 R。 相位测距法是通过发射固定频率的激光,通过对发射光波长和物体回来信号之间的相位差进行计算时间,由于频率固定所以利用波长和相位之间的关系就可测出目标距离。 激光三角法测量中,是利用物体和测距仪中间移动后接收系统中所产生的位移差值来计算,通过物体位移后,成像也会产生相应的变化,可以构成三角形,利用三角函数等相关关系来进行物体实际和激光发射端的距离,而由于三角法成像中成像的电荷耦合接收器件通常分辨率有限,所以三角法对于较远的物体会有较大误差,一般可以准确测量十米之内的距离,过多则可分次测量,但会增加计算成
本。

激光点云数据和噪声

图片展示的是二维信息,只是世界在二维平面的一个投影,而不能描述物体之间的距离,使得人们无法分辨图像中物体的距离,所以会造成误差,而三维点云数据由于能表示空间信息而进入人们的视野,通过激光雷达可以获取点云的距离坐标,再结合扫描系统得到三维数据,通过点云图,可以获取物体的三维信息,可以得到反映场景内结构和物体表面信息的离散空间点数据。而激光雷达除了可以获取点云三位信息外,一些激光雷达还可以获得扫描角度,信号回波附带的信息例
如目标不同材质反射回来的强度等信息。对于这些信息可以计算目标点云之间的多种参数,例如法向量、曲率、点云直接的结构以及表面纹理等信息,所以三维点云相比二维图象提供了更好的空间和各种信息。

常见得激光点云数据特点有以下四点:

1.激光雷达点云数据用用三维描述了分布在物体表面的三维点坐标的集合。

2.点云数据在对比其他数据时可以更方便地提取出空间内的信息,同时由于点在三维空间的关系,点云数据能够反映一些位置关系。

3.在三维空间中点云数据的分布是非连续的,点云数据展现了目标或多个目标体之间的位置、点云的分布是离散的。

4.每个激光雷达系统的扫描方式不同,同时由于扫描物体的外观和材质不同,可能有部分激光被吸收或散射掉,也会造成扫描数据分布不均匀。

激光雷达扫描数据后会由于多种原因产生噪声,激光点云中噪声主要分为三种情况:

1.由于激光雷达系统产生的误差,在激光雷达成像过程中,每个系统都有可能引入噪声,例如发射系统发射的激光脉冲含有噪声,探测器也可能产生到噪声;

2.待测物体材质所产生的噪声,对于一些特别材质的物体,在成像时可能会产生噪声,例如对于玻璃材质的物体,激光会有较大镜面反射,产生噪声;

3.对于扫描过程中的误差,在对物体进行扫描时,可能收到外界因素干扰而产生误差,例如周围光源对探测器的影响可能会产生误差,扫描时机械振动也会产生误差。

对于多种因素产生的误差,如果不对点云进行处理,将噪声点当成有效信号进行处理,将对后续的处理产生影响,例如法向量计算中,将噪点计算为邻域拟合平面,会影响法向量计算,对后续的分割,特征提取以及目标识别都有很大影响。对于第一类和第三类噪声通常离待测目标点云较远,而对于第二类点云,通常与目标点云在一起,所以需要采用合理的算法对点云进行多种噪声的去除,为后续的处理提供良好的点云数据。

二、点云的邻域搜索

点云的邻域

通过激光雷达、激光扫描、立体摄像机等三维测量设备获取的点云数据,如果点与点之间没有任何的拓扑关系,即为无序点云。而点云的多种处理点云的算法,如滤波、点云分割等,都是基于邻域,这些都需要使用采样点以及与采样点相邻的区域进行计算。这就需要对点云进行邻域划分,以实现点云邻近点的快速查询,这就是建立点云拓扑的重要性。 一般对于点云的邻域有两种定义:一种是通过半径距离对点云中的点选择邻域,主要通过点的空间欧式距离来定义半径,具体步骤为,选定需要选择邻域点 p,以 p 点为球心,欧式距离 r 为半径,对整个球体内点云进行搜索,对于球内的点云称之为点 p 的邻域点,这种邻域也因为距离固定而叫欧氏邻域,这样计算邻域的较为简单,但同时有较大的缺点,对于一些分布不均匀的点云而言,某些点的邻域数目可能较多,而某些点云数目可能过少,即使对于分布较为均匀的点云,半径 r的定义也对邻域的选取有较大影响,会影响通过邻域计算的点云特征等,这是固定邻域距离的选取方法。而另一种邻域选取方法时固定邻域点的数量,通过选区距离点最近的 k 个点来定义点的邻域,这样选择固定个数的邻域,对于这种选取方法称之为 k 邻域,k 邻域的选取只有该点有关。

点云的邻域搜索

为了快速的找到一个点 k 邻域,和进行快速的邻域搜索,对点云数据结构进行存储方法,有普遍采用的方法有三维栅格法、Octree 法、Kdtree 法和 BSP 树法等。 栅格化法是利用小型的正方体放个对点云进行切分,如下图所示,按照一定正方体边长对点云数据进行计算,设置边长为 L 的正方体称之为栅格,计算整体点云在 x,y,z 方向上分别划分的正方体个数,将每个点云都有对应的栅格进行放置。

首先求出包围点云数据的最小长方体,后定义栅格边长 L,将最小长方体分割为数个边长 L 的栅格,其中,,分别表示在  x、y、z  方向上的栅格数。,,计算式

​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

对点云进行栅格化后,对每个栅格进行编号处理,栅格内的点云与栅格编号对应,每个点都有对应的栅格号,建立拓扑关系,在对点进行 k 邻域计算时,需要选取 k 个与之距离最近的点云,由于栅格较小,点云数量较小,所以先对周围边相邻包括自身栅格内的 26 个栅格进行搜索,如果搜索到点云数量仍然每到达 k 给,则继续将栅格进行延申,继续搜索与那 26 个相邻栅格的邻域,直到找到 k 邻域点云结束。栅格法对于点云拓扑关系建立其原理简单,适用于小型点云的处理,因为栅格法对于数目较多的点云计算量较大,操作较为困难,栅格边长 L 的选取十分重要,栅格边长较大则数目较少,影响精度和计算邻域时的点云选取,栅格边长较小则栅格较多,会产生大量计算,影响算法运行速度,所以目前常用点云拓扑关系一般不选取栅格法。

Octree 结构是一种较好的点云数据结构,其是在对二维四叉树的一种在三维点云中的拓展,是一种空间树状的数据结构。对于直线,可以将其分为两段,在二维信息而言,则每个数据都分为四份,类似的 Octree 的每个节点都有八个子节点,其中每个子节点都表示一个正方体的体积元素,每个节点有八个子节点,通过将父亲节点的正方体元素进行均等分割,则可分割维八个子节点,所以也叫做八叉树法。对于点云的中心点,通常定义是分叉中心,如下图所示,通过对三维空间的划分,实现了点云拓扑关系构建,对于搜索而言,其中每个点的时间和空间复杂度都一样,
通过递归的方式将整个点云数据进行了拓扑关系建立,从而构成一个具有方向的图结构。对点云数据一直进行划分下去,如果被划分出具有一样属性的体元,则其可构成叶子点,否则一直继续分下去,对于大小为​​​​​​​的点云,最多分割次数为n,对于 Octree 结构进行 k 邻域查找,其方式简单,查找速度较快。

​​​​​​​        ​​​​​​​        ​​​​​​​  

Kdtree 是一种在欧式空间点云数据结构,是一种特殊的二叉树结构,可以依据数据分解为 k 个维度,将点云中所有的点按某一属性将其构建为一个,每个子节点也都是二叉树,因为可以构建任意维度的,所以又称为 k 维搜索树。对于点云内所有的点,都是利用一个平行于坐标轴的超平面进行分割,在对每个子空间进行继续分割,从而使每个超平面中都有至少一个点存在。二维Kdtree 构建如图所示,对于二维 Kdtree 构建,第一步选择根节点,通常选择适当点作为根节点,为后续子节点划分提供便利,根节点的选取一般选取每个维度中方差最大的点,方差表明在该维度下点的分布情况,方差越大则点越分散,以此点作为根节点就分辨率越高,越能更好的构建 Kdtree 结构;第二步对于所有点按对于维度值进行排列,从数值中间的点将整个数据分为两类,通常选择为坐标轴中间的点,是由于 Kdtree 左右子树均衡,有利于计算,这样剩余所有的数据就被分为不相关的两个子集,分别对应为左右两子树;第三步为对前两步进行递归,一直重复前两个步骤划分左右子树,直至所有点都被编入 Kdtree 结束。三维 Kdtree 如图所示,原理和二维相同,只不过将分割手段从直线变为了平面,通过平行于坐标轴的平面对整个三维点云空间进行切分,变为左右两个子空间,在进行递归划分直至所有点云都被纳进 Kdtree中,直至分割最后的三维空间内只有一个点,也就是没有子节点后停止。

点云统计滤波算法(待更新)

参考

[1]杨旭. 激光雷达点云数据的滤波和分割处理[D].哈尔滨工业大学,2020.

【激光雷达】之点云数据滤波处理相关推荐

  1. 点云平面提取_基于LiDAR点云数据滤波方法

    基于LiDAR点云数据滤波方法 机载激光雷达所获取的数据被称为"点云(points cloud)"它在三维空间中呈现出随机分布的形状.在点云中,有些点属于真实的地形表面的点,有些点 ...

  2. 点云数据滤波处理(PCL实现)

    引: ​​​​​​点云数据滤波处理(PCL实现) - 简书 2020.01.03 14:29:02字数 942阅读 5,412 点云数据滤波处理(PCL实现) 1.滤波器介绍 点云目标识别的流程:数据 ...

  3. PCL点云数据 滤波降噪

    图像处理]PCL点云数据的滤波降噪的方法 这个带公式: https://blog.csdn.net/qq_30815237/article/details/86294496 为什么进行点云滤波处理: ...

  4. 激光点云系列之一:详解激光雷达点云数据的处理过程

    交流群 | 进"传感器群/滑板底盘群"请加微信号:xsh041388 交流群 | 进"汽车基础软件群"请加微信号:Faye_chloe 备注信息:群名称 + 真 ...

  5. 盘一盘激光雷达的点云数据处理:感知/定位/工程层面全面梳理!

    作者 | 奚少华  编辑 | 九章智驾 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[3D目标检测]技术交流群 随着激光雷达的上车数 ...

  6. 激光雷达(LiDAR)点云数据知多少?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自 | 新机器视觉 作为一位测绘小白 当看到眼前这些密密麻麻 ...

  7. 第4章 点云的滤波与分类 4.1点云数据的过滤

    C4 Filtering and Classification of Point Clouds/第4章 点云的滤波与分类 05.25-06.01点云数据的过滤-4.1Filtering of poin ...

  8. 【知识科普】激光雷达(LiDAR)点云数据知多少?

    作为一位测绘小白 当看到眼前这些密密麻麻的点 是否让你感到眼前一黑呢? 你能获取哪些有用的测绘信息呢? 我们都知道"一沙一世界,一叶一菩提",但不一定知道的是,还有"一点 ...

  9. Ubuntu18系统下采集点云数据(速腾16线激光雷达)与ZED 2 相机进行外参标定(Matlab的LCC工具箱)

    这篇是最近的实验记录:在Ubuntu系统下读取点云数据并在rviz中显示,录制自己的rosbag数据包并离线播放,将rosbag文件转化为pcd格式导入MATLAB中,和双目相机进行外参标定. 目录 ...

最新文章

  1. fanuc机器人四边形编程_FANUC机器人示教编程:原始路径恢复功能介绍与使用方法...
  2. Hyperloop 让发布简洁高效
  3. Struts2 Result详解
  4. 5.1 Tensorflow:图与模型的加载与存储
  5. python精要(73)-函数传递任意参数
  6. 命令行下操作MySQL数据库,各种命令的使用入门示例。(附图)
  7. Django从理论到实战(part36)--QuerySet转换SQL
  8. Omap3530 的GPIO中断设置
  9. 用stack处理中缀表达式【+、-、*、/、()】
  10. 一些常用算法 练手的的代码
  11. Android IntentService的使用与源码解析
  12. 加密解密工具 之 恩尼格玛密码机密码
  13. Angular +Ionic修改日期组件英文按钮
  14. 音视频格式大全:stream type
  15. Android开发:如何实现收发短信
  16. saas-export项目-系统日志管理-系统日志AOP配置
  17. <<视觉问答>>2021:Zero-shot Visual Question Answering usingKnowledge Graph
  18. [Unity][NavMeshAgent]怎么计算角色走过的路程长度
  19. ctfshow菜鸡杯 部分wp
  20. 希望若干年之后,回首这片田野已遍地花开

热门文章

  1. 通用公司信息安全规范
  2. 掌握盲打?写个脚本陪自己练,每天练一遍,基本上一个星期就成了!
  3. 猜数字游戏java课程设计报告
  4. C++ 函数实参传递 (argument passing)
  5. 安卓开发SDK等工具下载地址
  6. 下列有关预防计算机病毒的做法或想法,Windows7试题
  7. Linux从一般用户切换到root用户
  8. 渠道分销系统开发产品管理功能
  9. 宇宙最强,meltdown论文中英文对照版(三)
  10. ---- 招聘之数据结构 ----