2 #ifndef OPENGM_MINSTCUTIBFS_HXX
3 #define OPENGM_MINSTCUTIBFS_HXX
13 template<
class NType,
class VType>
24 MinSTCutIBFS(
size_t numberOfNodes,
size_t numberOfEdges);
25 void addEdge(node_type,node_type,ValueType);
31 size_t numberOfNodes_;
32 size_t numberOfEdges_;
33 static const NType S = 0;
34 static const NType T = 1;
41 template<
class NType,
class VType>
48 template<
class NType,
class VType>
50 numberOfNodes_ = numberOfNodes;
51 numberOfEdges_ = numberOfEdges;
54 graph_->initSize((
int)(numberOfNodes_-2),(
int)(numberOfEdges_ - 2*(numberOfNodes_-2)));
60 template<
class NType,
class VType>
62 assert(n1 < numberOfNodes_);
63 assert(n2 < numberOfNodes_);
67 graph_->addNode( (
int)(n2-2), (
int)(cost*10000), 0);
70 graph_->addNode( (
int)(n1-2), 0, (
int)(cost*10000));
73 graph_->addEdge( (
int)(n1-2), (
int)(n2-2), (
int)(cost*10000), 0 );
78 template<
class NType,
class VType>
82 graph_->computeMaxFlow();
83 segmentation.resize(numberOfNodes_);
84 for(
size_t i=2; i<numberOfNodes_; ++i) {
86 if(graph_->isNodeOnSrcSide(i-2) )
87 segmentation[i]=
false;
97 #endif // #ifndef OPENGM_MINSTCUTIBFS_HXX
IBFS solver for the min st-cut framework GraphCut.
void addEdge(node_type, node_type, ValueType)
void calculateCut(std::vector< bool > &)