LUT Functions


A LUT function is a lookup table (LUT) object (derived from ml.LUTFunction) that specifies, how one-dimensional index values are mapped to n-dimensional output values, mainly for visualization purposes. Despite its name, a LUT function is not a real table with entries for a fixed set of index values, but instead specifies a function defined on a given index range, which may be discrete or continous. At the time when a LUT function is applied to an image, for example within a 3D volume renderer, the index value range and resolution are fixed and the LUT function is rendered into a true table. The image data values serve as index values into the table, and the corresponding table entries, representing gray, color or alpha values, are used for visualization.

In addition to such one-dimensional (1D) LUT functions, there are also two- and three-dimensional (2D, 3D) LUT functions consisting of several 1D-LUTs arranged in rows and layers. 2D- and 3D-LUTs are mainly used for certain volume rendering tasks, such as tagged volume rendering, for instance.

A number of modules are available to generate LUT functions, perform transformations and modifications, and apply a LUT function to an image. Using the MLLUT interface contained in the MeVisLab SDK, custom LUT generators or transformations can be developed.

Terminology & Properties

Visual Type

The Visual Type describes the number of channels of a LUT function and their semantics. The following visual types are defined:

Name Channels Description
L 1 Single luminance channel
LA 2 Luminance and alpha channels
RGB 3 Red, green and blue channels
RGBA 4 Red, green, blue and alpha channels
Index Range The index values are the input values used as indices into the lookup table. Usually these values are taken from an image, possibly after rescaling. In principle, a LUT function is defined for the complete real axis, although its relevant part is usually contained in a finite interval. This interval is called the Native Index Range, indicating the range in which the LUT function is “interesting”.
LUT Entry Values The LUT Entry Values are the output values of the LUT function. For a LUT with n> channels, the LUT entries are n-tupels. The entry values are always specified relative to the interval [0..1] and are rescaled to the desired output value range at the time the LUT function is rendered.
Relative vs. Absolute An absolute LUT function is defined on an absolute index range, i.e. the input values are taken directly from the image voxel values. A typical application is a LUT function defined for CT images in which the LUT entries are specified for fixed HU values.
A relative LUT function is always defined on the interval [0..1], and the index range is rescaled to the value range of the image at the time the LUT is rendered. A typical example is a ramp LUT specifying a certain amount of contrast increase.
Rows and Layers A two-dimensional LUT function defines a collection of 1D-LUTs arranged in rows and all having the same basic properties (visual type, native index and value ranges). A three-dimensional LUT function defines a collection of 2D-LUTs arranged in layers and all having the same basic properties and number of rows.
The index range for rows and layers always starts at 0 and is absolute. Rescaling with respect to the row or layer range is not supported. The number of rows and layers is called the height and depth of a LUT function.


Generator Modules

  • LUTPrimitive: A single channel LUT with predefined primitives of different shapes
  • RampLUT: A pair of RGB/alpha ramp LUTs
  • LinearLUT: A simple color/gray wedge LUT
  • SoLUTEditor: Define a LUT using a graphical editor

Transformation Modules

  • ChangeLUTColor: Apply color, intensity and/or alpha factors to a LUT
  • LUTRescale: Rescale a LUT’s index range
  • LUTCombiner: Combine (add, blend, multiply, etc.) several input LUTs
  • LUTChannelMap: Map the channels of the input LUT to the channels of the output LUT
  • LUTConcat: Concatenate multiple LUTs to form a 2D- or 3D-LUT
  • LUTBlend: Generate a 2D- or 3D-LUT by interpolation between two 1D- or 2D-LUTs, resp.
  • LUTSelect: Select a 1D-LUT from a specified row/layer of a 2D- or 3D-LUT

Rendering Modules

  • SoMLLUT: Set an ML lookup table in the state of an inventor scene
  • ApplyLUT: Apply LUT to an ML image
  • LUTCurve: Convert a LUT into a curve object
  • LUTToMLImage: Convert a LUT into an ML image

Info Modules

  • LUTInfo: Display properties of a LUT object
  • DisplayLUT: LUT viewer displaying a 1D-LUT as a diagram and as a color bar, and 2D/3D-LUTs as images