boost implementation of Boykov and Kolmogorov's maxflow algorithm doesn't support negative flows which makes it inappropriate for this conext.
More...
#include <pcl/segmentation/grabcut_segmentation.h>
boost implementation of Boykov and Kolmogorov's maxflow algorithm doesn't support negative flows which makes it inappropriate for this conext.
This implementation of Boykov and Kolmogorov's maxflow algorithm by Stephen Gould steph.nosp@m.en.g.nosp@m.ould@.nosp@m.anu..nosp@m.edu.a.nosp@m.u in DARWIN under BSD does the trick however solwer than original implementation.
Definition at line 61 of file grabcut_segmentation.h.
pcl::segmentation::grabcut::BoykovKolmogorov::BoykovKolmogorov |
( |
std::size_t |
max_nodes = 0 | ) |
|
construct a maxflow/mincut problem with estimated max_nodes
virtual pcl::segmentation::grabcut::BoykovKolmogorov::~BoykovKolmogorov |
( |
| ) |
|
|
inlinevirtual |
void pcl::segmentation::grabcut::BoykovKolmogorov::addConstant |
( |
double |
c | ) |
|
|
inline |
void pcl::segmentation::grabcut::BoykovKolmogorov::addEdge |
( |
int |
u, |
|
|
int |
v, |
|
|
double |
cap_uv, |
|
|
double |
cap_vu = 0.0 |
|
) |
| |
add edge from u to v and edge from v to u (requires cap_uv + cap_vu >= 0)
int pcl::segmentation::grabcut::BoykovKolmogorov::addNodes |
( |
std::size_t |
n = 1 | ) |
|
add nodes to the graph (returns the id of the first node added)
void pcl::segmentation::grabcut::BoykovKolmogorov::addSourceEdge |
( |
int |
u, |
|
|
double |
cap |
|
) |
| |
add edge from s to nodeId
void pcl::segmentation::grabcut::BoykovKolmogorov::addTargetEdge |
( |
int |
u, |
|
|
double |
cap |
|
) |
| |
add edge from nodeId to t
void pcl::segmentation::grabcut::BoykovKolmogorov::adoptOrphans |
( |
std::deque< int > & |
orphans | ) |
|
|
protected |
void pcl::segmentation::grabcut::BoykovKolmogorov::augmentPath |
( |
const std::pair< int, int > & |
path, |
|
|
std::deque< int > & |
orphans |
|
) |
| |
|
protected |
augment the path found by expandTrees; return orphaned subtrees
void pcl::segmentation::grabcut::BoykovKolmogorov::clear |
( |
| ) |
|
clear the graph and internal datastructures
void pcl::segmentation::grabcut::BoykovKolmogorov::clearActive |
( |
| ) |
|
|
protected |
std::pair<int, int> pcl::segmentation::grabcut::BoykovKolmogorov::expandTrees |
( |
| ) |
|
|
protected |
expand trees until a path is found (or no path (-1, -1))
double pcl::segmentation::grabcut::BoykovKolmogorov::getSourceEdgeCapacity |
( |
int |
u | ) |
const |
double pcl::segmentation::grabcut::BoykovKolmogorov::getTargetEdgeCapacity |
( |
int |
u | ) |
const |
void pcl::segmentation::grabcut::BoykovKolmogorov::initializeTrees |
( |
| ) |
|
|
protected |
initialize trees from source and target
bool pcl::segmentation::grabcut::BoykovKolmogorov::inSinkTree |
( |
int |
u | ) |
const |
|
inline |
bool pcl::segmentation::grabcut::BoykovKolmogorov::inSourceTree |
( |
int |
u | ) |
const |
|
inline |
bool pcl::segmentation::grabcut::BoykovKolmogorov::isActive |
( |
int |
u | ) |
const |
|
inlineprotected |
bool pcl::segmentation::grabcut::BoykovKolmogorov::isActiveSetEmpty |
( |
| ) |
const |
|
inlineprotected |
void pcl::segmentation::grabcut::BoykovKolmogorov::markActive |
( |
int |
u | ) |
|
|
protected |
void pcl::segmentation::grabcut::BoykovKolmogorov::markInactive |
( |
int |
u | ) |
|
|
protected |
size_t pcl::segmentation::grabcut::BoykovKolmogorov::numNodes |
( |
| ) |
const |
|
inline |
double pcl::segmentation::grabcut::BoykovKolmogorov::operator() |
( |
int |
u, |
|
|
int |
v |
|
) |
| const |
returns the residual capacity for an edge (use -1 for terminal (-1,-1) is the current flow
void pcl::segmentation::grabcut::BoykovKolmogorov::preAugmentPaths |
( |
| ) |
|
|
protected |
pre-augment s-u-t and s-u-v-t paths
void pcl::segmentation::grabcut::BoykovKolmogorov::reset |
( |
| ) |
|
reset all edge capacities to zero (but don't free the graph)
double pcl::segmentation::grabcut::BoykovKolmogorov::solve |
( |
| ) |
|
solve the max-flow problem and return the flow
std::vector<unsigned char> pcl::segmentation::grabcut::BoykovKolmogorov::cut_ |
|
protected |
double pcl::segmentation::grabcut::BoykovKolmogorov::flow_value_ |
|
protected |
std::vector<capacitated_edge> pcl::segmentation::grabcut::BoykovKolmogorov::nodes_ |
|
protected |
std::vector<double> pcl::segmentation::grabcut::BoykovKolmogorov::source_edges_ |
|
protected |
std::vector<double> pcl::segmentation::grabcut::BoykovKolmogorov::target_edges_ |
|
protected |
The documentation for this class was generated from the following file:
- /tmp/B.7abf3ea8-8609-4473-9347-5906fc56181c/BUILD/pcl-pcl-1.7.2/segmentation/include/pcl/segmentation/grabcut_segmentation.h