高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术

摘要:
引言:我们需要通过激光的内部机制和数据处理算法将这些噪声恢复到其原始位置。本文将从MTA问题的原理、激光响应MTA的内在机制和数据处理算法三个方面介绍如何解决这一问题。1.背景1.1高精度数据采集高精度采集车是一种集测绘激光、高性能惯性导航、高分辨率相机等传感器于一体的移动测绘系统。高德高精度团队经过多年努力打造的采集车具有高精度、快速、数据生成周期短、自动化程度高、安全可靠等特点

简介: 我们需要通过激光的内部机制和数据处理算法,将这些噪声恢复到它本来的位置。本文会从MTA问题产生的原理、激光应对MTA的内部机制、数据处理算法三方面来介绍高精资料处理是如何解决这个问题的。

1.背景

1.1 高精资料采集

高精采集车是集成了测绘激光、高性能惯导、高分辨率相机等传感器为一体的移动测绘系统。高德高精团队经过多年深耕打造的采集车,具有精度高、速度快、数据产生周期短、自动化程度高、安全性高、信息量大等特点。

为了保证高精地图制作的精度,在高精采集车中,我们使用了目前业界最先进的激光测距仪,具有测量距离远、点云密度大等优点,扫描频率可以达到每秒100万点。

1.2 激光MTA问题

高速的扫描频率带来高质量数据的同时,也引入了一些特有的噪声和干扰,MTA就是其中的一种。什么是MTA(Multi-Time-Around)呢?我们可以看一下图1,通过上下两图的对比可以看到,MTA问题实际就是激光的测距问题,激光将远处的点错误的拉到了近处,导致远处的楼房成为了近处路面上的噪声。

MTA问题会给后续资料处理、自动识别、地图制作等工艺流程带来很大的困难,导致识别以及人工流程出现错误。

我们需要通过激光的内部机制和数据处理算法,将这些噪声恢复到它本来的位置。本文会从MTA问题产生的原理、激光应对MTA的内部机制、数据处理算法三方面来介绍高精资料处理是如何解决这个问题的。

高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术第1张

图1 MTA问题数据

2.MTA原理

那么,MTA究竟是怎样产生的呢?这要从激光的测量原理说起。

2.1 激光测距原理

典型的激光扫描仪是采用TOF(time of flight)原理进行测量的,即激光传感器在测量时每隔固定时间发射一个脉冲,然后测量返回的脉冲能量,根据发射和接收的时间差计算点的距离:

高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术第2张

 

通过周期性地“发射激光-接收回波”,即可根据光飞行参数得到一系列测量点距离,结合激光自身的位置和姿态即可计算出反射点的位置。

2.2 MTA多区间

激光受自身功率的限制,通常能够探测到的最远物体距离有限,为Dmax。而激光脉冲的发射间隔为dt,在下一个脉冲发射前,当前激光脉冲能够探测到的最远距离为:

高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术第3张

 

高精采集车使用的激光频率为100万点/秒,对应的Dpluse为150m。

通常情况下,激光的发送和接收是按顺序进行的,即发送-接收-发送-接收,空中始终只有一个激光脉冲,接收和发送是一一匹配的。

但是,当Dmax大于Dpluse时,如果测量物体比较远,就可能在空中出现多个脉冲,多个脉冲到达接收器的顺序不再和脉冲发射的顺序一致,接收器无法正确计算脉冲的TOF,从而不能正确的得出物体的测距。这就是MTA(Multi-Time-Around),如下图2所示。

通常将反射信号可能跨过的收发周期数称为“MTA区间”,匹配时间上最近的一个发射信号为MTA1,次近的发射信号为MTA2…依此类推。

Dpluse就是每个MTA的区间长度。如果物体离激光的距离超过这个长度,就会发生MTA问题,高精采集车激光的MTA区间长度是150m,因此对于超过150m的远处高楼就发生了MTA现象。

高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术第4张

图2 MTA区间

3.激光应对MTA的内部机制

为了应对MTA问题,激光厂家也做了一些努力,通过利用测量物体的表面连续性的假设和变周期测量技术,找到了一些解决思路。

3.1 邻域连续性假设

