RANSAC片段代码的解析

博客仅作个人学习记录,如有问题可联系

        RANSAC(Random Sample Consensus,随机采样一致)算法是一种随机参数估计算法,通俗说数据是由“内点”和“外点”组成的, “内点”就是组成模型参数的数据,“外点”就是不适合模型的数据,从一组含有“外点”(outliers)的数据中正确估计数学模型参数的迭代算法就是RANSAC。“外点”一般指的的数据中的噪声,比如说匹配中的误匹配和估计曲线中的离群点,所以RANSAC也是一种“外点”检测算法。

      RANSAC实现点云粗配准的主要思路是,首先在对应点集中随机选取3个对应点对,并求解刚体变换矩阵;然后计算对应点中剩余点对,在上一步所求的刚体变换矩阵的作用下点对的距离误差,若其中一点对的距离误差小于设定的阅值误差,则该点为样本内点,否则为样本外点,并统计前者数目;重复以上步骤直至抵达选代次数的上限;最后统计不同刚体变换模型下的样本内点数量,样本内点数量最多的作为最佳数学模型输入,进行计算点云配准操作。即使在无噪声的情况下,RANSAC算法通常也能够产生更好的结果;同时可用于不具有那么多局部特征的数据集,而且 RANSAC不需要两个数据集之间的变换的良好初始估计。

首先是使用的ransac片段全部代码

 //--------------------RANSAC点云配准-----------------------------
 pcl::SampleConsensusPrerejective<PointT, PointT, pcl::FPFHSignature33> r_sac;
 r_sac.setInputSource(cloud_source);            // 输入源点云
 r_sac.setInputTarget(cloud_target);            // 输入目标点云
 r_sac.setSourceFeatures(source_fpfh);    // 输入源点云FPFH特征
 r_sac.setTargetFeatures(target_fpfh);    // 输入目标点云FPFH特征
 r_sac.setCorrespondenceRandomness(55);    // 在选择随机特征对应时,设置要使用的邻居的数量,数值越大,特征匹配的随机性越大。
 r_sac.setInlierFraction(0.5f);           // 所需的(输入的)inlier分数
 r_sac.setNumberOfSamples(10);             // 每次迭代中使用的采样点数量
 r_sac.setSimilarityThreshold(0.1f);      // 将底层多边形对应拒绝器对象的边缘长度之间的相似阈值设置为[0,1],其中1为完全匹配。
 r_sac.setMaxCorrespondenceDistance(1.0f);// 内点,阈值 Inlier threshold
 r_sac.setMaximumIterations(500);         // RANSAC  最大迭代次数
 pointcloud::Ptr align(new pointcloud);
 r_sac.align(*align);
 cout << "\nRANSAC 粗配准has converged, score is " << r_sac.getFitnessScore() << endl;
 pcl::transformPointCloud(*cloud_source, *align, r_sac.getFinalTransformation());
 cout << "\nRANSAC后变换矩阵:\n" << r_sac.getFinalTransformation() << endl;
 Eigen::Matrix4f r_sac_trans = r_sac.getFinalTransformation();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值