我是PCL(点云库)的新手,我试图在自定义数据集上实现supervoxel_clustering(this link)。我的点云数据集具有以下字段:X Y Z R G B L1 L2
其中R,G,B是0-255
和L1和L2之间integer
值是 integer
标签。在点云库(PCL)的超体素聚类过程中保留自定义字段
应用supervoxel后,我保存点云与其标签:
/// save the labeled cloud
PointLCloudT::Ptr labeled_cloud = super.getLabeledCloud();
pcl::io::savePCDFileASCII("/path/labeled_cloud.pcd", *labeled_cloud);
我的问题是:如何将我的标签和颜色从原来的点在这个过程中 云转移。我尝试定义自己的点类型,如:X Y Z R G B L1 L2 L3
,但点类型的 教程,这不是微不足道的。 一个虚拟解决方案我想到的是,使用KD-tree和转移标签从 supervoxel结果原来的点,但我仍然需要与PCL所有自定义字段来阅读我的 原始分。
任何人都可以帮助我吗?
感谢, 布鲁斯
谢谢您的回答。我正在考虑这个解决方案,它很容易但不安全。因为如果在supervoxle过程中,原始点中的一个点将被删除,或者会存在NaN值,或者出于任何其他原因,订单改变,那么仅仅复制标签就会弄得乱七八糟。 – Bruce
但它过滤nan值吗?我认为它没有。如果你看看在你的榜样的milk_cartoon_all_small_clorox.pcd点云好像还楠(XYZ是南,色值存在)点,但在getLabeledCloud()方法返回完全相同的分额和那些确实有XYZ数据是比赛。 – Rooscannon
添加 的std :: COUT << cloud->点[0] << “\ n” 个<< cloud->点[1] << “\ n” 个; 在示例代码,它会打印出 (男,南,南 - 18,23,9,0) (南,南,南 - 18,21,11,0) 您是否执行删除点? – Rooscannon