Point Cloud Library (PCL)  1.9.1
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes
pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap > Class Template Reference

Multilabel graph segmentation using random walks. More...

#include <pcl/segmentation/impl/random_walker.hpp>

Public Types

typedef boost::property_traits< VertexColorMap >::value_type Color
 
typedef boost::property_traits< EdgeWeightMap >::value_type Weight
 
typedef boost::graph_traits< Graph > GraphTraits
 
typedef GraphTraits::edge_descriptor EdgeDescriptor
 
typedef GraphTraits::vertex_descriptor VertexDescriptor
 
typedef GraphTraits::edge_iterator EdgeIterator
 
typedef GraphTraits::out_edge_iterator OutEdgeIterator
 
typedef GraphTraits::vertex_iterator VertexIterator
 
typedef boost::property_map< Graph, boost::vertex_index_t >::type VertexIndexMap
 
typedef boost::iterator_property_map< typename std::vector< Weight >::iterator, VertexIndexMapVertexDegreeMap
 
typedef Eigen::SparseMatrix< WeightSparseMatrix
 
typedef Eigen::Matrix< Weight, Eigen::Dynamic, Eigen::Dynamic > Matrix
 
typedef Eigen::Matrix< Weight, Eigen::Dynamic, 1 > Vector
 

Public Member Functions

 RandomWalker (Graph &g, EdgeWeightMap weights, VertexColorMap colors)
 
bool segment ()
 
void computeVertexDegrees ()
 
void buildLinearSystem ()
 
bool solveLinearSystem ()
 
void assignColors ()
 
void getPotentials (Matrix &potentials, std::map< Color, size_t > &color_to_column_map)
 

Static Public Member Functions

template<typename T >
static size_t insertInBimap (boost::bimap< size_t, T > &bimap, T value)
 

Public Attributes

Graph & g_
 
EdgeWeightMap weight_map_
 
VertexColorMap color_map_
 
VertexIndexMap index_map_
 
std::vector< VertexDescriptorseeds_
 
std::set< Colorcolors_
 
std::vector< Weightdegree_storage_
 
VertexDegreeMap degree_map_
 
SparseMatrix L
 
SparseMatrix B
 
Matrix X
 
boost::bimap< size_t, VertexDescriptorL_vertex_bimap
 
boost::bimap< size_t, ColorB_color_bimap
 

Detailed Description

template<class Graph, class EdgeWeightMap, class VertexColorMap>
class pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >

Multilabel graph segmentation using random walks.

This is an implementation of the algorithm described in "Random Walks for Image Segmentation" by Leo Grady.

See the documentation of the randomWalker() function for details.

Author
Sergey Alexandrov

Definition at line 65 of file random_walker.hpp.

Member Typedef Documentation

◆ Color

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef boost::property_traits<VertexColorMap>::value_type pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::Color

Definition at line 70 of file random_walker.hpp.

◆ EdgeDescriptor

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef GraphTraits::edge_descriptor pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::EdgeDescriptor

Definition at line 73 of file random_walker.hpp.

◆ EdgeIterator

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef GraphTraits::edge_iterator pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::EdgeIterator

Definition at line 75 of file random_walker.hpp.

◆ GraphTraits

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef boost::graph_traits<Graph> pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::GraphTraits

Definition at line 72 of file random_walker.hpp.

◆ Matrix

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef Eigen::Matrix<Weight, Eigen::Dynamic, Eigen::Dynamic> pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::Matrix

Definition at line 81 of file random_walker.hpp.

◆ OutEdgeIterator

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef GraphTraits::out_edge_iterator pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::OutEdgeIterator

Definition at line 76 of file random_walker.hpp.

◆ SparseMatrix

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef Eigen::SparseMatrix<Weight> pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::SparseMatrix

Definition at line 80 of file random_walker.hpp.

◆ Vector

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef Eigen::Matrix<Weight, Eigen::Dynamic, 1> pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::Vector

Definition at line 82 of file random_walker.hpp.

◆ VertexDegreeMap

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef boost::iterator_property_map<typename std::vector<Weight>::iterator, VertexIndexMap> pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::VertexDegreeMap

