PCL利用RANSAC自行拟合分割平面,
利用PCL中分割算法、
pcl::SACSegmentation<:pointxyz> seg;
,不利用法线参数,只根据模型参数得到的分割面片,与想象的面片差距很大,
1 pcl::ModelCoefficients::Ptr coefficients (newpcl::ModelCoefficients ());2 pcl::PointIndices::Ptr inliers (newpcl::PointIndices ());3 //创建分割对象
4 pcl::SACSegmentation<: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 inliers; //存储局内点集合的点的索引的向量2
3 //进行RANSAC平面拟合
4 pcl::SampleConsensusModelPlane::Ptr model_p(new pcl::SampleConsensusModelPlane(cloud)); //针对平面模型的对象
5 pcl::RandomSampleConsensusransacP(model_p);6 ransacP.setDistanceThreshold(.1); //与平面距离小于0.1的点作为局内点考虑
7 ransacP.computeModel