RANSAC 学习笔记

RANSAC

(很早之前的笔记,传上来记录一下)

Random sample consensus (RANSAC) is an iterative method to estimate parameters of a mathematical model from a set of observed data that contains outliers, when outliers are to be accorded no influence on the values of the estimates.
– wiki

random sample consensus,这个算法很早就听说过了,却一直没有去了解,这两天学习了一下,发现其实很简单。

因为我们最近需要对点云分类为地面和非地面两种,之前在地下车库所采用的方法就是 autoware 的 lidar_euclidean_cluster,先进行 ransac 提取地面,然后用 difference of normals(根据每个点的法线进行聚类) 去除噪声点,最后使用 euclidean distance based segmentation(一种基于欧式距离的泛洪方法) 对点云进行扩充。在车库里这套方法本来还是效果还可以的,虽然也存在当车存在倾斜时不鲁棒的问题,但是在室外的话还是不太 ok 啊。当然,这些问题之后会想办法解决,这篇文章首先就先来对 ransac 方法进行一个介绍。

首先自然是先看下 wiki 了,上面说的还是很全的。ransac 方法的输入是一组包含了离群点的观测数据,其输出就是根据这些观测数据迭代找到一个能够最好地拟合目标数学模型的模型参数。

以刚才提到的点云分离地面为例,这里我们的输入就是一帧实时的点云,点云中既包含了地面点云(inliers)也包含了非地面点云(如墙壁,树木等,outliers),我们希望的输出就是地面的那些点云。ransac 的方法就是分析地面点云的分布,找到一个能够最好的拟合这个分布的数学模型,然后将一帧点云中所有符合(可以自己设定 offset)这个数学模型的点输出。在这里,我们可以假设地面点云符合的数学模型是一个平面模型,因为大部分地面还是比较平坦的,可以当做一个平面看待。平面的数学模型就是 a x + b y + c z + d = 0 ax + by + cz + d = 0 ax+by+cz+d=0,而确定一个平面一般三个点就可以了,根据 ransac 的方法,我们可以先从一帧点云中随机采样三个点,然后确定这个平面的模型参数(也就是 a , b , c , d a,b,c,d a,b,c,d),将所有到这个平面的距离 d i s t a n c e ( p o i n t , p l a n e ) < δ distance(point, plane) < \delta distance(point,plane)<δ 的点视为 inliers,其余点都记为 outliers,如果 N i n l i e r s N a l l \frac{N_{inliers}}{N_{all}}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值