《点云拼接,配准,注册有什么联系》学习笔记

1、点云拼接,配准,注册说的是同一个概念,就是把不同位置的点云通过重叠部分的信息,变换到同一个位置。下面我们就用注册这个名词来描述这个过程。注册一般分为三类:粗注册,精细注册和全局注册。

粗注册:一般用于注册两个位置相差很大的点云,比如两帧位于相机坐标系的点云。粗注册方法大致分为两类:有标记点粗注册和无标记点粗注册。标记点可以是用户手动标记的,也可以是物体扫描时贴的标记点。无标记点注册更加方便一些,但是对于一些比较对称或者重合部分很少的情况,可能会有一些失误的。另外还有一些根据设备的参数来计算粗注册变换的方法。

精细注册:这里一般指ICP注册方法。主要用于已经粗注册好的点云,需要提升注册精度的情况。ICP可以加入标记点信息。因为众所周知,一些滑动情况会导致ICP注册失败,但是如果数据本身有标记点的话,可以加入标记点信息来提升注册的成功率。

全局注册(联想SLAM中的BA问题以及后端优化问题):逐帧注册的点云数据,往往有累积误差。全局注册可以把累积误差分散到每一帧中去,从而减少整体的注册误差。另外,有些时候所有点云已经有了粗注册了,可以应用全局注册一次性把所有点云注册好。如下图所示。

▷注册连续多帧扫描数据

从扫描数据到注册融合成一个完整的点云数据,有各种各样的工作流方式:可以一边注册一边融合(Frame-to-Model),也可以两两注册后再一起融合(Frame-to-Frame)。用户可以根据自己的数据特点来就行设计。

下面举一个一边注册一边融合(Frame-to-Model)的例子,如下图所示:

a,b为第一,第二帧数据

粗注册到一块c

精细注册到d

融合成一个整体e

导入第三帧数据f

与e粗注册到g

然后重复之前到步骤,最终再对注册好的所有数据做一个全局注册,把所有数据融合到一个整体点云

 

总之,不同特点的数据有不同的注册流程,用户可以多试试不同的流程,找到最适合自己数据的注册方式。

 

无标记点注册需要多少重合度

无标记点注册需要多少重合度?这是很多用户在做无标记注册时经常问的问题。比如用户在扫描物体的时候,到底帧与帧之间重合多少比较合适。一般来讲,重叠区域的特征越明显,越独特,重叠区域的重合度可以越低。

两个三维点云,理论上只需要三个点对(无退化情况)就可以确定一个刚体变换。用户可以穷举出所有可能的刚体变换,然后选择一个“最好的”变换。由于穷举的个数太多,为了提高效率,一般会采样一些刚体变换来选择最优的解。一般的无标记注册方法都采用了这个过程,这里面有些问题需要考虑:

“最好的”定义:一般是计算两个点云的重叠区域的大小,重叠区域可以根据点云特征来加权计算。需要注意的是,有时候用户期望的变换,并不是“最好的”。

刚体变换的采样:既要采样个数少,又要尽量包含好的刚体变换

重叠区域的大小,会影响算法的结果:

重叠区域过小的时候,“最好的”刚体变换的分数大于了用户期望的刚体变换分数。一个极端的例子是,两个有部分重叠的半球面,最好的刚体变化会使得两个半球完全重叠,而不是用户期望的部分重叠。所以,尽可能的让你所期望的刚体变换,与算法定义的“最好的”刚体变换是相同的,或者说期望的重叠区域能得到最高的分。

重叠区域过小,也可能影响采样的稳定性。稳定性的提升可以通过采样个数的提升来获得,但是性能可能会有所下降。

无标记注册“失败”的时候,用户可以看看算法结果的合理性是否比你所期望的变换更加“合理”,重叠度是否更高。

有标记注册,很大程度上是影响“最好的”刚体变换的定义,并且减小了刚体变换空间的采样范围。

 

▷提升无标记点注册的成功率

无标记点注册,一般用于点云的粗对齐。其成功率依赖于点云的重叠区域大小,重叠部分特征的显著性,以及模型本身的对称性等。下面从几个方面聊聊如何提高对齐的成功率:

重叠区域的特征尽可能的明显

注册时采用两两注册的方式。这样可以减少两帧点云非重叠部分的区域,也就减小了歧义性。比如对称模型的扫描注册,如果采用一边注册一边融合的方法,对称部分的点云在无标记注册时,有可能对齐到对称部分。而两两注册可以减少这类歧义性的发生

如果物体本身特征不明显,可以增大重叠区域的面积来提供对齐的稳定性

 

▷ICP注册

ICP注册(Iterative Closest Point最近点迭代),一般用于点云的精细注册,点云需要初始对齐好。经典的ICP的算法框架:

输入初始对齐的点云Source和Target,输出Target的刚体变换Transform,使得能量 || Source - Transform(Target) || 最小。

a) 采样:一般对Target进行采样,包括均匀采样和各种属性相关的采样。

b) 找对应点:给采样点找最近距离的对应点。这个距离可以是欧式距离,或者是属性相关的其它距离。采样点也可以没有对应点,一般应用点云属性进行过滤。

