Get Teem at Fast, secure and Free Open Source software downloads
to teem


teem Not intended for human consumption

GK's Master's Thesis (re-)re-implementation

Having written nrrd as the basis for future work involving N-D raster data, re-implementing my Master's thesis code in 2000 turned out to be quite easy, and the result is bane. In 2002, I re-re-implemented it, using gage as the underlying measure of values and derivatives. It is my hope that future research by others on the topic of transfer function generation can benefit from comparisons with my technique, as represented by my own implementation.

I would like to mention that despite this software coming from Utah, and despite my Utah affiliation at the time the VolVis '98 paper was published (and when the MS thesis was finished in 1999), the great majority of this research was completed while I was a student in the Program of Computer Graphics (at Cornell University) under Don Greenberg. That I didn't finish while at Cornell indicates nothing more than that I bit off more than I could chew in two years.

The basic ideas in this research were the following:

  1. Direct volume rendering relies on a complicated multi-dimensional parameter called the transfer function, which assigns optical properties such as opacity, color, emissivity, etc., based on the data values in the volume.
  2. The most important variable in a transfer function is opacity. No other variable plays as essential a role in determining how intelligible and informative the final rendering will be. If the opacity assignment is botched, the important structures are either invisible or hopelessly occluded. Thus, this research only seeks to generate opacity functions: functions which assign opacity to the volume data based on data value or some other locally measurable quantity.
  3. I'm interested in rendering datasets where the important structure is the boundary between relatively homogenous regions. One could also call these features the material interfaces. This means that our task is tantamount to edge detection. Edge detection can be done using the first and second directional derivative along the gradient direction, in three dimensions as well as two.
  4. The very nature of opacity functions is that their assingment is performed everywhere in the volume equally-- there is no spatial dimension or axis to the transfer function.
  5. Thus, we need to do edge detection, but with the spatial component "projected out". We want to localize boundaries not in the spatial domain, but in the transfer function domain.
  6. The role of histograms is to record variation and patterns of some properties of data, while projecting away the quantities which don't matter. In our case, position doesn't matter.
  7. By creating and analyzing 3-D histogram volumes of data value and its first and second directional derivatives, we can extract a description of what boundaries are present in the given volume data.
  8. If the user specifies a high-level description of how boundaries are supposed to look, this can be combined with the histogram volume analysis to create an opacity function which shows only the boundaries.
  9. The information from the histogram volume analysis can be used additionally as a record of the dataset characteristics, independent of the specific task of opacity function specification.
The interesting parts of the research are the identification of which quantities should go into the histogram volume, figuring out how to measure them and store them, analyzing the histogram volume, and creating a new/improved interface to setting the transfer function. The bane software implements all the basic operations described in my MS thesis and in VolVis '98 paper. Also, it is this software which generated all the results used in the Vis 2000 Transfer Function Bake-Off.

While bane is a C library (libbane.a,, etc) which contains all the functions you need to create opacity functions, it is probably easier to just use the single command-line executable, called gkms, which is built as part of installing bane. gkms does everything needed to go from a dataset to an opacity function (either one or two dimensional), and it offers access to all the bane functionality which has anything to do with semi-automatic transfer function generation.

Long ago I wrote An Introduction to bane, Using gkms, but the Bane in recent versions of Teem does not work, and it may be some time before it is working again.