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

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

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:

- vigra/hierarchical_clustering.hxx

© 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