c) 优化目标能量:常见的能量有纯几何能量,包括点到点,点到平面,平面到平面的能量;也有加入了一些属性相关的能量,常见的属性如点云对应的彩色图像。

d) 迭代步骤b和c,直到能量收敛到最小值,或者达到迭代次数上限。

ICP注册从90年代初就有了,到目前有接近30年的历史了。ICP发展到现在,已经算是一种精细注册的思想了。它有很多变种,包括每个步骤策略的选择,参数如何自适应调整等。

 

▷全局注册

全局注册属于点云的精细注册,点云需要初始对齐好。它和ICP注册的区别在于,它是多个点云同时注册,点云个数一般大于2。

点云个数比较多的时候,注册误差会累积得很厉害。如下图所示,第一列截取了三对ICP注册后的点云,局部来看注册得很好。然后逐对点云两两ICP注册,如中图所示,点云注册的效果并不好,累计误差很严重。第三列是点云经过全局注册后效果,注册误差被分散到每一帧中去了,从而减少整体的注册误差。

 

▷注册成功的判定

注册成功的判定,最关键的是“成功”的定义。一般是计算两个点云的重叠区域的大小,重叠区域可以根据点云特征来加权计算。当重叠区域面积或者比例大于一定的阈值,就判定为成功。需要注意的是,有时候用户期望的变换,并不是“最好的”。

 

▷如何融合已经注册对齐的数据

注册好的点云数据,会有不少重叠部分,重叠部分点云处理,一般有两种做法:平均融合和去除重叠。平局融合就是把重叠部分的点平均起来;去除重叠就是在重叠部分只取其中一帧的数据。我们建议使用去除重叠的方法来融合重叠部分的数据,因为这样可以尽可能的保持原有数据的信息。

多帧点云,往往由于系统误差原因,重叠部分的点是不能完美重合在一起的。多帧数据平均融合,会损失掉一些数据细节。去除重叠,只取一帧的做法,可以保留住点云的细节。

点云去除重叠,需要有个重叠判定条件,一般是设置一个点云的影响范围,范围内的点会被过滤掉。就如同一个筛子一样,过滤范围越大,筛子的缝隙越小。一般可以取点云的平均间距作为过滤范围,如果点云误差比较大,可以增大过滤范围。避免出现不同帧的点云在重叠处相互渗透的情况,相互渗透会产生噪音。

去除重叠的时候,在重叠交界处,会有接缝痕迹。SumPointCloud有个特点是可以去除掉重叠部分的系统误差,使得融合后的点云看不出接缝。如下图所示,左图是一系列注册好的点云重叠在一起;中间结果是简单的去除重叠区域的点云,可以明显看到重叠区域有误差痕迹;右边的结果是SumPointCloud在去除重叠的同时,消除了误差痕迹。

 

▷如何去掉点云的重影

多帧点云注册去除重叠后,得到一个整体点云后,有时候会出现局部点云有重影的情况。常见的原因是数据本身有误差,有微小形变,刚体变换不可能把多帧点云完全对齐。根据点云处理的工作流程,下面介绍几种去除重影的方法:

非刚体ICP注册:既然数据有误差,刚体变换无法完全对齐点云,可以引入非刚体注册。对于两帧数据的注册,可以应用非刚体ICP。如图所示:

(a)是输入的两个点云

(b)是无标记对齐的结果

(c)是ICP精细对齐的结果,可以看到点云有些部位的对齐还是有误差的

(d)是非刚体的ICP对齐的结果,对齐误差明显降低了

(e)是(c)的注册结果去除重叠,再更新法线的结果。可以看到有些局部法线出现了毛刺的效果,这是对齐误差的体现

(f)是(d)的注册结果去除重叠,再更新法线的结果。可以看出对齐误差明显小了很多。

非刚体全局注册:对于多帧数据的注册,可以应用非刚体全局注册。如图所示,左图全局注册的结果,右图是非刚体全局注册的结果。明显的,非刚体注册大幅的提升了注册精度。

点云去除重叠:在点云去除重叠的时候,也可以融合重叠接缝处的误差痕迹。具体效果可以参考“如何融合已经注册对齐的数据”部分的讲解。

点云去除重影:如果用户已经得到了一个整体点云,并且有了重影,没有办法应用非刚体注册。那么可以先检测出点云的重影部分,再删除掉这些局部点云。如图所示,左边的蓝色点云局部放大后,有重影:红色是检测出的重影部分。用户可以删掉它们。右边两个模型是点云三角化的结果,左边的网格是原始点云的重建结果,右边网格是去除重影后的重建结果。对比红线框部分的网格,明显看出去除重影后的重接结果质量要好很多。

▷任意点云序列的注册

多角度点云的拼接,需要帧与帧之间有重叠。用户连续扫描模型的时候,相邻两帧可以认为是有重叠的。但是,有的时候,这种重叠关系丢失了,也就是不知道与当前帧重叠的是哪一帧。如图所示,左边是用户随意扫描的四帧点云。这时候,也可以应用无标记注册的功能,来自动的找出重叠关系,并且把所有点云拼接起来。如图右所示。

引用文献

  • 13
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值