where \(C_E(v0,v1)\) is the edge cost of assigning a different label to \(v0\) and \(v1\), and \(C_V(f_v)\) is the vertex cost of assigning the label \(f\) to the vertex \(v\).
a model of ReadablePropertyMap with boost::graph_traits<InputGraph>::edge_descriptor as key and double as value
VertexLabelCostMap
a model of ReadablePropertyMap with boost::graph_traits<InputGraph>::vertex_descriptor as key and std::vector<double> as value
VertexLabelMap
a model of ReadWritePropertyMap with boost::graph_traits<InputGraph>::vertex_descriptor as key and std::size_t as value
NamedParameters
a sequence of named parameters
Parameters
input_graph
the input graph.
edge_cost_map
a property map providing the weight of each edge.
vertex_label_map
a property map providing the label of each vertex. This map will be updated by the algorithm with the regularized version of the partition.
vertex_label_cost_map
a property map providing, for each vertex, an std::vector containing the cost of this vertex to belong to each label. Each std::vector should have the same size n (which is the number of labels), each label being indexed from 0 to n-1. For example, get(vertex_label_cost_map, vd)[label_idx] returns the cost of vertex vd to belong to the label label_idx.
np
an optional sequence of Named Parameters among the ones listed below
Optional Named Parameters
a property map associating to each vertex of input_graph a unique index between 0 and num_vertices(input_graph) - 1
Type: a class model of ReadablePropertyMap with boost::graph_traits<InputGraph>::vertex_descriptor as key type and std::size_t as value type
Default: an automatically indexed internal map
Extra: If this parameter is not passed, internal machinery will create and initialize a face index property map, either using the internal property map if it exists or using an external map. The latter might result in - slightly - worsened performance in case of non-constant complexity for index access.
a tag used to select which implementation of the alpha expansion should be used. Available implementation tags are:
The MaxFlow implementation is provided by the Triangulated Surface Mesh Segmentation Reference under GPL license. The header <CGAL/boost/graph/Alpha_expansion_MaxFlow_tag.h> must be included if users want to use this implementation.
a property map associating to each vertex of tm a unique index between 0 and num_vertices(tm) - 1
Type: a class model of ReadablePropertyMap with boost::graph_traits<TriangleMesh>::vertex_descriptor as key type and std::size_t as value type
Default: an automatically indexed internal map
Extra: If this parameter is not passed, internal machinery will create and initialize a face index property map, either using the internal property map if it exists or using an external map. The latter might result in - slightly - worsened performance in case of non-constant complexity for index access.
a parameter used in to pass options to the METIS mesh partitioner
Type: an array of size METIS_NOPTIONS with value type idx_t (an integer type defined by METIS)
Default: an array of size METIS_NOPTIONS with value type idx_t, initialized using the function METIS_SetDefaultOptions()
Extra: The many options of METIS are not described here. Instead, users should refer to the documentation of METIS directly.
a property map that contains (after the function has been run) the ID of the subpart for each vertex of tm
Type: a class model of ReadWritePropertyMap with boost::graph_traits<TriangleMesh>::vertex_descriptor as key type and int as value type
Default: unused
a property map that contains (after the function has been run) the ID of the subpart for each face of tm
Type: a class model of ReadWritePropertyMap with boost::graph_traits<TriangleMesh>::face_descriptor as key type and int as value type
Default: unused
Precondition
tm is a pure triangular surface mesh: there are no edges without at least one incident face
a property map associating to each vertex of tm a unique index between 0 and num_vertices(tm) - 1
Type: a class model of ReadablePropertyMap with boost::graph_traits<TriangleMesh>::vertex_descriptor as key type and std::size_t as value type
Default: an automatically indexed internal map
Extra: If this parameter is not passed, internal machinery will create and initialize a face index property map, either using the internal property map if it exists or using an external map. The latter might result in - slightly - worsened performance in case of non-constant complexity for index access.
a parameter used in to pass options to the METIS mesh partitioner
Type: an array of size METIS_NOPTIONS with value type idx_t (an integer type defined by METIS)
Default: an array of size METIS_NOPTIONS with value type idx_t, initialized using the function METIS_SetDefaultOptions()
Extra: The many options of METIS are not described here. Instead, users should refer to the documentation of METIS directly.
a property map that contains (after the function has been run) the ID of the subpart for each vertex of tm
Type: a class model of ReadWritePropertyMap with boost::graph_traits<TriangleMesh>::vertex_descriptor as key type and int as value type
Default: unused
a property map that contains (after the function has been run) the ID of the subpart for each face of tm
Type: a class model of ReadWritePropertyMap with boost::graph_traits<TriangleMesh>::face_descriptor as key type and int as value type
Default: unused
Precondition
tm is a pure triangular surface mesh: there are no edges without at least one incident face