Flexible Isosurfaces

One of the useful properties of the contour tree is that there is a one-to-one correspondence between points in the tree and individual contours in the data. This can be exploited by means of path seeds to generate the contours. Unlike some other methods of seed generation, the structure of the contour tree allows us to identify which seed corresponds to which contour. This in turn allows us to assign different properties to different contours with the same isovalue. For example, we can assign different colours to different contours to enhance visual contrast.
An isosurface of a molecule
The same isosurface, with random colours for the contours
Increasing Visual Contrast with Colour

Selecting and Deleting Contours

In three dimensions, one of the principal difficulties in isosurface rendering is occlusion: one surface concealing or blocking another surface. To deal with this, we exploit the ability of the contour tree to generate seeds for specific contours, and provide the user with the ability to delete or disable contour surfaces that are of small interest. We do this through the familiar user interface metaphor of selection and operation, selecting an object (a surface) visually with the mouse, then applying an operation (deletion). One way of thinking of this is that we simply assign the colour "invisible" to the surface to be deleted. We can also delete all contours except one, as a means of isolating the contour for further study.

A contour (in grey) has been selected
The grey contour has been deleted
Another contour (in grey) has now been selected
The grey contour has been isolated by deleting other contours
Subtracting a Contour from an Isosurface

Evolving Contours

Deletion is not the only useful operation we can apply to a contour. One common use of isosurfaces is to explore the data by varying the isovalue that defines the isosurface and watching the evolution of the contours. We extend this to permit the evolution of a single contour, which may split apart into multiple pieces or may join with other pieces, or both.

A contour (in grey) has been selected
The grey contour has been evolved to a new isovalue
Evolving a Contour

Flexible Isosurfaces:

Because each contour corresponds to a single point in the contour tree, these operations are easily represented using the contour tree. Instead of an isosurface consisting of all the contours at a fixed isovalue, we define a flexible isosurface to be any set of contours, which may or may not share an isovalue. Our operations now become:

Other operations are possible. We can use the contour tree for largest contour segmentation: identifying the set of maximal surfaces containing only one local maximum. And, although we can delete contours visually, adding contours that are not already present depends on identifying which contours are of interest to us. A simple mechanism for this is to show the contour tree itself as a means of choosing contours:

Indirect Manipulation of Contours in the Contour Tree

Largest Contour Segmentation