Definition at line 79 of file random_walker.hpp.

◆ VertexDescriptor

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef GraphTraits::vertex_descriptor pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::VertexDescriptor

Definition at line 74 of file random_walker.hpp.

◆ VertexIndexMap

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef boost::property_map<Graph, boost::vertex_index_t>::type pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::VertexIndexMap

Definition at line 78 of file random_walker.hpp.

◆ VertexIterator

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef GraphTraits::vertex_iterator pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::VertexIterator

Definition at line 77 of file random_walker.hpp.

◆ Weight

template<class Graph , class EdgeWeightMap , class VertexColorMap >
typedef boost::property_traits<EdgeWeightMap>::value_type pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::Weight

Definition at line 71 of file random_walker.hpp.

Constructor & Destructor Documentation

◆ RandomWalker()

template<class Graph , class EdgeWeightMap , class VertexColorMap >
pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::RandomWalker ( Graph &  g,
EdgeWeightMap  weights,
VertexColorMap  colors 
)
inline

Definition at line 84 of file random_walker.hpp.

Member Function Documentation

◆ assignColors()

template<class Graph , class EdgeWeightMap , class VertexColorMap >
void pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::assignColors ( )
inline

◆ buildLinearSystem()

template<class Graph , class EdgeWeightMap , class VertexColorMap >
void pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::buildLinearSystem ( )
inline

◆ computeVertexDegrees()

template<class Graph , class EdgeWeightMap , class VertexColorMap >
void pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::computeVertexDegrees ( )
inline

◆ getPotentials()

template<class Graph , class EdgeWeightMap , class VertexColorMap >
void pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::getPotentials ( Matrix potentials,
std::map< Color, size_t > &  color_to_column_map 
)
inline

◆ insertInBimap()

template<class Graph , class EdgeWeightMap , class VertexColorMap >
template<typename T >
static size_t pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::insertInBimap ( boost::bimap< size_t, T > &  bimap,
value 
)
inlinestatic

◆ segment()

template<class Graph , class EdgeWeightMap , class VertexColorMap >
bool pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::segment ( )
inline

◆ solveLinearSystem()

template<class Graph , class EdgeWeightMap , class VertexColorMap >
bool pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::solveLinearSystem ( )
inline

Member Data Documentation

◆ B

template<class Graph , class EdgeWeightMap , class VertexColorMap >
SparseMatrix pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::B

◆ B_color_bimap

template<class Graph , class EdgeWeightMap , class VertexColorMap >
boost::bimap<size_t, Color> pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::B_color_bimap

◆ color_map_

template<class Graph , class EdgeWeightMap , class VertexColorMap >
VertexColorMap pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::color_map_

◆ colors_

template<class Graph , class EdgeWeightMap , class VertexColorMap >
std::set<Color> pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::colors_

◆ degree_map_

template<class Graph , class EdgeWeightMap , class VertexColorMap >
VertexDegreeMap pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::degree_map_

◆ degree_storage_

template<class Graph , class EdgeWeightMap , class VertexColorMap >
std::vector<Weight> pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::degree_storage_

Definition at line 267 of file random_walker.hpp.

◆ g_

template<class Graph , class EdgeWeightMap , class VertexColorMap >
Graph& pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::g_

◆ index_map_

template<class Graph , class EdgeWeightMap , class VertexColorMap >
VertexIndexMap pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::index_map_

Definition at line 262 of file random_walker.hpp.

◆ L

template<class Graph , class EdgeWeightMap , class VertexColorMap >
SparseMatrix pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::L

◆ L_vertex_bimap

template<class Graph , class EdgeWeightMap , class VertexColorMap >
boost::bimap<size_t, VertexDescriptor> pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::L_vertex_bimap

◆ seeds_

template<class Graph , class EdgeWeightMap , class VertexColorMap >
std::vector<VertexDescriptor> pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::seeds_

◆ weight_map_

template<class Graph , class EdgeWeightMap , class VertexColorMap >
EdgeWeightMap pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::weight_map_

◆ X

template<class Graph , class EdgeWeightMap , class VertexColorMap >
Matrix pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::X

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