在点云库中的超体素聚类过程中保留自定义字段 (PCL)
Keep custom fields during supervoxel clustering process in Point Cloud Library (PCL)
我是 PCL(点云库)的新手,我试图在我的自定义数据集上实施 supervoxel_clustering (this link)。我的点云数据集有这些字段: X Y Z R G
B L1 L2
其中 R、G、B 是 integer
0-255
和 L1 和 L2 之间的值
integer
个标签。
应用 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 树并从
supervoxel result to the original points,但我仍然需要阅读我的
pcl 中包含所有自定义字段的原始点。
任何人都可以帮助我吗?
谢谢,
布鲁斯
我了解到您已经定义了具有 L1 和 L2 字段的点类型。
点从 supervoxel_clustering 中以相同的顺序出现,getLabeledCloud() 方法 returns 所有原始点。最简单的解决方案是使用 L1、L2 和 L3 字段定义点云并将原始点云复制到该类型,然后迭代点云并从 labeled_cloud.
复制标签
类似于
pcl::PointCloud<your_custom_point_type_with_L1_L2_L3> combined_cloud;
pcl::copyPointCloud( original_cloud, combined_cloud );
for ( int i = 0; i < labeled_cloud->point.size(); i++ ){
combined_cloud[i].label3 = labeled_cloud[i].label;
}
我是 PCL(点云库)的新手,我试图在我的自定义数据集上实施 supervoxel_clustering (this link)。我的点云数据集有这些字段: X Y Z R G
B L1 L2
其中 R、G、B 是 integer
0-255
和 L1 和 L2 之间的值
integer
个标签。
应用 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 树并从
supervoxel result to the original points,但我仍然需要阅读我的
pcl 中包含所有自定义字段的原始点。
任何人都可以帮助我吗?
谢谢, 布鲁斯
我了解到您已经定义了具有 L1 和 L2 字段的点类型。
点从 supervoxel_clustering 中以相同的顺序出现,getLabeledCloud() 方法 returns 所有原始点。最简单的解决方案是使用 L1、L2 和 L3 字段定义点云并将原始点云复制到该类型,然后迭代点云并从 labeled_cloud.
复制标签类似于
pcl::PointCloud<your_custom_point_type_with_L1_L2_L3> combined_cloud;
pcl::copyPointCloud( original_cloud, combined_cloud );
for ( int i = 0; i < labeled_cloud->point.size(); i++ ){
combined_cloud[i].label3 = labeled_cloud[i].label;
}