RANSAC算法(2):(拟合平面)本文以地面为基础以及源码分布解读

本章代码是本人根据一个未曾谋面的好人学习的(要怀抱希望,世界上好人真的是很多的,我要做一个去给别人带去正能量积极态度的人,加油喽),如需转载学习请注明。谢谢

 

---------------基于ransac算法平面检测:

1、确定迭代次数;

2、在迭代次数内:

     2.1 随机选择三个点组成平面(判断三个点是否共线);

     2.2 构造坐标矩阵;

     2.3 求平面方程;

     2.4 求所有点到平面的距离;

     2.5 统计inlier个数(距离小于阈值);

3、迭代选择inlier个数最多的平面。

PS:如果你进行的是地面分割,只使用inlier作为判断条件的不足;导致某个点数较多的非地面平面占据inlier个数;为了避免将平直墙面检测为地面,必须将夹角加入判断条件;(夹角就是法向量与Z轴(0,0,1)的夹角。

判断三个点是否共线的两种方法:

1、满足满秩矩阵(利用满秩行列式不等于0)用三点其中任意两点组成向量,求这样两个不同向量是否平行就行了.也就是说三个点的坐标组成一个三阶行列式,只要三阶行列式为0,且该矩阵秩为1,则必定是共线的。
2、利用比例关系

你可能感兴趣的:(PCL,C++,以及编程语言,&,随笔)