点云拼接-将局部扫描设备拼接到完整点云地图
目录
一、适用场景
对某一场景已经有一幅完整的点云地图,但是该场景局部发生了变化,如新增加了一个设备,于是对该设备周围进行扫描,得到一幅局部扫描点云,希望将该设备点云增加到原来的完整点云地图中。如下图所示:
红色点云是局部扫描地图,绿色点云是完整点云地图。
二、算法步骤
因为现在两幅点云的位姿有较大偏差,所以整体算法分成点云配准和点云融合两步。
(1)点云配准
在实际配准过程中,地面的点云占比比较大,却没有带太多的特征信息,会对配准造成干扰,所以配准前先进行地面去除,去除效果如下:
地面去除后开始配准,这里配准我尝试了FPFH+ICP和Super4pcs算法,其中FPFH+ICP算法的配准结果不理想,Super4pcs算法的效果挺好的,而且很经过Super4pcs配准后,ICP算法已经没有多大的精度改进了。效果如下:
(2)点云融合
仔细观察配准后的点云地图,发现局部点云地图部分点存在严重飘逸的情况,如下图所示这部分点云如果融合到完整地图中,则会给完整地图带来错误信息,所以接下来需要对局部点云地图进行分割筛选。
首先通过欧式距离判断重叠区域,结果如下面左图,蓝色点云为分割出的重叠区域,绿色点云为完整点云地图,然后再对重叠区域和完整点云地图进行加权融合,实验中选择的权值是各0.5,结果如下面中间图,红色点云为重叠区域这部分融合后的点云。对于非重叠区域,通过聚类进行分割,筛选出我们需要的设备点云,结果如下面右图,然后添加进最终的完整点云地图。
三、实验结果
实验结果如下图,场景中新增的设备成功添加进了完整点云地图中。(左图为原始完整点云地图,右图为更新后的点云地图)
四、结语
整体思路比较简单,学习过程中做个记录,欢迎大家提出意见,一起讨论进步。如果有需要源码的可以私聊(虽然代码也很简单),人多的话我就整理上传到网站。