c/c++语言开发共享PCL利用RANSAC自行拟合分割平面

利用PCL中分割算法、 pcl::SACSegmentation<pcl::PointXYZ> seg; ,不利用法线参数,只根据模型参数得到的分割面片,与想象的面片差距很大, 后我采用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);

得到:

PCL利用RANSAC自行拟合分割平面

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

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

 

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

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/603991.html

(0)
上一篇 2021年5月12日
下一篇 2021年5月12日

精彩推荐