在现实世界中大多数物体,例如道路、标牌、建筑物等人造物,这些实物都具有表面连续性,一般不会出现剧烈的几何变化和纹理。因此,连续的激光脉冲测距应该变化不大,如图3所示。

如果能够找到一种办法,使得当激光测距放错MTA区间时,相邻激光点不再具有连续性的特征,就可以将点云放到正确的MTA区间。变周期测量技术就是基于这一思路而产生的。

高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术第5张

图3 相邻激光点测距连续性

3.2 变周期测量技术

为了识别MTA问题,激光厂商设计了一系列专利技术,其核心是“激光发射间隔可变”,即相邻激光脉冲发射的时间间隔是不同的,如图4。而且这个发射间隔的变化具备周期性,其周期特点如图5所示。当将点云放错MTA区间时,其测距不再是连续的,而是如图5中列表第3列所示,来回跳跃。如图6,错误的MTA区间,相邻点来回跳跃,形成图中的分层。

高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术第6张

图4 变周期发射技术

高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术第7张

图5 变周期参数

高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术第8张

图6 错误MTA区间

4.MTA修正算法

根据MTA问题的原理以及邻域连续性假设,结合硬件上的变周期测量技术,确定MTA问题处理方案。首先进行邻域划分,找到相邻激光点,然后对相邻点计算放到不同MTA区间的统计权值,权值大的为真实MTA区间。同时为了提高算法性能,利用激光本身安装位置参数避免不必要的权值计算。

4.1 邻域设置与检测

首先确定邻域,因为Lidar是一圈圈扫描的,既要考虑时间上连续的点相邻,也要考虑连续圈的相邻。其基本思路如下:

  • 数据分圈:以一个圆周(线)为基本处理单元;
  • 连续性计算区域:对于某个点,取其当前圈的邻近点以及前后相邻两圈的邻近点作为连续性计算区域,如图7;
  • 对每个点计算其测距连续性权值以及反射率连续性权值,即与方差成反比例然后得出MTA区域。
高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术第9张

图7 邻域查找

4.2 加权统计策略

总的加权策略是距离方差越大,权重越小;反射率方差越大,权重越小。具体权值选择采用高斯函数或三角函数。

经过实际大批量数据统计分析,距离方差的权重采用高斯函数,其中u=0,δ=0.25,反射率方差的权重也采用高斯函数,其中u=0,δ=4

高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术第10张

图8 加权函数选取

具体计算过程如下:

  • 对每个点,分别获取其作为MTA1与MTA2的测量数据,主要为测距值、反射率;
  • 对每个点,分别获取其MTA1与MTA2邻居点集合;
  • 计算每个点的每个邻居的测距权值和反射率权值,然后求和,最终根据权值大小确定MTA区域。

4.3 处理效果

算法的处理效果如下图9,图10.

高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术第11张

图9 MTA处理效果:未处理MTA

高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术第12张

图10 MTA处理效果:MTA恢复结果

4.4 性能优化

使用基本的处理方案可以较好地恢复MTA错误问题,但是由于搜索区间较大,而且必须逐点处理,效率很低,不能满足效率的要求,需要进行优化。考虑的优化方向包括减少搜索区间和算法优化两方面。

4.4.1 减小搜索区间

我们使用的激光设备探测范围参数如下,不超过300m,也就是2个MTA区间,因此可以只考虑MTA1和MTA2区间两种可能,这就大大降低了计算量。

设备探测范围参数:

  • 探测距离最大 235m(80%高反射率);
  • 低反射率物体不到 100m;
  • 针叶林 100m;
  • 柏油沥青 120m;
  • 阔叶林 150m;
  • 建筑砖头 200m左右;
  • 白色灰泥 250m。

4.4.2 算法优化

根据扫描特性进一步进行算法优化。

  • 考虑到发生MTA错误都发生在地面以上,即激光实际能扫描到的很远的物体都在地面以上,可先根据车高信息剔除地面附近点;
  • 对于多次回波,点的连续性只取第一次回波来计算;
  • 分圈后按扫描角和测距值判断空间相邻;
  • 分圈处理,多线程并行加速;
  • 对于不同区域的连续性都很差的点作为孤立点进行剔除。
5.总结与展望

