public class GraphCut extends Object
Constructor and Description |
---|
GraphCut(int numNodes,
int numEdges)
Initialises the graph cut implementation and allocates the memory needed
for the given number of nodes and edges.
|
Modifier and Type | Method and Description |
---|---|
float |
computeMaximumFlow(boolean reuseTrees,
List<Integer> changedNodes)
Performs the actual max-flow/min-cut computation.
|
int |
getNumEdges()
Gets the number of edges in this graph.
|
int |
getNumNodes()
Gets the number of nodes in this graph.
|
Terminal |
getTerminal(int node)
Get the segmentation, i.e., the terminal node that is connected to the
specified node.
|
void |
markNode(int node)
Mark a node as being changed.
|
void |
setEdgeWeight(int node1,
int node2,
float weight)
Set the edge weight of an undirected edge between two nodes.
|
void |
setEdgeWeight(int node1,
int node2,
float weight1to2,
float weight2to1)
Set the edge weight of a pair of directed edges between two nodes.
|
void |
setTerminalWeights(int node,
float source,
float sink)
Set the affinity for one node to belong to the foreground (i.e., source)
or background (i.e., sink).
|
public GraphCut(int numNodes, int numEdges)
numNodes
- The number of nodes that should be created.numEdges
- The number of edges that you can add. A directed edge and its
counterpart (i.e., the directed edge in the other
direction) count as one edge.public void setTerminalWeights(int node, float source, float sink)
node
- The number of the node.source
- The affinity of this node to the foreground (i.e., source)sink
- The affinity of this node to the background (i.e., sink)public void setEdgeWeight(int node1, int node2, float weight)
node1
- The first node.node2
- The second node.weight
- The weight (i.e., the cost) of the connecting edge.public void setEdgeWeight(int node1, int node2, float weight1to2, float weight2to1)
node1
- The first node.node2
- The second node.weight1to2
- The weight (i.e., the cost) of the directed edge from
node1 to node2.weight2to1
- The weight (i.e., the cost) of the directed edge from
node2 to node1.public float computeMaximumFlow(boolean reuseTrees, List<Integer> changedNodes)
reuseTrees
- reuse trees of a previos callchangedNodes
- list of nodes that potentially changed their
segmentation compared to a previous call, can be set
to nullpublic Terminal getTerminal(int node)
node
- the node to checkpublic int getNumNodes()
public int getNumEdges()
public void markNode(int node)
node
- The node that changed.Copyright © 2015–2021 Fiji. All rights reserved.