RANSAC是 RANdom SAmple Consensus 的缩写,中文翻译叫随机采样一致。它可以从一组观测数据中,找出符合某些数学模型的样本集,并且估计出这个数学模型的参数。举个例子,如下图所示,这些点是观测数据,给定的数学模型是圆形和直线,我们想从这些观测数据中找出圆形和直线,并且估计出它们的几何参数。
下面介绍一下RANSAC算法:
输入:观测数据data,数学模型models;输出是匹配data的数学模型match_models和对应的样本集sub_data
1. 随机采样data中的一些样本sub_data
2. 用数学模型match_model去匹配样本集sub_data,估计出数学模型的参数
3. 评价估计出来的match_model,如果可以接受,则把它放入match_models,并且从原始观测数据中剔除对应的样本集sub_data
4. 迭代步骤1-3,直到估计出了所有的数学模型,或者迭代次数到了最大值
RANSAC算法是一类模式识别方法的框架,算法步骤里的具体内容是需要根据实际情况来实例化的。
下面我们介绍一个RANSAC算法的应用,检测三维点云的基本图元。基本图元包括:平面,球面,圆柱面和圆锥面。如下图所示,红色-平面;绿色-圆柱面;黄色-球面;蓝色-圆锥面。
输入:三维点云;数学模型是四类基本图元,它们的参数分别是:
1. 随机采样点云中的三个点,做为一个样本集。
2. 用这三个点分别估计出四类图元的参数。
3. 评价估计出的图元:计算图元的支撑集,也就是点云里有多少个点在图元上。取最大支撑集对应的图元类型,并且评估它是否可接受
4. 迭代步骤1-3,直到检测出了所有的图元集,或者迭代步骤到达了最大值
下面讨论一下这个算法:
总之,RANSAC提供了一种很好的算法框架。算法的具体内容和策略,是需要根据实际情况来设计的,需要综合平衡各种因素,比如算法的稳定性,性能,质量等。
有兴趣的读者,欢迎参考视频版本
原文:https://www.cnblogs.com/threepark/p/11717607.html