zoukankan      html  css  js  c++  java
  • PCL利用RANSAC自行拟合分割平面

    利用PCL中分割算法、

     pcl::SACSegmentation<pcl::PointXYZ> seg;

    ,不利用法线参数,只根据模型参数得到的分割面片,与想象的面片差距很大,

     1  pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients ());
     2   pcl::PointIndices::Ptr inliers (new pcl::PointIndices ());
     3   // 创建分割对象
     4   pcl::SACSegmentation<pcl::PointXYZ> seg;
     5   // 可选
     6   seg.setOptimizeCoefficients (true);
     7   // 必选
     8   seg.setModelType (pcl::SACMODEL_PLANE);
     9   seg.setMethodType (pcl::SAC_RANSAC);
    10   seg.setMaxIterations (1000);
    11   seg.setDistanceThreshold (0.05);

    后我采用RANSAC拟合的方法,进行面片的分割

     1     std::vector<int> inliers;    //存储局内点集合的点的索引的向量
     2     
     3     //进行RANSAC平面拟合
     4     pcl::SampleConsensusModelPlane<PointT>::Ptr    model_p(new pcl::SampleConsensusModelPlane<PointT>(cloud));        //针对平面模型的对象
     5     pcl::RandomSampleConsensus<PointT> ransacP(model_p);
     6     ransacP.setDistanceThreshold(.1);        //与平面距离小于0.1的点作为局内点考虑
     7     ransacP.computeModel();                    //执行随机参数估计
     8     ransacP.getInliers(inliers);                //存储估计所得的局内点
     9     pcl::copyPointCloud<PointT>(*cloud, inliers, *cloud_in);    //复制估算模型的所有局内点到cloud_in中
    10     pcl::io::savePCDFile("./data/seg_RAN/RANSAC_building_1.pcd", *cloud_in);

    得到:

    之后我想迭代的进行面片拟合后分割出来,在索引的地方遇到了问题

    于是想出来一个比较笨的办法:

    1 for (int i = 0; i < cloud->points.size(); i++)
    2     {
    3         std::vector<int>::iterator iter = find(inliers.begin(), inliers.end(), i);
    4         if (iter == inliers.end())
    5         {
    6             cloud_out->points.push_back(cloud->points.at(i));
    7         }
    8     }

    等同于自己写了一个分割的方法。

    中间遇到的问题有:

    点云的索引、有序点云与无序点云的写入、智能指针未实例化问题、

    现在仍未搞明白PCL中的索引的使用方法。例如:PointIndices、 ExtractIndices 等

    如有了解的小伙伴希望告知、互帮互助、共同进步!

    2019-04-12  19:04:34

    想来生活无非是痛苦和美丽...
  • 相关阅读:
    LInux 安全测试 2
    LInux 安全测试
    又一款linux提权辅助工具
    shell 生成指定范围随机数与随机字符串 .
    腾讯新浪通过IP地址获取当前地理位置(省份)的接口
    建站指南:百度认为什么样的网站更有抓取和收录价值2012-06-20
    ngx_lua 金山项目 黄雀
    在页面中使用js
    多线程取读文件(别人的,有点晕,先放在这里有时间研究研究)
    factory工厂模式
  • 原文地址:https://www.cnblogs.com/billwong/p/10697927.html
Copyright © 2011-2022 走看看