WilliamChan 发表于 2017-2-21 09:17:54

超体聚类+LCCP分割后点云中心提取

大家好! 最近利用超体聚类+LCCP进行点云分割,效果如下图。
希望对分割后的各个模块进行中心提取,苦于没有想法。
想用Compute3DCentroid()进行计算,但是貌似分割后找不到相应的点云,来放入括号内。
希望前辈指点,为晚辈指明方向,十分感谢!

mypcl 发表于 2017-2-21 10:19:38

你分割后的每个聚类只保存了原始点云中的索引下标,来标示吧。
你可以用这些下标,通过这个类pcl::ExtractIndices<PointType> eifilter (true); // Initializing with true will allow us to extract the removed indices
eifilter.setInputCloud (cloud_in);
eifilter.setIndices (indices_in);
eifilter.filter (*cloud_out);
// The resulting cloud_out contains all points of cloud_in that are indexed by indices_in
indices_rem = eifilter.getRemovedIndices ();
// The indices_rem array indexes all points of cloud_in that are not indexed by indices_in
eifilter.setNegative (true);
eifilter.filter (*indices_out);
// Alternatively: the indices_out array is identical to indices_rem
eifilter.setNegative (false);
eifilter.setUserFilterValue (1337.0);
eifilter.filterDirectly (cloud_in);
// This will directly modify cloud_in instead of creating a copy of the cloud
// It will overwrite all fields of the filtered points by the user value: 1337

mypcl 发表于 2017-2-21 10:26:32

SupervoxelClustering 和 LCCPSegmentation联合分割的效果怎么样,适合那些类型的应用场景。。
一直没测试过,如果你测试了,可以分享下,谢谢!

WilliamChan 发表于 2017-2-21 15:24:07

我初步学习PCL,SupervoxelClustering+LCCPSegmentation联合分割也是刚调试出来。自己进行了一些测试,感觉简单的场景效果还可以,但是杂乱的场景还需要改进。我看了大牛Thomas的论文,里面说:联合分割后,进行B-spline和refinement可以达到理想的效果。但小弟才疏学浅,仍未实现,还望前辈指点。以下是效果图和论文里的图片。论文的题目是:Segmentation of Depth Data in Piece-wise
Smooth Parametric Surfaces

WilliamChan 发表于 2017-2-21 15:25:12

mypcl 发表于 2017-2-21 10:26 static/image/common/back.gif
SupervoxelClustering 和 LCCPSegmentation联合分割的效果怎么样,适合那些类型的应用场景。。
一直没测试 ...

由于评论回复不能直接付图,我把回答写于此条回复下面。前辈查收

WilliamChan 发表于 2017-2-21 16:07:42

mypcl 发表于 2017-2-21 10:19 static/image/common/back.gif
你分割后的每个聚类只保存了原始点云中的索引下标,来标示吧。
你可以用这些下标,通过这个类 ...

十分感谢指点!但是不知道这段代码中的indices来自哪里。LCCP分割后,哪些参数是这个indices。以前用欧式聚类,可以ec.extract(indices); 但是lccp就不会了,请前辈指点迷津。

mypcl 发表于 2017-2-21 17:12:51

WilliamChan 发表于 2017-2-21 16:07 static/image/common/back.gif
十分感谢指点!但是不知道这段代码中的indices来自哪里。LCCP分割后,哪些参数是这个indices。以前用欧式 ...

我也不是什么前辈,用pcl比较多而已。
我没用过LCCP,估计就没有现成的输出为indexs的形式了。
不过刚才看了下api的文档,感觉这个函数是不是就可以输出分割好的点云呢
void pcl::LCCPSegmentation< PointT >::relabelCloud        (        pcl::PointCloud< pcl::PointXYZL > &         labeled_cloud_arg        )。
另外你可视化带label的点云数据怎么来的。得到这些点云后,估计你需要手动根据label的信息来构造
Compute3DCentroid的输入了。
祝好运

WilliamChan 发表于 2017-2-21 17:55:08

mypcl 发表于 2017-2-21 17:12 static/image/common/back.gif
我也不是什么前辈,用pcl比较多而已。
我没用过LCCP,估计就没有现成的输出为indexs的形式了。
不过刚才 ...

谢谢!
void pcl::LCCPSegmentation< PointT >::relabelCloud      (      pcl::PointCloud< pcl::PointXYZL > &         labeled_cloud_arg      )函数确实是输出分割好的点云。
我的可视化点云就是里面的labeled_cloud_arg。但用这个点云去Compute3DCentroid得到的是整个点云中心,而不是分割后的各个颜色不一的点云中心。仍在研究中,谢谢你提供的信息!

起名字好烦 发表于 2017-4-24 22:08:51

小白求实现代码

nainai 发表于 2017-11-15 00:46:53

WilliamChan 发表于 2017-2-21 15:24 static/image/common/back.gif
我初步学习PCL,SupervoxelClustering+LCCPSegmentation联合分割也是刚调试出来。自己进行了一些测试,感觉 ...

你好可以请问一个问题么方便加一下微信么   y521572
页: [1] 2
查看完整版本: 超体聚类+LCCP分割后点云中心提取