34 #include <pcl/console/parse.h>
35 #include <pcl/io/pcd_io.h>
38 #include <pcl/filters/passthrough.h>
39 #include <pcl/segmentation/supervoxel_clustering.h>
42 #include <pcl/segmentation/lccp_segmentation.h>
46 class PointCloudSegmenter;
55 using PointT = pcl::PointXYZRGBA;
56 using SuperVoxelAdjacencyList = pcl::LCCPSegmentation<PointT>::SupervoxelAdjacencyList;
59 pcl::PointCloud<pcl::PointXYZL>::Ptr sv_labeled_cloud;
60 pcl::PointCloud<pcl::PointXYZL>::Ptr lccp_labeled_cloud;
62 pcl::PointCloud<PointT>::Ptr input_cloud_ptr;
63 pcl::PointCloud<pcl::Normal>::Ptr input_normals_ptr;
70 float voxel_resolution;
71 float seed_resolution;
72 float color_importance;
73 float spatial_importance;
74 float normal_importance;
75 bool use_single_cam_transform;
76 bool use_supervoxel_refinement;
79 float concavity_tolerance_threshold;
80 float smoothness_threshold;
81 uint32_t min_segment_size;
82 bool use_extended_convexity;
83 bool use_sanity_criterion;
88 bool SegmentPointCloud();
90 std::map<uint32_t, pcl::Supervoxel<PointT>::Ptr> supervoxel_clusters;
95 pcl::PointCloud<pcl::PointXYZL>::Ptr&
101 return supervoxel_clusters.size();
109 float concavityThres,
110 float smoothnessThes,
111 uint32_t minSegSize);