MTA处理算法作为点云解算模块的一部分,是采集资料处理上云的重要环节,不解决MTA问题,就无法实现采集资料处理的自动化。同时MTA处理算法去除了资料处理环节对激光厂商软件的依赖,为公司节省了大量成本。

在算法设计阶段尝试利用SVM,RF等机器学习手段按点云分类思路解题,初步测试发现样本制作困难、正负样本量级差异过大等问题。另一方面,机器学习方法批次处理需要考虑合适的空间范围,对于每个分块动辄亿级的点数,其处理效率将无法满足产线需求。

在算法效果评估阶段,原本打算使用厂商处理的结果作为真值。但评测下来发现,厂商处理结果的效果不如自研算法,不能作为评测真值。最终我们结合产线工艺需求,专门制作了评估方案,算法目标对焦到业务需求,从而客观、可靠、快速地完成了算法的评测工作。

目前MTA处理算法已经进入了线上生产,处理了上万公里点云数据,目前运行稳定,达到预期。

作者:高德技术小哥

原文链接

本文为阿里云原创内容,未经允许不得转载

免责声明:文章转载自《高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇3.1 队列-顺序存储Swoole学习(四)Swoole之简单WEB服务器的创建下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ffmpeg中的sws_scale算法性能测试

经常用到ffmpeg中的sws_scale来进行图像缩放和格式转换,该函数可以使用各种不同算法来对图像进行处理。以前一直很懒,懒得测试和甄 别应该使用哪种算法,最近的工作时间,很多时候需要等待别人。忙里偷闲,对ffmpeg的这一组函数进行了一下封装,顺便测试了一下各种算法。 简单说一下测试环境,我使用的是Dell的品牌机,i5的CPU。ffmpeg是201...

从BF算法到kmp算法详解

正文索引 一、KMP介绍 二、例子:子串匹配母串 1.BF算法的解决方法 三、kmp算法的实现 (1)为什么已经有BF算法了还要有KMP算法呢? (2)发明的算法基本思想 (3)具体实现 一、KMP介绍 KMP算法是一种改进的字符串匹配算法(有BF算法改进而来,BF算法是暴利搜索匹配的方式,而KMP则是对BF算法的回溯过程进行改进,从而大幅度降低了时间复...

openssl enc 加解密

介绍 enc - 对称加密例程,使用对称密钥对数据进行加解密,特点是速度快,能对大量数据进行处理。算法有流算法和分组加密算法,流算法是逐字节加密,数据经典算法,但由于其容易被破译,现在已很少使用;分组加密算法是将数据分成固定大小的组里,然后逐组进行加密,比较广为人知的是DES3。分组算法中又有ECB,CBC,CFB,OFB,CTR等工作模式,其中默认选C...

Crypto++入门学习笔记(DES、AES、RSA、SHA-256)

最先附上下载地址 背景(只是个人感想,技术上不对后面的内容构成知识性障碍,可以skip): 最近,基于某些原因和需要,笔者需要去了解一下Crypto++库,然后对一些数据进行一些加密解密的操作。 笔者之前没接触过任何加密解密方面的知识(当然,把每个字符的ASCII值加1之流对明文进行加密的“趣事”还是干过的,当时还很乐在其中。),甚至一开始连Crypto+...

干货|自适应大邻域搜索(ALNS)算法求解带时间窗的车辆路径规划问题(附java代码)

转眼距离开学又过去一个多月了,不知道大家在家里学习的怎么样?这段时间小编在家里也没闲着,时隔多日,再次为大家带来干货内容。 邻域搜索类启发式算法有很多种,比如禁忌搜索啦,模拟退火啦,变邻域搜索啦等等。这次带来的自适应大邻域搜索代码,相对上述几种会更复杂,编写相对全面。 小编在编写代码时,主要采用git-hub上一位作者de.markusziller的代码,...

JAVA中GC时finalize()方法是不是一定会被执行?

在回答上面问题之前,我们一定要了解JVM在进行垃圾回收时的机制,首先: 一、可达性算法  要知道对象什么时候死亡,我们需要先知道JVM的GC是如何判断对象是可以回收的。JAVA是通过可达性算法来来判断对象是否存活的。这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到G...