pcl::SupervoxelClustering< PointT > Class Template Reference
Module segmentation

Implements a supervoxel algorithm based on voxel structure, normals, and rgb values. More...

`#include <pcl/segmentation/supervoxel_clustering.h>`

Inheritance diagram for pcl::SupervoxelClustering< PointT >:

## Classes

class | VoxelData
| VoxelData is a structure used for storing data within a pcl::octree::OctreePointCloudAdjacencyContainer. More...

## Public Types

using | LeafContainerT = pcl::octree::OctreePointCloudAdjacencyContainer< PointT, VoxelData >
using | LeafVectorT = std::vector< LeafContainerT * >
using | PointCloudT = pcl::PointCloud< PointT >
using | NormalCloudT = pcl::PointCloud< Normal >
using | OctreeAdjacencyT = pcl::octree::OctreePointCloudAdjacency< PointT, LeafContainerT >
using | OctreeSearchT = pcl::octree::OctreePointCloudSearch< PointT >
using | KdTreeT = pcl::search::KdTree< PointT >
using | IndicesPtr = pcl::IndicesPtr
using | VoxelAdjacencyList = boost::adjacency_list< boost::setS, boost::setS, boost::undirectedS, std::uint32_t, float >
using | VoxelID = VoxelAdjacencyList::vertex_descriptor
using | EdgeID = VoxelAdjacencyList::edge_descriptor
Public Types inherited from pcl::PCLBase< PointT >
using | PointCloud = pcl::PointCloud< PointT >
using | PointCloudPtr = typename PointCloud::Ptr
using | PointCloudConstPtr = typename PointCloud::ConstPtr
using | PointIndicesPtr = PointIndices::Ptr
using | PointIndicesConstPtr = PointIndices::ConstPtr

## Public Member Functions

