月博登录中心入口-月博首页登录中心入口
en
月博登录中心入口-月博首页登录中心入口
走进汉振
into hanchine
汉振分享 | random sample consensus随机一致性采样
日期:2021年02月25日

走进汉振-月博登录中心入口

ransac算法的基本假设是样本中包含正确数据(inliers,可以被模型描述的数据),也包含异常数据(outlies,偏离正常范围很远、无法适应数学模型的数据),即数据集中含有噪声。这些异常数据可能是由于错误的测量、错误的假设、错误的计算等产生的。同时ransac也假设,给定一组正确的数据,存在可以计算出符合这些数据的模型参数的方法。

ransac基本思想描述如下:

01 考虑一个最小抽样集的势为n的模型(n为初始化模型参数所需的最小样本数)和一个样本集p,集合p的样本数#(p)>n,从p中随机抽取包含n个样本的p的子集s,来初始化模型m;

02 余集sc=p\s中与模型m的误差小于某一设定阈值t的样本集以及s构成s*。s*认为是内点集,它们构成s的一致集(consensus set);

03 若#(s*)≥n,认为得到正确的模型参数,并利用集s*(内点inliers)采用最小二乘等方法重新计算新的模型m*;重新随机抽取新的s,重复以上过程。

04 在完成一定的抽样次数后,若未找到一致集则算法失败,否则选取抽样后得到的最大一致集判断内外点,算法结束。

t —— 用于决定数据是否适应于模型的阀值

n —— 判定模型是否适用于数据集的数据数目

k —— 迭代次数

我们不得不根据特定的问题和数据集,通过实验来确定参数t和n。然而参数k(迭代次数)可以从理论结果推断。当我们在估计模型参数时,用p表示一些迭代过程中从数据集内随机选取出的点均为局内点的概率;此时,结果模型很可能有用,因此p也表征了算法产生有用结果的概率。用w表示每次从数据集中选取一个局内点的概率,如下式所示:

w = 局内点的数目 / 数据集的数目

通常情况下,我们事先并不知道w的值,但是可以给出一些鲁棒的值。假设估计模型需要选定n个点, 是所有n个点均为局内点的概率;1− 是n个点中至少有一个点为局外点的概率,此时表明我们从数据集中估计出了一个不好的模型。表示算法永远都不会选择到n个点均为局内点的概率,它和1-p相同。因此,

我们对上式的两边取对数,得出:

值得注意的是,这个结果假设n个点都是独立选择的;也就是说,某个点被选定之后,它可能会被后续的迭代过程重复选定到。这种方法通常都不合理,由此推导出的k值被看作是选取不重复点的上限。例如,ransac算法拟合直线时,通常在每次迭代时选取2个点,计算通过这两点的直线maybe_model,要求这两点必须唯一。

为了得到更可信的参数,标准偏差或它的乘积可以被加到k上。k的标准偏差定义为:

01 直线拟合

步骤

  • 随机选取2个点
  • 由这2个点计算直线方程
  • 计算所有点到直线的距离
  • 得到满足条件(点到直线的距离小于预先设定的某个值)的点的数量
  • 循环1-4步骤,记录点数最多的那组直线

与最小二乘法拟合直线的对比如下图:

02 点云拟合规则3d模型

pcl库中集成了规则模型的ransac点云分割算法。

利用ransac拟合平面代码如下:

拟合平面效果图:

拟合圆柱代码如下:

杯子的圆柱面拟合效果图:

03 其他应用

  • 特征点匹配滤除误匹配的点
  • 相机位姿估计
  • 图像拼接和点云匹配融合等

5、优点与缺点

ransac的优点是它能鲁棒地估计模型参数。例如,它能从包含大量局外点的数据集中估计出高精度的参数。

ransac的缺点是它计算参数的迭代次数没有上限;如果设置迭代次数的上限,得到的结果可能不是最优的结果,甚至可能得到错误的结果。ransac只有一定的概率得到可信的模型,概率与迭代次数成正比。

ransac的另一个缺点是它要求设置跟问题相关的阀值。此外,ransac只能从特定的数据集中估计出一个模型,如果存在两个(或多个)模型,ransac不能找到别的模型。

网站地图