RANSAC算法思想与实现点云粗配准

一 RANSAC算法思想与基本流程

1.1 算法思想

RANSAC(RAndom SAmple Consensus,随机采样一致)是一种随机参数估计算法。RANSAC从样本中随机抽选出一个样本子集,使用最小方差估计算法对这个子集计算模型参数,然后计算所有样本与该模型的偏差,再使用设定好的阈值与偏差进行比较,当偏差小于阈值,该样本点属于模型内样本点,称为内点,否则为外点,每次迭代都记录当前内点个数,根据期望的误差率、内点数、总样本数、当前迭代次数设置一个迭代结束判断条件。迭代结束后,最佳模型就是内点个数最多的点云估计的模型(即共识集最大的那个内点数,拿来作为输入,求咱们的参数模型)。

1.RANSAC使用的前提是待估计模型已知,经常用于二维图像中直线、圆的拟合等等,只要。所以在点云处理中也经常被用于三维平面、球的估计,因为这些几何物体是可以用数学模型描述的。
2.即使一个点云中包含了多个平面或球等几何物体,那么可以使用RANSAC将各个集合物体逐个求出,每求得一个几何物体可以将其点云删除,再进行下一次的求解。


换个角度来理解:
RANSAC算法是从一组含有“外点”(outliers)的数据中正确估计数学模型参数的迭代算法。“外点”一般指的的数据中的噪声,比如说匹配中的误匹配和估计曲线中的离群点。所以,RANSAC也是一种“外点”检测算法。RANSAC算法是一种不确定算法,它只能在一种概率下产生结果,并且这个概率会随着迭代次数的增加而加大(之后会解释为什么这个算法是这样的)。RANSAC算最早是由Fischler和Bolles在SRI上提出用来解决LDP(Location Determination Proble)问题的。

对于RANSAC算法来说一个基本的假设就是数据是由“内点”和“外点”组成的。“内点”就是组成模型参数的数据,“外点”就是不适合模型的数据。同时RANSAC假设:在给定一组含有少部分“内点”的数据,存在一个程序可以估计出符合“内点”的模型。

1.2 算法基本思想和流程

RANSAC是通过反复选择数据集去估计出模型,一直迭代到估计出认为比较好的模型。
具体的实现步骤可以分为以下几步:

1.选择出可以估计出模型的最小数据集;(对于直线拟合来说就是两个点,对于计算Homography矩阵就是4个点,点云配准就是需要三个对应点)
2.使用这个数据集来计算出数据模型;
3.将所有数据带入这个模型,计算出“内点”的数目(小于自己设定的误差阈值,则认为是内点)。
4.比较当前模型和之前推出的最好的模型的“内点“的数量,记录最大“内点”数的模型参数和“内点”数;
重复1-4步,直到迭代结束或者当前模型已经足够好了(设定一个自己看重的迭代结束判断条件,比如说:内点数目大于一定数量或就指定迭代多少次)。

这个误差阈值的设定很有讲究,根据模型的不同,设定都不太一样(但基本都是拿距离来衡量把),打几个比方:
1.我要做直线拟合,那么随机找了两个点来拟合求出参数以后,然后计算所有点到这条直线的距离,满足自己设定的阈值就可以称为内点。
2.我要做圆的拟合,那么随机找了三个点来拟合求出参数以后,然后把所有点都带到这个拟合的方程里面去,与求出的圆的半径r比较(比如作差的绝对值),满足自己设定的阈值就可以称为内点。

二 RANSAC实现点云粗配准算法流程(RANSAC具体到点云配准了)

  1. 在对应点集中随机选取3个对应点对,并求解刚体变换矩阵。
  2. 计算对应点中剩余点对,在上一步所求的刚体变换矩阵的作用下点对的距离误差,若其中一点对的距离误差小于设定的阅值误差,则该点为样本内点,否则为样本外点,并统计前者数目。
  3. 重复以上步骤直至抵达选代次数的上限。统计不同刚体变换模型下的样本内点数量,样本内点数量最多的作为最佳数学模型输入,然后进行计算点云配准操作(比如同svd求解变换矩阵T)。

优点

  1. RANSAC通常产生更好的结果,即使在无噪声的情况下
  2. RANSAC不需要两个数据集之间的变换的良好初始估计
  3. RANSAC可用于不具有那么多局部特征的数据集

参考文章:
1.RANSAC实现点云粗配准:https://blog.csdn.net/qq_40301351/article/details/124400499
2.RANSAC算法详解(附Python拟合直线模型代码):https://zhuanlan.zhihu.com/p/62238520
3.点云模型估计(RANSAC):https://zhuanlan.zhihu.com/p/357970385

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
RANSAC(随机抽样一致性)算法是一种经典的点云配准方法,用于估计两个点云之间的刚性变换。然而,传统的RANSAC算法在噪声点较多或点云缺失较严重时,存在较大的误配现象。为了解决这个问题,可以采用PCL(点云库)中提供的改进的RANSAC算法实现点云配准。 PCL中改进的RANSAC算法主要包括以下几个步骤: 1. 随机采样:从原始点云中随机选择一小部分特征点作为样本点,用于估计初始的旋转矩阵和平移向量。 2. 配准评估:基于样本点估计的初始变换参数,计算其余的点和目标点之间的误差(如欧氏距离),并将其作为新一轮迭代的样本点。 3. 简化模型:根据预定义的阈值,筛选出内点,将其作为新的样本点重新估计初始的变换参数。 4. 反馈迭代:重复以上步骤2和3,直至符合迭代次数或误差小于设定阈值。 5. 最优解选择:从所有迭代过程中选择误差最小的变换参数,作为最终的配准结果。 通过这种改进的RANSAC算法,可以提高点云配准的精度和鲁棒性。它对于噪声点和点云缺失的处理更加稳健,减少了误配的可能性。同时,该算法在计算效率上也进行了优化,能够较快地得到配准的结果。 总之,PCL中改进的RANSAC算法是一种有效的点云配准方法,可以对两个点云进行刚性变换的估计,具有较高的精度和鲁棒性。该算法在实际应用中可以广泛地应用于三维重建、机器人导航和虚拟现实等领域。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值