RANSAC鲁棒参数估计

来源:互联网 发布:crossover破解版linux 编辑:程序博客网 时间:2024/04/27 19:06

       RANSAC 是"RANdom SAmple Consensus"的缩写。该算法是用于从一组观测数据中估计数学模型参数的迭代方法,由Fischler and Bolles在1981 提出,它是一种非确定性算法,因为它只能以一定的概率得到合理的结果,随着迭代次数的增加,这种概率是增加的。 该算法的基本假设是观测数据集中存在"inliers"(那些对模型参数估计起到支持作用的点)和"outliers"(不符合模型的点),并且这组观测数据受到噪声影响。RANSAC 假设给定一组"inliers"数据就能够得到最优的符合这组点的模型。

      RANSAC 算法需要给定一些参数:
1)fit 一个模型所需的最少样本点数n;
2)最大迭代次数k;
3)确定某个点是否靠近模型的阈值t;
4)确定某个模型是好模型需要的符合该模型的最少样本点数。 

     这些参数对RANSAC 算法的结果影响很大。

     Ransac算法直线参数估计仿真
1) 数据输入,为了方便观察,程序采用二值图的方式输入,其中黑点代表数据。输出时采用绿点表示“inlineres”
      红点表示“outliners”
2) 初始化参数参数n,k,d,t。其中直线估计时n=2,另外我们初始化最小样本数的比例k/N,其中N为总的样本数。
3) 程序按照RANSAC 算法运行,在结果图中将最终选择的模型里,距离该模型小于阈值
4)随机选择两个点,确定一条直线,计算其他点到这条直线的距离,若小于阈值,则将其加入到“inlineres”中。
5) 若“inlineres”的数量大于符合该模型的最少样本点数,则利用总体最小二乘重新估计出一条直线,计算误差。若当前误差小于

      最优误差,则修改最优误差为当前误差。
6) 迭代进行,直至完成。

      结果如下

     

原创粉丝点击