diff --git a/BGL/doc/BGL/BGL.txt b/BGL/doc/BGL/BGL.txt index e404294a878..230b2155f7e 100644 --- a/BGL/doc/BGL/BGL.txt +++ b/BGL/doc/BGL/BGL.txt @@ -659,17 +659,16 @@ as shown in \ref BGL_polyhedron_3/polyhedron_partition.cpp "this example". An optimal partition from a set of labels can be computed through a graph cut approach called Alpha Expansion \cgalCite{boykov2001fastapproximate}. \cgal provides -`CGAL::alpha_expansion_graphcut()` which, or a graph \f$(V,E)\f$, this -function seeks for the partioning `f` that minimizes the following -energy: +`CGAL::alpha_expansion_graphcut()` which, for a graph \f$(V,E)\f$, +computes the partition `f` that minimizes the following cost function: \f[ - \mathrm{E}(f) = \sum_{\{v0,v1\} \in E} W(v0,v1) + \sum_{v \in V} C(f_v) + \mathrm{C}(f) = \sum_{\{v0,v1\} \in E} C_E(v0,v1) + \sum_{v \in V} C_V(f_v) \f] -where \f$W(v0,v1)\f$ is the weight associated to the edge -\f$\{v0,v1\}\f$ and \f$C(f_v)\f$ is the cost of assigning the vertex -\f$v\f$ to the labeling \f$f\f$. +where \f$C_E(v0,v1)\f$ is the edge cost of assigning a different label +to \f$v0\f$ and \f$v1\f$, and \f$C_V(f_v)\f$ is the vertex cost of +assigning the label \f$f\f$ to the vertex \f$v\f$. Three different implementations are provided and can be selected by using one of the following tags: diff --git a/BGL/include/CGAL/boost/graph/alpha_expansion_graphcut.h b/BGL/include/CGAL/boost/graph/alpha_expansion_graphcut.h index 801bd7b7d8c..e18048fe254 100644 --- a/BGL/include/CGAL/boost/graph/alpha_expansion_graphcut.h +++ b/BGL/include/CGAL/boost/graph/alpha_expansion_graphcut.h @@ -84,18 +84,18 @@ struct Alpha_expansion_old_API_wrapper_graph }; - typedef CGAL::Pointer_property_map::const_type Edge_weight_map; + typedef CGAL::Pointer_property_map::const_type Edge_cost_map; const std::vector >& edges; - const std::vector& edge_weights; + const std::vector& edge_costs; const std::vector >& cost_matrix; std::vector& labels; Alpha_expansion_old_API_wrapper_graph (const std::vector >& edges, - const std::vector& edge_weights, + const std::vector& edge_costs, const std::vector >& cost_matrix, std::vector& labels) - : edges (edges), edge_weights (edge_weights), cost_matrix (cost_matrix), labels (labels) + : edges (edges), edge_costs (edge_costs), cost_matrix (cost_matrix), labels (labels) { } friend counting_range vertices (const Alpha_expansion_old_API_wrapper_graph& graph) @@ -121,7 +121,7 @@ struct Alpha_expansion_old_API_wrapper_graph Vertex_label_map vertex_label_map() { return CGAL::make_property_map(labels); } Vertex_label_cost_map vertex_label_cost_map() const { return Vertex_label_cost_map(&cost_matrix); } - Edge_weight_map edge_weight_map() const { return CGAL::make_property_map(edge_weights); } + Edge_cost_map edge_cost_map() const { return CGAL::make_property_map(edge_costs); } }; //////////////////////////////////////////////////////////////////////////////////////// @@ -452,20 +452,20 @@ public: regularizes a partition of a graph into `n` labels using the Alpha Expansion algorithm \cgalCite{Boykov2001FastApproximate}. - For a graph \f$(V,E)\f$, this function seeks for the partioning `f` - that minimizes the following energy: + For a graph \f$(V,E)\f$, this function computes a partition `f` + that minimizes the following cost function: \f[ - \mathrm{E}(f) = \sum_{\{v0,v1\} \in E} W(v0,v1) + \sum_{v \in V} C(f_v) + \mathrm{C}(f) = \sum_{\{v0,v1\} \in E} C_E(v0,v1) + \sum_{v \in V} C_V(f_v) \f] - where \f$W(v0,v1)\f$ is the weight associated to the edge - \f$\{v0,v1\}\f$ and \f$C(f_v)\f$ is the cost of assigning the - vertex \f$v\f$ to the labeling \f$f\f$. + where \f$C_E(v0,v1)\f$ is the edge cost of assigning a different + label to \f$v0\f$ and \f$v1\f$, and \f$C_V(f_v)\f$ is the vertex + cost of assigning the label \f$f\f$ to the vertex \f$v\f$. \tparam InputGraph a model of `VertexAndEdgeListGraph` - \tparam EdgeWeightMap a model of `ReadablePropertyMap` with + \tparam EdgeCostMap a model of `ReadablePropertyMap` with `boost::graph_traits::%edge_descriptor` as key and `double` as value @@ -481,12 +481,12 @@ public: \param input_graph the input graph. - \param edge_weight_map a property map providing the weight of each + \param edge_cost_map a property map providing the weight of each edge. \param 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 partitioning. + regularized version of the partition. \param vertex_label_cost_map a property map providing, for each vertex, an `std::vector` containing the cost of this vertex to @@ -519,12 +519,12 @@ public: */ template double alpha_expansion_graphcut (const InputGraph& input_graph, - EdgeWeightMap edge_weight_map, + EdgeCostMap edge_cost_map, VertexLabelCostMap vertex_label_cost_map, VertexLabelMap vertex_label_map, const NamedParameters& np) @@ -603,7 +603,7 @@ double alpha_expansion_graphcut (const InputGraph& input_graph, std::size_t idx1 = get (vertex_index_map, vd1); std::size_t idx2 = get (vertex_index_map, vd2); - double weight = get (edge_weight_map, ed); + double weight = get (edge_cost_map, ed); Vertex_descriptor v1 = inserted_vertices[idx1], v2 = inserted_vertices[idx2]; @@ -668,28 +668,28 @@ double alpha_expansion_graphcut (const InputGraph& input_graph, /// \cond SKIP_IN_MANUAL // variant with default NP template double alpha_expansion_graphcut (const InputGraph& input_graph, - EdgeWeightMap edge_weight_map, + EdgeCostMap edge_cost_map, VertexLabelCostMap vertex_label_cost_map, VertexLabelMap vertex_label_map) { - return alpha_expansion_graphcut (input_graph, edge_weight_map, + return alpha_expansion_graphcut (input_graph, edge_cost_map, vertex_label_cost_map, vertex_label_map, CGAL::parameters::all_default()); } // Old API inline double alpha_expansion_graphcut (const std::vector >& edges, - const std::vector& edge_weights, + const std::vector& edge_costs, const std::vector >& cost_matrix, std::vector& labels) { - internal::Alpha_expansion_old_API_wrapper_graph graph (edges, edge_weights, cost_matrix, labels); + internal::Alpha_expansion_old_API_wrapper_graph graph (edges, edge_costs, cost_matrix, labels); return alpha_expansion_graphcut(graph, - graph.edge_weight_map(), + graph.edge_cost_map(), graph.vertex_label_cost_map(), graph.vertex_label_map(), CGAL::parameters::vertex_index_map (graph.vertex_index_map())); @@ -697,15 +697,15 @@ inline double alpha_expansion_graphcut (const std::vector double alpha_expansion_graphcut (const std::vector >& edges, - const std::vector& edge_weights, + const std::vector& edge_costs, const std::vector >& cost_matrix, std::vector& labels, const AlphaExpansionImplementationTag&) { - internal::Alpha_expansion_old_API_wrapper_graph graph (edges, edge_weights, cost_matrix, labels); + internal::Alpha_expansion_old_API_wrapper_graph graph (edges, edge_costs, cost_matrix, labels); return alpha_expansion_graphcut(graph, - graph.edge_weight_map(), + graph.edge_cost_map(), graph.vertex_label_cost_map(), graph.vertex_label_map(), CGAL::parameters::vertex_index_map (graph.vertex_index_map()).