#include <pushrelabel_non_linear_grid_3D.h>
[NOHEADER] | |
typedef char | direction_type |
Direction used to name an edge by the pair (node,direction). | |
const direction_type | X_MIN_DIR = 1 |
Direction used to name an edge by the pair (node,direction). | |
const direction_type | X_MAX_DIR = 2 |
Direction used to name an edge by the pair (node,direction). | |
const direction_type | Y_MIN_DIR = 3 |
Direction used to name an edge by the pair (node,direction). | |
const direction_type | Y_MAX_DIR = 4 |
Direction used to name an edge by the pair (node,direction). | |
const direction_type | Z_MIN_x_min_DIR = 5 |
Direction used to name an edge by the pair (node,direction). | |
const direction_type | Z_MIN_x_max_DIR = 6 |
Direction used to name an edge by the pair (node,direction). | |
const direction_type | Z_MIN_y_min_DIR = 7 |
Direction used to name an edge by the pair (node,direction). | |
const direction_type | Z_MIN_y_max_DIR = 8 |
Direction used to name an edge by the pair (node,direction). | |
const direction_type | Z_MAX_x_min_DIR = 9 |
Direction used to name an edge by the pair (node,direction). | |
const direction_type | Z_MAX_x_max_DIR = 10 |
Direction used to name an edge by the pair (node,direction). | |
const direction_type | Z_MAX_y_min_DIR = 11 |
Direction used to name an edge by the pair (node,direction). | |
const direction_type | Z_MAX_y_max_DIR = 12 |
Direction used to name an edge by the pair (node,direction). | |
[NOHEADER] | |
typedef char | location_type |
Position to name a node of coordinate (x;y). | |
const location_type | CENTER_NODE = 100 |
Position to name a node of coordinate (x;y). | |
const location_type | Z_MAX_x_min_NODE = 101 |
Position to name a node of coordinate (x;y). | |
const location_type | Z_MAX_x_max_NODE = 102 |
Position to name a node of coordinate (x;y). | |
const location_type | Z_MAX_y_min_NODE = 103 |
Position to name a node of coordinate (x;y). | |
const location_type | Z_MAX_y_max_NODE = 104 |
Position to name a node of coordinate (x;y). | |
Public Types | |
typedef Real | real_type |
Useful typedef. | |
typedef Array_3D< bool >::size_type | size_type |
Useful typedef. | |
typedef Geometry::Vec3< unsigned int > | position_type |
Useful typedef. | |
typedef unsigned int | index_type |
Useful typedef. | |
typedef unsigned int | label_type |
Useful typedef. | |
Public Methods | |
PushRelabel_non_linear_grid_3D (const Array_3D< real_type > &cost_edge_cap, const Array_3D< bool > &dom, const Array_2D< real_type > &x_derivative_edge_cap, const Array_2D< real_type > &y_derivative_edge_cap, const real_type eps=1e-3) | |
Constructor. | |
real_type | max_flow () |
Compute the maximum flow on the graph. | |
void | min_cut (Array_2D< size_type > *const cut) const |
Compute the minimum cut once the maximum flow is known. | |
void | to_index (const node_type &p, size_type *const i) const |
Compute an index for all the 3 coordinates to spare space. | |
void | from_index (node_type *const p, const size_type i) const |
Reverse transformation of to_index(). | |
void | neighbors (const node_type &node, node_type *const result, size_type *const n_res) const |
Gives all the neighbors. | |
void | adjacent_nodes (const node_type &node, node_type *const result, size_type *const n_res) const |
Gives the adjacent nodes that are reachable through a non saturated edge. | |
real_type | edge_capacity (const node_type &from, const direction_type dir) const |
Gives the max capacity of an edge named by (node,direction). | |
real_type | edge_flow (const node_type &from, const direction_type dir) const |
Gives the flow in an edge named by (node,direction). | |
real_type | edge_residual (const node_type &from, const direction_type dir) const |
Gives the residual capacity of an edge named by (node,direction). | |
real_type | node_excess (const node_type &node) const |
Gives excess water in a node. | |
void | add_flow (const node_type &from, const direction_type dir, const real_type flow) |
Adds flow to an edge. | |
direction_type | direction (const node_type &from, const node_type &to) const |
Gives the direction of an edge named by (source,target). | |
label_type | relabel (const node_type &node) |
relabel step of the algorithm. | |
void | global_relabel () |
Global update of the labels. | |
bool | discharge (const node_type &node) |
discharge step of the algorithm. | |
void | add_active_node (const node_type &node) |
Adds an active node. | |
void | get_next_node (node_type *const node, bool *const no_more_node) |
Gets the next node to handle. | |
bool | is_active (const node_type &node) const |
Algorithm defined test. | |
bool | is_admissible (const node_type &from, const node_type &to) const |
Algorithm defined test. | |
const label_type & | label (const node_type &node) const |
Manage the labels. | |
label_type & | label (const node_type &node) |
Manage the labels. | |
Public Attributes | |
bool | DBG_LOGGING |
const real_type | epsilon |
Threshold to test zero equality. | |
size_type | nb_nodes |
Number of nodes in the graph. | |
size_type | nb_relabel |
Number of consecutive relabel steps. | |
Array_3D< real_type > | cost_edge_capacity |
Max capacity of the cost edges. | |
const Array_3D< bool > & | domain |
Array_2D< size_type > | min_bound |
Bottom boundary the optimization domain. | |
Array_2D< size_type > | max_bound |
Top boundary of the optimization domain. | |
std::deque< index_type > | active_node_index |
List of the active nodes. | |
const node_type | source |
Source node. | |
const node_type | target |
Think node. | |
Array_2D< real_type > | x_major_derivative_edge_capacity |
Max capacity of the derivative penalty edges. | |
Array_2D< real_type > | x_minor_derivative_edge_capacity |
Max capacity of the derivative penalty edges. | |
Array_2D< real_type > | y_major_derivative_edge_capacity |
Max capacity of the derivative penalty edges. | |
Array_2D< real_type > | y_minor_derivative_edge_capacity |
Max capacity of the derivative penalty edges. | |
Array_3D< index_type > | label_CENTER |
Node labels. | |
Array_3D< index_type > | label_Z_MAX_x_min |
Node labels. | |
Array_3D< index_type > | label_Z_MAX_x_max |
Node labels. | |
Array_3D< index_type > | label_Z_MAX_y_min |
Node labels. | |
Array_3D< index_type > | label_Z_MAX_y_max |
Node labels. | |
Array_3D< real_type > | cost_edge_Z_MAX_x_min_flow |
Flow in the cost edges. | |
Array_3D< real_type > | cost_edge_Z_MAX_x_max_flow |
Flow in the cost edges. | |
Array_3D< real_type > | cost_edge_Z_MAX_y_min_flow |
Flow in the cost edges. | |
Array_3D< real_type > | cost_edge_Z_MAX_y_max_flow |
Flow in the cost edges. | |
Array_3D< real_type > | cost_edge_Z_MAX_MAX_x_min_flow |
Flow in the cost edges. | |
Array_3D< real_type > | cost_edge_Z_MAX_MAX_x_max_flow |
Flow in the cost edges. | |
Array_3D< real_type > | cost_edge_Z_MAX_MAX_y_min_flow |
Flow in the cost edges. | |
Array_3D< real_type > | cost_edge_Z_MAX_MAX_y_max_flow |
Flow in the cost edges. | |
Array_3D< real_type > | x_major_derivative_edge_flow |
Flow in the penalty edges. | |
Array_3D< real_type > | y_major_derivative_edge_flow |
Flow in the penalty edges. | |
Array_3D< real_type > | x_minor_derivative_edge_flow |
Flow in the penalty edges. | |
Array_3D< real_type > | y_minor_derivative_edge_flow |
Flow in the penalty edges. | |
const size_type | x_size |
Max size of the optimization domain. | |
const size_type | y_size |
Max size of the optimization domain. | |
const size_type | z_size |
Max size of the optimization domain. |
|
Direction used to name an edge by the pair (node,direction).
|
|
Useful typedef.
|
|
Useful typedef.
|
|
Position to name a node of coordinate (x;y).
|
|
Useful typedef.
|
|
Useful typedef.
|
|
Useful typedef.
|
|
Constructor.
You have to provide the consistency value for each voxel in |
|
Adds an active node.
|
|
Adds flow to an edge. No domain check. |
|
Gives the adjacent nodes that are reachable through a non saturated edge. No domain check. |
|
Gives the direction of an edge named by (source,target).
|
|
discharge step of the algorithm. true if the operation have been done. |
|
Gives the max capacity of an edge named by (node,direction). Pas de vérification pour les bords. |
|
Gives the flow in an edge named by (node,direction).
|
|
Gives the residual capacity of an edge named by (node,direction).
|
|
Reverse transformation of to_index().
|
|
Gets the next node to handle.
|
|
Global update of the labels.
|
|
Algorithm defined test.
|
|
Algorithm defined test.
|
|
Manage the labels.
|
|
Manage the labels.
|
|
Compute the maximum flow on the graph.
|
|
Compute the minimum cut once the maximum flow is known.
|
|
Gives all the neighbors. No domain check. |
|
Gives excess water in a node.
|
|
relabel step of the algorithm.
|
|
Compute an index for all the 3 coordinates to spare space.
|
|
List of the active nodes.
|
|
Position to name a node of coordinate (x;y).
|
|
Max capacity of the cost edges.
|
|
Flow in the cost edges. Sign refers to the flow direction. |
|
Flow in the cost edges. Sign refers to the flow direction. |
|
Flow in the cost edges. Sign refers to the flow direction. |
|
Flow in the cost edges. Sign refers to the flow direction. |
|
Flow in the cost edges. Sign refers to the flow direction. |
|
Flow in the cost edges. Sign refers to the flow direction. |
|
Flow in the cost edges. Sign refers to the flow direction. |
|
Flow in the cost edges. Sign refers to the flow direction. |
|
|
|
Definition of the optimization domain. Graph is only defined on this domain. |
|
Threshold to test zero equality.
|
|
Node labels.
|
|
Node labels.
|
|
Node labels.
|
|
Node labels.
|
|
Node labels.
|
|
Top boundary of the optimization domain.
|
|
Bottom boundary the optimization domain.
|
|
Number of nodes in the graph.
|
|
Number of consecutive relabel steps.
|
|
Source node.
|
|
Think node.
|
|
Max capacity of the derivative penalty edges.
|
|
Flow in the penalty edges. Sign refers to the flow direction. |
|
Direction used to name an edge by the pair (node,direction).
|
|
Direction used to name an edge by the pair (node,direction).
|
|
Max capacity of the derivative penalty edges.
|
|
Flow in the penalty edges. Sign refers to the flow direction. |
|
Max size of the optimization domain.
|
|
Max capacity of the derivative penalty edges.
|
|
Flow in the penalty edges. Sign refers to the flow direction. |
|
Direction used to name an edge by the pair (node,direction).
|
|
Direction used to name an edge by the pair (node,direction).
|
|
Max capacity of the derivative penalty edges.
|
|
Flow in the penalty edges. Sign refers to the flow direction. |
|
Max size of the optimization domain.
|
|
Direction used to name an edge by the pair (node,direction).
|
|
Position to name a node of coordinate (x;y).
|
|
Direction used to name an edge by the pair (node,direction).
|
|
Position to name a node of coordinate (x;y).
|
|
Direction used to name an edge by the pair (node,direction).
|
|
Position to name a node of coordinate (x;y).
|
|
Direction used to name an edge by the pair (node,direction).
|
|
Position to name a node of coordinate (x;y).
|
|
Direction used to name an edge by the pair (node,direction).
|
|
Direction used to name an edge by the pair (node,direction).
|
|
Direction used to name an edge by the pair (node,direction).
|
|
Direction used to name an edge by the pair (node,direction).
|
|
Max size of the optimization domain.
|