|
| | CPCSegmentation () |
| | ~CPCSegmentation () override |
| void | segment () |
| | Merge supervoxels using cuts through local convexities.
|
| void | setCutting (const std::uint32_t max_cuts=20, const std::uint32_t cutting_min_segments=0, const float cutting_min_score=0.16, const bool locally_constrained=true, const bool directed_cutting=true, const bool clean_cutting=false) |
| | Determines if we want to use cutting planes.
|
| void | setRANSACIterations (const std::uint32_t ransac_iterations) |
| | Set the number of iterations for the weighted RANSAC step (best cut estimations).
|
| | LCCPSegmentation () |
| virtual | ~LCCPSegmentation () |
| void | reset () |
| | Reset internal memory.
|
| void | setInputSupervoxels (const std::map< std::uint32_t, typename pcl::Supervoxel< PointT >::Ptr > &supervoxel_clusters_arg, const std::multimap< std::uint32_t, std::uint32_t > &label_adjacency_arg) |
| | Set the supervoxel clusters as well as the adjacency graph for the segmentation.Those parameters are generated by using the SupervoxelClustering class.
|
| void | segment () |
| | Merge supervoxels using local convexity.
|
| void | relabelCloud (pcl::PointCloud< pcl::PointXYZL > &labeled_cloud_arg) |
| | Relabels cloud with supervoxel labels with the computed segment labels.
|
| void | getSegmentToSupervoxelMap (std::map< std::uint32_t, std::set< std::uint32_t > > &segment_supervoxel_map_arg) const |
| | Get map<SegmentID, std::set<SuperVoxel IDs> >.
|
| void | getSupervoxelToSegmentMap (std::map< std::uint32_t, std::uint32_t > &supervoxel_segment_map_arg) const |
| | Get map<Supervoxel_ID, Segment_ID>.
|
| void | getSegmentAdjacencyMap (std::map< std::uint32_t, std::set< std::uint32_t > > &segment_adjacency_map_arg) |
| | Get map <SegmentID, std::set<Neighboring SegmentIDs> >.
|
| float | getConcavityToleranceThreshold () const |
| | Get normal threshold.
|
| void | getSVAdjacencyList (SupervoxelAdjacencyList &adjacency_list_arg) const |
| | Get the supervoxel adjacency graph with classified edges (boost::adjacency_list).
|
| void | setConcavityToleranceThreshold (float concavity_tolerance_threshold_arg) |
| | Set normal threshold.
|
| void | setSmoothnessCheck (bool use_smoothness_check_arg, float voxel_res_arg, float seed_res_arg, float smoothness_threshold_arg=0.1) |
| | Determines if a smoothness check is done during segmentation, trying to invalidate edges of non-smooth connected edges (steps).
|
| void | setSanityCheck (const bool use_sanity_criterion_arg) |
| | Determines if we want to use the sanity criterion to invalidate singular connected patches.
|
| void | setKFactor (const std::uint32_t k_factor_arg) |
| | Set the value used for k convexity.
|
| void | setMinSegmentSize (const std::uint32_t min_segment_size_arg) |
| | Set the value min_segment_size_ used in mergeSmallSegments.
|
|
| using | SupervoxelAdjacencyList = boost::adjacency_list<boost::setS, boost::setS, boost::undirectedS, std::uint32_t, EdgeProperties> |
| using | VertexIterator = typename boost::graph_traits<SupervoxelAdjacencyList>::vertex_iterator |
| using | AdjacencyIterator = typename boost::graph_traits<SupervoxelAdjacencyList>::adjacency_iterator |
| using | VertexID = typename boost::graph_traits<SupervoxelAdjacencyList>::vertex_descriptor |
| using | EdgeIterator = typename boost::graph_traits<SupervoxelAdjacencyList>::edge_iterator |
| using | OutEdgeIterator = typename boost::graph_traits<SupervoxelAdjacencyList>::out_edge_iterator |
| using | EdgeID = typename boost::graph_traits<SupervoxelAdjacencyList>::edge_descriptor |
| void | mergeSmallSegments () |
| | Segments smaller than min_segment_size_ are merged to the label of largest neighbor.
|
| void | computeSegmentAdjacency () |
| | Compute the adjacency of the segments.
|
| void | prepareSegmentation (const std::map< std::uint32_t, typename pcl::Supervoxel< PointT >::Ptr > &supervoxel_clusters_arg, const std::multimap< std::uint32_t, std::uint32_t > &label_adjacency_arg) |
| | Is called within setInputSupervoxels mainly to reserve required memory.
|
| void | doGrouping () |
| | Perform depth search on the graph and recursively group all supervoxels with convex connections.
|
| void | recursiveSegmentGrowing (const VertexID &queryPointID, const unsigned int group_label) |
| | Assigns neighbors of the query point to the same group as the query point.
|
| void | calculateConvexConnections (SupervoxelAdjacencyList &adjacency_list_arg) |
| | Calculates convexity of edges and saves this to the adjacency graph.
|
| void | applyKconvexity (const unsigned int k_arg) |
| | Connections are only convex if this is true for at least k_arg common neighbors of the two patches.
|
| bool | connIsConvex (const std::uint32_t source_label_arg, const std::uint32_t target_label_arg, float &normal_angle) |
| | Returns true if the connection between source and target is convex.
|
| float | concavity_tolerance_threshold_ {10} |
| | *** Parameters *** ///
|
| bool | grouping_data_valid_ {false} |
| | Marks if valid grouping data (sv_adjacency_list_, sv_label_to_seg_label_map_, processed_) is available.
|
| bool | supervoxels_set_ {false} |
| | Marks if supervoxels have been set by calling setInputSupervoxels.
|
| bool | use_smoothness_check_ {false} |
| | Determines if the smoothness check is used during segmentation.
|
| float | smoothness_threshold_ {0.1} |
| | Two supervoxels are unsmooth if their plane-to-plane distance DIST > (expected_distance + smoothness_threshold_*voxel_resolution_).
|
| bool | use_sanity_check_ {false} |
| | Determines if we use the sanity check which tries to find and invalidate singular connected patches.
|
| float | seed_resolution_ {0.0f} |
| | Seed resolution of the supervoxels (used only for smoothness check).
|
| float | voxel_resolution_ {0.0f} |
| | Voxel resolution used to build the supervoxels (used only for smoothness check).
|
| std::uint32_t | k_factor_ {0} |
| | Factor used for k-convexity.
|
| std::uint32_t | min_segment_size_ {0} |
| | Minimum segment size.
|
| std::map< std::uint32_t, bool > | processed_ |
| | Stores which supervoxel labels were already visited during recursive grouping.
|
| SupervoxelAdjacencyList | sv_adjacency_list_ |
| | Adjacency graph with the supervoxel labels as nodes and edges between adjacent supervoxels.
|
| std::map< std::uint32_t, typename pcl::Supervoxel< PointT >::Ptr > | sv_label_to_supervoxel_map_ |
| | map from the supervoxel labels to the supervoxel objects
|
| std::map< std::uint32_t, std::uint32_t > | sv_label_to_seg_label_map_ |
| | Storing relation between original SuperVoxel Labels and new segmantion labels.
|
| std::map< std::uint32_t, std::set< std::uint32_t > > | seg_label_to_sv_list_map_ |
| | map Segment Label to a set of Supervoxel Labels
|
| std::map< std::uint32_t, std::set< std::uint32_t > > | seg_label_to_neighbor_set_map_ |
| | map < SegmentID, std::set< Neighboring segment labels> >
|
template<typename PointT>
class pcl::CPCSegmentation< PointT >
A segmentation algorithm partitioning a supervoxel graph.
It uses planar cuts induced by local concavities for the recursive segmentation. Cuts are estimated using locally constrained directed RANSAC.
- Note
- If you use this in a scientific work please cite the following paper: M. Schoeler, J. Papon, F. Woergoetter Constrained Planar Cuts - Object Partitioning for Point Clouds In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2015 Inherits most of its functionality from LCCPSegmentation
- Author
- Markus Schoeler (mscho.nosp@m.eler.nosp@m.@web..nosp@m.de)
Definition at line 66 of file cpc_segmentation.h.