参考资料:
点云处理入门 RANSAC & ICP with PCL Demo - 知乎
ransac是什么?
随机采样一致算法(RANdom SAmple Consensus)RANSAC。该算法可以从一组观测数据中(包含离群点),查找出符合某个数学模型的样本集,并估计出该数学模型的参数。对于点云处理来讲,给定一组点云数据,想要查找该点云数据中的平面点云、球面点云、或者直线点云等等,这些平面、球面、直线就是数学模型,以平面为例,RANSAN可以查找出想要的平面点云,并给出该平面参数,常用的有使用ransac进行自动驾驶场景的地面拟合,找出地面点云
ransac具体怎么实现上述功能
算法输入:数据 data,数学模型 models
算法输出:估计出的数学模型match_models,满足数学模型的数据 match_data
算法实现步骤:
- 随机筛选n个样本
- 用第一步筛选的n个样本计算数学模型
- 将其他的样本套进这个数学模型中,误差小于e的认为是内群点,大于e的作为外群点,并记录内群点的数量
- 当迭代次数小于设定的k值时,重复步骤1至步骤3,也就是再重新随机选择样本点,计算模型及当前模型下的内群点,最终将内群点最多的的模型作为算法输出的最终模型,此时的内群点即为算法输出的match_data
此算法中,随机选择的样本数量n,误差e,迭代次数k都需要提前设置,样本数量的选择与数学模型相关,比如直线最少需要2个点,要是圆,二次曲线,或者是球体等,也需要根据其模型确定需要的最少点数来定,迭代次数的话,可以根据经验值设定一个数,也可以根据一些概率估计的方法得出,或者是一些自适应的方法。
效果:
平面