点云拼接注册

原文链接

点云拼接,配准,注册有什么联系

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

  • 粗注册:一般用于注册两个位置相差很大的点云,比如两帧位于相机坐标系的点云。粗注册方法大致分为两类:有标记点粗注册和无标记点粗注册。标记点可以是用户手动标记的,也可以是物体扫描时贴的标记点。无标记点注册更加方便一些,但是对于一些比较对称或者重合部分很少的情况,可能会有一些失误的。另外还有一些根据设备的参数来计算粗注册变换的方法。
  • 精细注册:这里一般指ICP注册方法。主要用于已经粗注册好的点云,需要提升注册精度的情况。ICP可以加入标记点信息。因为众所周知,一些滑动情况会导致ICP注册失败,但是如果数据本身有标记点的话,可以加入标记点信息来提升注册的成功率。
  • 全局注册:逐帧注册的点云数据,往往有累积误差。全局注册可以把累积误差分散到每一帧中去,从而减少整体的注册误差。另外,有些时候所有点云已经有了粗注册了,可以应用全局注册一次性把所有点云注册好。如下图所示。
    global registrate

注册连续多帧扫描数据

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

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

  • a,b为第一,第二帧数据
  • 粗注册到一块c
  • 精细注册到d
  • 融合成一个整体e
  • 导入第三帧数据f
  • 与e粗注册到g
  • 然后重复之前到步骤,最终再对注册好的所有数据做一个全局注册,把所有数据融合到一个整体点云
    regitration workflow
    总之,不同特点的数据有不同的注册流程,用户可以多试试不同的流程,找到最适合自己数据的注册方式。

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

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

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

  • “最好的”定义:一般是计算两个点云的重叠区域的大小,重叠区域可以根据点云特征来加权计算。需要注意的是,有时候用户期望的变换,并不是“最好的”。
  • 刚体变换的采样:既要采样个数少,又要尽量包含好的刚体变换
    重叠区域的大小,会影响算法的结果:
  • 重叠区域过小的时候,“最好的”刚体变换的分数大于了用户期望的刚体变换分数。一个极端的例子是,两个有部分重叠的半球面,最好的刚体变化会使得两个半球完全重叠,而不是用户期望的部分重叠。所以,尽可能的让你所期望的刚体变换,与算法定义的“最好的”刚体变换是相同的,或者说期望的重叠区域能得到最高的分。
  • 重叠区域过小,也可能影响采样的稳定性。稳定性的提升可以通过采样个数的提升来获得,但是性能可能会有所下降。
    无标记注册“失败”的时候,用户可以看看算法结果的合理性是否比你所期望的变换更加“合理”,重叠度是否更高。

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

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

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

  • 重叠区域的特征尽可能的明显
  • 注册时采用两两注册的方式。这样可以减少两帧点云非重叠部分的区域,也就减小了歧义性。比如对称模型的扫描注册,如果采用一边注册一边融合的方法,对称部分的点云在无标记注册时,有可能对齐到对称部分。而两两注册可以减少这类歧义性的发生
  • 如果物体本身特征不明显,可以增大重叠区域的面积来提供对齐的稳定性

ICP注册

ICP注册(Iterative Closest Point最近点迭代),一般用于点云的精细注册,点云需要初始对齐好。详细介绍可以参考专题 点云ICP注册

