Point Cloud Library (PCL) 1.15.0
Loading...
Searching...
No Matches
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

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

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, std::size_t > &color_to_column_map)

Static Public Member Functions

template<typename T>
static std::size_t insertInBimap (boost::bimap< std::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< std::size_t, VertexDescriptorL_vertex_bimap
boost::bimap< std::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>
using pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >::Color = typename boost::property_traits<VertexColorMap>::value_type

Definition at line 70 of file random_walker.hpp.

◆ EdgeDescriptor

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

Definition at line 73 of file random_walker.hpp.

◆ EdgeIterator

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

Definition at line 75 of file random_walker.hpp.

◆ GraphTraits

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

Definition at line 72 of file random_walker.hpp.

◆ Matrix

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

Definition at line 81 of file random_walker.hpp.

◆ OutEdgeIterator

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

Definition at line 76 of file random_walker.hpp.

◆ SparseMatrix

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

Definition at line 80 of file random_walker.hpp.

◆ Vector

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

Definition at line 82 of file random_walker.hpp.

◆ VertexDegreeMap

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

Definition at line 79 of file random_walker.hpp.

◆ VertexDescriptor

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

Definition at line 74 of file random_walker.hpp.

◆ VertexIndexMap

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

Definition at line 78 of file random_walker.hpp.

◆ VertexIterator

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

Definition at line 77 of file random_walker.hpp.

◆ Weight

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

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.

References color_map_, degree_map_, degree_storage_, g_, index_map_, and weight_map_.

Member Function Documentation

◆ assignColors()

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

Definition at line 209 of file random_walker.hpp.

References B_color_bimap, color_map_, L_vertex_bimap, and X.

Referenced by solveLinearSystem().

◆ buildLinearSystem()

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

Definition at line 116 of file random_walker.hpp.

References B, B_color_bimap, color_map_, colors_, degree_map_, g_, insertInBimap(), L, L_vertex_bimap, seeds_, and weight_map_.

Referenced by segment().

◆ computeVertexDegrees()

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

Definition at line 103 of file random_walker.hpp.

References degree_map_, g_, and weight_map_.

Referenced by segment().

◆ getPotentials()

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

Definition at line 224 of file random_walker.hpp.

References B_color_bimap, color_map_, colors_, g_, insertInBimap(), L_vertex_bimap, seeds_, and X.

◆ insertInBimap()

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

Definition at line 245 of file random_walker.hpp.

Referenced by buildLinearSystem(), and getPotentials().

◆ 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

Definition at line 185 of file random_walker.hpp.

References assignColors(), B, L, and X.

Referenced by segment().

Member Data Documentation

◆ B

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

Definition at line 267 of file random_walker.hpp.

Referenced by buildLinearSystem(), and solveLinearSystem().

◆ B_color_bimap

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

Definition at line 273 of file random_walker.hpp.

Referenced by assignColors(), buildLinearSystem(), and getPotentials().

◆ color_map_

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

Definition at line 258 of file random_walker.hpp.

Referenced by assignColors(), buildLinearSystem(), getPotentials(), and RandomWalker().

◆ colors_

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

Definition at line 262 of file random_walker.hpp.

Referenced by buildLinearSystem(), and getPotentials().

◆ degree_map_

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

Definition at line 265 of file random_walker.hpp.

Referenced by buildLinearSystem(), computeVertexDegrees(), and RandomWalker().

◆ degree_storage_

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

Definition at line 264 of file random_walker.hpp.

Referenced by RandomWalker().

◆ 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 259 of file random_walker.hpp.

Referenced by RandomWalker().

◆ L

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

Definition at line 266 of file random_walker.hpp.

Referenced by buildLinearSystem(), and solveLinearSystem().

◆ L_vertex_bimap

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

Definition at line 271 of file random_walker.hpp.

Referenced by assignColors(), buildLinearSystem(), and getPotentials().

◆ seeds_

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

Definition at line 261 of file random_walker.hpp.

Referenced by buildLinearSystem(), and getPotentials().

◆ weight_map_

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

Definition at line 257 of file random_walker.hpp.

Referenced by buildLinearSystem(), computeVertexDegrees(), and RandomWalker().

◆ X

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

Definition at line 268 of file random_walker.hpp.

Referenced by assignColors(), getPotentials(), and solveLinearSystem().


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