| SupervoxelClustering (float voxel_resolution, float seed_resolution)
| Constructor that sets default values for member variables. More...
| ~SupervoxelClustering ()
| This destructor destroys the cloud, normals and search method used for finding neighbors. More...
void | setVoxelResolution (float resolution)
| Set the resolution of the octree voxels. More...
float | getVoxelResolution () const
| Get the resolution of the octree voxels. More...
void | setSeedResolution (float seed_resolution)
| Set the resolution of the octree seed voxels. More...
float | getSeedResolution () const
| Get the resolution of the octree seed voxels. More...
void | setColorImportance (float val)
| Set the importance of color for supervoxels. More...
void | setSpatialImportance (float val)
| Set the importance of spatial distance for supervoxels. More...
void | setNormalImportance (float val)
| Set the importance of scalar normal product for supervoxels. More...
void | setUseSingleCameraTransform (bool val)
| Set whether or not to use the single camera transform. More...
virtual void | extract (std::map< std::uint32_t, typename Supervoxel< PointT >::Ptr > &supervoxel_clusters)
| This method launches the segmentation algorithm and returns the supervoxels that were obtained during the segmentation. More...
void | setInputCloud (const typename pcl::PointCloud< PointT >::ConstPtr &cloud) override
| This method sets the cloud to be supervoxelized. More...
virtual void | setNormalCloud (typename NormalCloudT::ConstPtr normal_cloud)
| This method sets the normals to be used for supervoxels (should be same size as input cloud) More...
virtual void | refineSupervoxels (int num_itr, std::map< std::uint32_t, typename Supervoxel< PointT >::Ptr > &supervoxel_clusters)
| This method refines the calculated supervoxels - may only be called after extract. More...
pcl::PointCloud< PointT >::Ptr | getVoxelCentroidCloud () const
| Returns a deep copy of the voxel centroid cloud. More...
pcl::PointCloud< PointXYZL >::Ptr | getLabeledCloud () const
| Returns labeled cloud Points that belong to the same supervoxel have the same label. More...
pcl::PointCloud< pcl::PointXYZL >::Ptr | getLabeledVoxelCloud () const
| Returns labeled voxelized cloud Points that belong to the same supervoxel have the same label. More...
void | getSupervoxelAdjacencyList (VoxelAdjacencyList &adjacency_list_arg) const
| Gets the adjacency list (Boost Graph library) which gives connections between supervoxels. More...
void | getSupervoxelAdjacency (std::multimap< std::uint32_t, std::uint32_t > &label_adjacency) const
| Get a multimap which gives supervoxel adjacency. More...
int | getMaxLabel () const
| Returns the current maximum (highest) label. More...
Public Member Functions inherited from pcl::PCLBase< PointT >
| PCLBase ()
| Empty constructor. More...
| PCLBase (const PCLBase &base)
| Copy constructor. More...
virtual | ~PCLBase ()=default
| Destructor. More...
virtual void | setInputCloud (const PointCloudConstPtr &cloud)
| Provide a pointer to the input dataset. More...
PointCloudConstPtr const | getInputCloud () const
| Get a pointer to the input point cloud dataset. More...
virtual void | setIndices (const IndicesPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
virtual void | setIndices (const IndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
virtual void | setIndices (const PointIndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
virtual void | setIndices (std::size_t row_start, std::size_t col_start, std::size_t nb_rows, std::size_t nb_cols)
| Set the indices for the points laying within an interest region of the point cloud. More...
IndicesPtr | getIndices ()
| Get a pointer to the vector of indices used. More...
IndicesConstPtr const | getIndices () const
| Get a pointer to the vector of indices used. More...
const PointT & | operator[] (std::size_t pos) const
| Override PointCloud operator[] to shorten code. More...

## Static Public Member Functions

static pcl::PointCloud< pcl::PointNormal >::Ptr | makeSupervoxelNormalCloud (std::map< std::uint32_t, typename Supervoxel< PointT >::Ptr > &supervoxel_clusters)
| Static helper function which returns a pointcloud of normals for the input supervoxels. More...

## Friends

class | SupervoxelHelper
void | boost::checked_delete (const typename pcl::SupervoxelClustering< PointT >::SupervoxelHelper *)

## Additional Inherited Members

Protected Member Functions inherited from pcl::PCLBase< PointT >
bool | initCompute ()
| This method should get called before starting the actual computation. More...
bool | deinitCompute ()
| This method should get called after finishing the actual computation. More...
Protected Attributes inherited from pcl::PCLBase< PointT >
PointCloudConstPtr | input_
| The input point cloud dataset. More...
IndicesPtr | indices_
| A pointer to the vector of point indices to use. More...
bool | use_indices_
| Set to true if point indices are used. More...
bool | fake_indices_
| If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud. More...

## Detailed Description

### template<typename PointT>
class pcl::SupervoxelClustering< PointT >

Implements a supervoxel algorithm based on voxel structure, normals, and rgb values.

Note
  Supervoxels are oversegmented volumetric patches (usually surfaces)
  Usually, color isn't needed (and can be detrimental)- spatial structure is mainly used
  - J. Papon, A. Abramov, M. Schoeler, F. Woergoetter Voxel Cloud Connectivity Segmentation - Supervoxels from PointClouds In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2013

Author
  Jeremie Papon (jpapo.nosp@m.n@gm.nosp@m.ail.c.nosp@m.om)

Definition at line 126 of file supervoxel_clustering.h.

## Member Typedef Documentation

## EdgeID

template<typename PointT >

using pcl::SupervoxelClustering< PointT >::EdgeID = VoxelAdjacencyList::edge_descriptor

Definition at line 188 of file supervoxel_clustering.h.

## IndicesPtr

template<typename PointT >

using pcl::SupervoxelClustering< PointT >::IndicesPtr = pcl::IndicesPtr

Definition at line 180 of file supervoxel_clustering.h.

## KdTreeT

template<typename PointT >

using pcl::SupervoxelClustering< PointT >::KdTreeT = pcl::search::KdTree<PointT>

Definition at line 179 of file supervoxel_clustering.h.

## LeafContainerT

template<typename PointT >

using pcl::SupervoxelClustering< PointT >::LeafContainerT = pcl::octree::OctreePointCloudAdjacencyContainer<PointT, VoxelData>

Definition at line 172 of file supervoxel_clustering.h.

## LeafVectorT

template<typename PointT >

using pcl::SupervoxelClustering< PointT >::LeafVectorT = std::vector<LeafContainerT *>

Definition at line 173 of file supervoxel_clustering.h.

## NormalCloudT

template<typename PointT >

using pcl::SupervoxelClustering< PointT >::NormalCloudT = pcl::PointCloud<Normal>

Definition at line 176 of file supervoxel_clustering.h.

## OctreeAdjacencyT

template<typename PointT >

using pcl::SupervoxelClustering< PointT >::OctreeAdjacencyT = pcl::octree::OctreePointCloudAdjacency<PointT, LeafContainerT>

Definition at line 177 of file supervoxel_clustering.h.

## OctreeSearchT

template<typename PointT >

using pcl::SupervoxelClustering< PointT >::OctreeSearchT = pcl::octree::OctreePointCloudSearch<PointT>

Definition at line 178 of file supervoxel_clustering.h.

## PointCloudT

template<typename PointT >

using pcl::SupervoxelClustering< PointT >::PointCloudT = pcl::PointCloud<PointT>

Definition at line 175 of file supervoxel_clustering.h.

## VoxelAdjacencyList

template<typename PointT >

using pcl::SupervoxelClustering< PointT >::VoxelAdjacencyList = boost::adjacency_list<boost::setS, boost::setS, boost::undirectedS, std::uint32_t, float>

Definition at line 186 of file supervoxel_clustering.h.

## VoxelID

template<typename PointT >

using pcl::SupervoxelClustering< PointT >::VoxelID = VoxelAdjacencyList::vertex_descriptor

Definition at line 187 of file supervoxel_clustering.h.

## Constructor & Destructor Documentation

## SupervoxelClustering()

template<typename PointT >

pcl::SupervoxelClustering< PointT >::SupervoxelClustering | ( | float | voxel_resolution,
|  | float | seed_resolution
| ) |  |

Constructor that sets default values for member variables.

Parameters

  [in] | voxel_resolution | The resolution (in meters) of voxels used
  [in] | seed_resolution | The average size (in meters) of resulting supervoxels

Definition at line 48 of file supervoxel_clustering.hpp.

## ~SupervoxelClustering()

template<typename PointT >

pcl::SupervoxelClustering< PointT >::~SupervoxelClustering

This destructor destroys the cloud, normals and search method used for finding neighbors.

In other words it frees memory.

Definition at line 63 of file supervoxel_clustering.hpp.

## Member Function Documentation

## extract()

template<typename PointT >

void pcl::SupervoxelClustering< PointT >::extract | ( | std::map< std::uint32_t, typename Supervoxel< PointT >::Ptr > & | supervoxel_clusters | ) |

virtual

This method launches the segmentation algorithm and returns the supervoxels that were obtained during the segmentation.

Parameters

  [out] | supervoxel_clusters | A map of labels to pointers to supervoxel structures

Definition at line 97 of file supervoxel_clustering.hpp.

## getLabeledCloud()

template<typename PointT >

pcl::PointCloud< pcl::PointXYZL >::Ptr pcl::SupervoxelClustering< PointT >::getLabeledCloud

Returns labeled cloud Points that belong to the same supervoxel have the same label.

Labels for segments start from 1, unlabled points have label 0

Definition at line 582 of file supervoxel_clustering.hpp.

References pcl::PointCloud< PointT >::begin(), pcl::copyPointCloud(), pcl::PointCloud< PointT >::end(), pcl::octree::OctreePointCloudAdjacencyContainer< PointInT, DataT >::getData(), and pcl::SupervoxelClustering< PointT >::VoxelData::owner_.

## getLabeledVoxelCloud()

template<typename PointT >

pcl::PointCloud< pcl::PointXYZL >::Ptr pcl::SupervoxelClustering< PointT >::getLabeledVoxelCloud

Returns labeled voxelized cloud Points that belong to the same supervoxel have the same label.

Labels for segments start from 1, unlabled points have label 0

Definition at line 560 of file supervoxel_clustering.hpp.

References pcl::PointCloud< PointT >::begin(), pcl::copyPointCloud(), and pcl::PointCloud< PointT >::end().

## getMaxLabel()

template<typename PointT >

int pcl::SupervoxelClustering< PointT >::getMaxLabel

Returns the current maximum (highest) label.

Definition at line 683 of file supervoxel_clustering.hpp.

## getSeedResolution()

template<typename PointT >

float pcl::SupervoxelClustering< PointT >::getSeedResolution

Get the resolution of the octree seed voxels.

Definition at line 639 of file supervoxel_clustering.hpp.

## getSupervoxelAdjacency()

template<typename PointT >

void pcl::SupervoxelClustering< PointT >::getSupervoxelAdjacency | ( | std::multimap< std::uint32_t, std::uint32_t > & | label_adjacency | ) | const

Get a multimap which gives supervoxel adjacency.

Parameters

  [out] | label_adjacency | Multi-Map which maps a supervoxel label to all adjacent supervoxel labels

Definition at line 534 of file supervoxel_clustering.hpp.

## getSupervoxelAdjacencyList()

template<typename PointT >

void pcl::SupervoxelClustering< PointT >::getSupervoxelAdjacencyList | ( | VoxelAdjacencyList & | adjacency_list_arg | ) | const

Gets the adjacency list (Boost Graph library) which gives connections between supervoxels.

Parameters

  [out] | adjacency_list_arg | BGL graph where supervoxel labels are vertices, edges are touching relationships

Definition at line 483 of file supervoxel_clustering.hpp.

## getVoxelCentroidCloud()

template<typename PointT >

pcl::PointCloud< PointT >::Ptr pcl::SupervoxelClustering< PointT >::getVoxelCentroidCloud

Returns a deep copy of the voxel centroid cloud.

Definition at line 551 of file supervoxel_clustering.hpp.

References pcl::copyPointCloud().

## getVoxelResolution()

template<typename PointT >

float pcl::SupervoxelClustering< PointT >::getVoxelResolution

Get the resolution of the octree voxels.

Definition at line 624 of file supervoxel_clustering.hpp.

## makeSupervoxelNormalCloud()

template<typename PointT >

pcl::PointCloud< pcl::PointNormal >::Ptr pcl::SupervoxelClustering< PointT >::makeSupervoxelNormalCloud | ( | std::map< std::uint32_t, typename Supervoxel< PointT >::Ptr > & | supervoxel_clusters | ) |

static

Static helper function which returns a pointcloud of normals for the input supervoxels.

Parameters

  [in] | supervoxel_clusters | Supervoxel cluster map coming from this class

Returns
  Cloud of PointNormals of the supervoxels

Definition at line 609 of file supervoxel_clustering.hpp.

References pcl::PointCloud< PointT >::begin(), and pcl::PointCloud< PointT >::resize().

## refineSupervoxels()

template<typename PointT >

void pcl::SupervoxelClustering< PointT >::refineSupervoxels | ( | int | num_itr,
|  | std::map< std::uint32_t, typename Supervoxel< PointT >::Ptr > & | supervoxel_clusters
| ) |  |

virtual

This method refines the calculated supervoxels - may only be called after extract.

Parameters

  [in] | num_itr | The number of iterations of refinement to be done (2 or 3 is usually sufficient)
  [out] | supervoxel_clusters | The resulting refined supervoxels

Definition at line 149 of file supervoxel_clustering.hpp.

## setColorImportance()

template<typename PointT >

void pcl::SupervoxelClustering< PointT >::setColorImportance | ( | float | val | ) |

Set the importance of color for supervoxels.

Definition at line 654 of file supervoxel_clustering.hpp.

## setInputCloud()

template<typename PointT >

void pcl::SupervoxelClustering< PointT >::setInputCloud | ( | const typename pcl::PointCloud< PointT >::ConstPtr & | cloud | ) |

override

This method sets the cloud to be supervoxelized.

Parameters

  [in] | cloud | The cloud to be supervoxelize

Definition at line 70 of file supervoxel_clustering.hpp.

References pcl::PointCloud< PointT >::empty().

## setNormalCloud()

template<typename PointT >

void pcl::SupervoxelClustering< PointT >::setNormalCloud | ( | typename NormalCloudT::ConstPtr | normal_cloud | ) |

virtual

This method sets the normals to be used for supervoxels (should be same size as input cloud)

Parameters

  [in] | normal_cloud | The input normals

Definition at line 84 of file supervoxel_clustering.hpp.

## setNormalImportance()

template<typename PointT >

void pcl::SupervoxelClustering< PointT >::setNormalImportance | ( | float | val | ) |

Set the importance of scalar normal product for supervoxels.

Definition at line 668 of file supervoxel_clustering.hpp.

## setSeedResolution()

template<typename PointT >

void pcl::SupervoxelClustering< PointT >::setSeedResolution | ( | float | seed_resolution | ) |

Set the resolution of the octree seed voxels.

Definition at line 646 of file supervoxel_clustering.hpp.

## setSpatialImportance()

template<typename PointT >

void pcl::SupervoxelClustering< PointT >::setSpatialImportance | ( | float | val | ) |

Set the importance of spatial distance for supervoxels.

Definition at line 661 of file supervoxel_clustering.hpp.

## setUseSingleCameraTransform()

template<typename PointT >

void pcl::SupervoxelClustering< PointT >::setUseSingleCameraTransform | ( | bool | val | ) |

Set whether or not to use the single camera transform.

Note
  By default it will be used for organized clouds, but not for unorganized - this parameter will override that behavior The single camera transform scales bin size so that it increases exponentially with depth (z dimension). This is done to account for the decreasing point density found with depth when using an RGB-D camera. Without the transform, beyond a certain depth adjacency of voxels breaks down unless the voxel size is set to a large value. Using the transform allows preserving detail up close, while allowing adjacency at distance. The specific transform used here is: x /= z; y /= z; z = ln(z); This transform is applied when calculating the octree bins in OctreePointCloudAdjacency

Definition at line 675 of file supervoxel_clustering.hpp.

## setVoxelResolution()

template<typename PointT >

void pcl::SupervoxelClustering< PointT >::setVoxelResolution | ( | float | resolution | ) |

Set the resolution of the octree voxels.

Definition at line 631 of file supervoxel_clustering.hpp.

## Friends And Related Function Documentation

## boost::checked_delete

template<typename PointT >

void boost::checked_delete | ( | const typename pcl::SupervoxelClustering< PointT >::SupervoxelHelper * |  | ) |

friend

## SupervoxelHelper

template<typename PointT >

friend class SupervoxelHelper

friend

Definition at line 130 of file supervoxel_clustering.h.

The documentation for this class was generated from the following files:

- pcl/segmentation/supervoxel_clustering.h
- pcl/segmentation/impl/supervoxel_clustering.hpp