全局注册

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UvPEmMPv-1571875995609)(http://geometryhub.net/images/kinect_global_registrate.jpg)]

注册成功的判定

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

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

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

  • 多帧点云,往往由于系统误差原因,重叠部分的点是不能完美重合在一起的。多帧数据平均融合,会损失掉一些数据细节。去除重叠,只取一帧的做法,可以保留住点云的细节。
  • 点云去除重叠,需要有个重叠判定条件,一般是设置一个点云的影响范围,范围内的点会被过滤掉。就如同一个筛子一样,过滤范围越大,筛子的缝隙越小。一般可以取点云的平均间距作为过滤范围,如果点云误差比较大,可以增大过滤范围。避免出现不同帧的点云在重叠处相互渗透的情况,相互渗透会产生噪音。
  • 去除重叠的时候,在重叠交界处,会有接缝痕迹。SumPointCloud有个特点是可以去除掉重叠部分的系统误差,使得融合后的点云看不出接缝。如下图所示,左图是一系列注册好的点云重叠在一起;中间结果是简单的去除重叠区域的点云,可以明显看到重叠区域有误差痕迹;右边的结果是SumPointCloud在去除重叠的同时,消除了误差痕迹。
    head_sumpointcloud

如何去掉点云的重影

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

  • 非刚体ICP注册:既然数据有误差,刚体变换无法完全对齐点云,可以引入非刚体注册。对于两帧数据的注册,可以应用非刚体ICP。如图所示:
  • (a)是输入的两个点云
  • (b)是无标记对齐的结果
  • ©是ICP精细对齐的结果,可以看到点云有些部位的对齐还是有误差的
  • (d)是非刚体的ICP对齐的结果,对齐误差明显降低了
  • (e)是©的注册结果去除重叠,再更新法线的结果。可以看到有些局部法线出现了毛刺的效果,这是对齐误差的体现
  • (f)是(d)的注册结果去除重叠,再更新法线的结果。可以看出对齐误差明显小了很多。
    nonrigid_compare
  • 非刚体全局注册:对于多帧数据的注册,可以应用非刚体全局注册。如图所示,左图全局注册的结果,右图是非刚体全局注册的结果。明显的,非刚体注册大幅的提升了注册精度。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-98iz19e8-1571876730568)(http://geometryhub.net/images/global_nonrigid_car.png)]
  • 点云去除重叠:在点云去除重叠的时候,也可以融合重叠接缝处的误差痕迹。具体效果可以参考“如何融合已经注册对齐的数据”部分的讲解。
  • 点云去除重影:如果用户已经得到了一个整体点云,并且有了重影,没有办法应用非刚体注册。那么可以先检测出点云的重影部分,再删除掉这些局部点云。如图所示,左边的蓝色点云局部放大后,有重影:红色是检测出的重影部分。用户可以删掉它们。右边两个模型是点云三角化的结果,左边的网格是原始点云的重建结果,右边网格是去除重影后的重建结果。对比红线框部分的网格,明显看出去除重影后的重接结果质量要好很多。
    在这里插入图片描述

任意点云序列的注册

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

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
点云拼接是将多个点云数据集合并成一个整体的过程。而RANSAC(随机抽样一致性算法)是一种经典的模型估计方法,可以用于点云拼接。下面我用300字详细解释一下点云拼接RANSAC的原理和步骤。 首先,点云拼接RANSAC的目标是找到多个点云之间的共同几何关系。这个几何关系通常是由旋转、平移和缩放等变换描述的。 RANSAC算法的步骤如下: 1. 随机从点云中选择一个点作为起始点,并将其作为一个模型的一部分; 2. 从剩余的点云中随机选择一些点,构成一个能够满足当前模型的假设集合; 3. 使用这个假设集合来估计一个模型,通常使用最小二乘法等方法; 4. 计算当前模型对于所有点的拟合误差; 5. 如果误差小于设定的阈值,将这个模型认为是一个好模型; 6. 重复2-5的步骤若干次,选择拟合误差最小的模型; 7. 使用所有被认为是好模型的点云对应的变换,将点云进行拼接。 在点云拼接中,RANSAC算法的关键是通过选择随机的点来构建一组假设集合。然后使用这个假设集合来估计一个模型,并计算拟合误差。根据误差的大小,可以判断该模型是否是一个好模型。通过多次重复这个过程,并选择拟合误差最小的模型,就可以得到最好的点云拼接结果。 总结来说,点云拼接RANSAC是一种通过随机抽样和拟合误差计算来估计点云之间共同几何关系的方法。它可以有效地将多个点云数据拼接成一个整体,用于实现点云拼接和重建等应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值