Labelisation watershed

labelisation_watershed(graph, edge_weights)

Watershed cut of the given edge weighted graph.

labelisation_seeded_watershed(graph, …[, …])

Seeded watershed cut on an edge weighted graph.

labelisation_watershed(graph, edge_weights)[source]

Watershed cut of the given edge weighted graph.

The definition and algorithm used are described in:

J. Cousty, G. Bertrand, L. Najman and M. Couprie. Watershed cuts: minimum spanning forests, and the drop of water principle. IEEE Trans. on Pattern Analysis and Machine Intelligence, 31(8): 1362-1374, 2009.

The watershed cut is represented by a labelisation of the graph vertices.

Complexity

This algorithm has a linear runtime complexity \(\mathcal{O}(n)\) with \(n\) the number of edges in the graph.

Parameters
  • graph – input graph

  • edge_weights – Weights on the edges of the graph

Returns

A labelisation of the graph vertices

labelisation_seeded_watershed(graph, edge_weights, vertex_seeds, background_label=0)[source]

Seeded watershed cut on an edge weighted graph. Seeds and associated labels are given in vertex_seeds. A vertex \(v\), such that \(vertex\_seeds(v)\neq background\_label\) is a seed with associated label \(vertex\_seeds(v)\).

The label of a vertex of the graph is then defined equal to the label of the closest seed in the edge weighted graph for the min-max distance. If several such seeds exist (eg. on a plateus between two seeds), an arbitrary and consistent choice is made ensuring that:

  • each flat zone of level \(k\) of the final labelling contains at least one seed with the label \(k\); and

  • each seed is contained in a flat zone whose level is equal to the seed label.

Complexity

This algorithm has a runtime complexity in \(\mathcal{O}(n \log n)\) with \(n\) the number of edges in the graph.

Parameters
  • graph – Input graph

  • edge_weights – Weights on the edges of the graph

  • vertex_seeds – Seeds with integer label values on the vertices of the graph

  • background_label – Vertices whose values are equal to background_label (default 0) in vertex_seeds are not considered as seeds

Returns

A labelisation of the graph vertices