[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]

details EdgeWeightNodeFeatures< MERGE_GRAPH, EDGE_INDICATOR_MAP, EDGE_SIZE_MAP, NODE_FEATURE_MAP, NODE_SIZE_MAP, MIN_WEIGHT_MAP, NODE_LABEL_MAP > Class Template Reference VIGRA

This Cluster Operator is a MONSTER. It can really do a lot. More...

#include <vigra/hierarchical_clustering.hxx>

Public Member Functions

Edge contractionEdge ()
 get the edge which should be contracted next
 
WeightType contractionWeight ()
 get the edge weight of the edge which should be contracted next
 
 EdgeWeightNodeFeatures (MergeGraph &mergeGraph, EDGE_INDICATOR_MAP edgeIndicatorMap, EDGE_SIZE_MAP edgeSizeMap, NODE_FEATURE_MAP nodeFeatureMap, NODE_SIZE_MAP nodeSizeMap, MIN_WEIGHT_MAP minWeightEdgeMap, NODE_LABEL_MAP nodeLabelMap, const ValueType beta, const metrics::MetricType metricType, const ValueType wardness=static_cast< ValueType >(1.0), const ValueType gamma=static_cast< ValueType >(10000000.0), const ValueType sameLabelMultiplier=static_cast< ValueType >(0.8))
 construct cluster operator
 
void eraseEdge (const Edge &edge)
 will be called via callbacks from mergegraph
 
void mergeEdges (const Edge &a, const Edge &b)
 will be called via callbacks from mergegraph
 
MergeGraph & mergeGraph ()
 get a reference to the merge
 
void mergeNodes (const Node &a, const Node &b)
 will be called via callbacks from mergegraph
 

Detailed Description

template<class MERGE_GRAPH, class EDGE_INDICATOR_MAP, class EDGE_SIZE_MAP, class NODE_FEATURE_MAP, class NODE_SIZE_MAP, class MIN_WEIGHT_MAP, class NODE_LABEL_MAP>
class vigra::cluster_operators::EdgeWeightNodeFeatures< MERGE_GRAPH, EDGE_INDICATOR_MAP, EDGE_SIZE_MAP, NODE_FEATURE_MAP, NODE_SIZE_MAP, MIN_WEIGHT_MAP, NODE_LABEL_MAP >

This Cluster Operator is a MONSTER. It can really do a lot.

Each edge has a single scalar weight w_e. Each node has a feature vector f_n. (all f_n's have the same length). Edges and nodes have a length / size

The total edge weight is computed via a complicated formula

The main idea is the following. Use a mixture between the edge weights w_e, and node based edge weights which are computed via a metric which measures the 'difference' between the u/v feature vectors f_n.

Furthermore a 'Ward'-like regularization can be applied. This is useful if one have clusters with sizes in the same magnitude (or 'similar' sizes). The amount of 'ward'-regularization is controlled with the 'wardness' parameter.

Also labels (in the sense of seeds) can be attached to get a 'watershed-ish' behavior (nodes with different labels will never be merged) The '0'-Label is used to indicate that there is no label at all. If certain connected regions share the same seed/label it is not guaranteed that they will merge. But a certain prior / multiplier must be specified. The total weight of an edge where the u/v node have the same label is multiplied with this very multiplier.


The documentation for this class was generated from the following file:

© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de)
Heidelberg Collaboratory for Image Processing, University of Heidelberg, Germany

html generated using doxygen and Python
vigra 1.11.1 (Fri May 19 2017)