采样一致性(7)

本文介绍了RANSAC(随机采样一致性)和LMedS(最小中值方差估计)在点云处理中的角色,用于在模型上分割点云。RANSAC通过随机抽样和偏差比较确定内点和外点,而LMedS则利用中值偏差来估计模型。两者在处理平面、直线、圆和球等几何模型时各有优缺点。在实践中,使用RANSAC进行模型估计,通过设置距离阈值找出内点,并生成相应的点云。文章还展示了如何使用PCL库实现这一过程。
摘要由CSDN通过智能技术生成

采样一致性--在一定允许误差范围内分割出在模型上的点云

RANSAC随机采样一致性:

样本中随机抽取子集,计算子集与模型的偏差与阈值作比较,区分内点与外点,迭代重复到内点最多,此时的模型参数即为RANSAC下的估计值。

RANSAC的缺陷:事先设定区分内、外点的阈值;不能确定迭代的次数;

LMedS最小中值方差估计:

样本中随机抽取子集,计算子集与模型的偏差与阈值作比较,取出偏差值居中的子集对应的模型参数。

LMedS的缺陷:当外点数量较多时候,没法很好估计模型;

采样一致性支持的几何模型:

平面模型--SACMODEL_PLANE,参数有A,B,C,D,即平面方程Ax+By+Cz+D=0

直线模型--SACMODEL_LINE,参数有点的x,y,z,直线的三个方向值

圆模型--SCAMODEL_CIRCLE2D,参数有圆心x,y以及半径

球模型--SACMODEL_SPHERE,参数有球心x,y,z以及半径

圆柱模型--SACMODEL_CYLINDER,参数有轴线上点x,y,z,轴线三个方向值,半径

//存储内点索引的向量
std::vector<int> inliers;
//创建随机采样一致性对象
pcl::SampleConsensusModelSphere<pcl::PointXYZ>::Ptr model_s(new pcl::SampleConsensusModelSphere<pcl::PointXYZ>(cloud));
pcl::RandomSampleConsensus<pcl::PointXYZ> ransac(model_s);
//设置判断内、外点的距离阈值
ransac.setDistanceThreshold(0.01);
//执行随机参数估计
ransac.computeModel();
//获得内点索引
ransac.getInliers(inliers);
//获得内点点云
pcl::copyPointCloud<*cloud,inliers,*result>;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值