There 3 stages or transforms within the DICOM rendering pipeline with regards to applying Lookup tables that can alter input values for rendering. Used within these stages are 4 types of lookup table (LUT) which can be found within DICOM images are part of the standard, and one further type which exists in DicomObjects. These together with a number of other Pixel data modifiers are used within the pipeline to produce a flexible rendering chain.
The DICOM pipeline for rendering images contains a number of stages where a LUT type can be applied. At each stage the application of a specific LUT type may be required or not, as specified in the source DICOM data. The following list shows the possibilities:
Value of Interest (VOI) Transform
The Modality LUT transformation transforms the manufacturer dependent pixel values into pixel values which are meaningful for the modality and which are manufacturer independent. It is identified by the presence of a Modality LUT Sequence element (0028,3000) containing one entry for the LUT.
This is a linear transformation, where the Modality step is described by the Rescale Slope (0028, 1053) and Rescale Intercept (0028, 1052) elements.
Where there is no LUT or rescale no transformation is required.
As Modality LUT is a pre-windowing transformation, Image’s Window Centre and Width can still be changed after Modality LUT or Rescale is applied.
The Value Of Interest(VOI) LUT transformation transforms the modality pixel values into pixel values which are meaningful for the user or the application. The VOI LUT is described by the VOI LUT Sequence (0028, 3010).
This can be linear or sigmoid. Both types are defined by the Window Centre (0028, 1050) and Window Width (0028, 1051) values, but the resulting shapes derived from those figures differ at the extremes of the range.
This transformation produces a linear lookup from Centre-Width/2 to Centre + Width/2 .
This non linear transformation is defined within the DICOM standard and applies a sigmoid rescale that is implemented by the viewer according to the standard.
In terms of the DICOM data, the only difference between the linear and sigmoid LUTs is the value of the 0028,1056 attribute. If this is absent, or LINEAR, then a linear transform is applies, but if it is SIGMOID then the sigmoid version is used.
An explicit VOI LUT serves as a Replacement for Window Centre and Width therefore it is NOT technically allowed to window an image with a VOI LUT applied.
Importantly only one Modality Transform and Presentation transform can be present in DICOM data, however multiple VOI LUTs and multiple sets of width/centre values can be present but only 1 can be utilised by the viewer at any time. Most viewers allow the end user to select the VOI LUT or windowing to be used in some way.
If multiple windowing values are present, they must all be linear or all sigmoid - there is no mechanism to control them individually.
The Presentation LUT transformation transforms the pixel values into P-Values, a device independent perceptually linear space. The Presentation LUT is described by the Presentation LUT Sequence (2050, 0010).
The Linear transform for the presentation stage is described by the Presentation LUT Shape (2050, 0020). This can be 1 of 2 values:
This represents no further transformation.
This required the p-Values to be inverted where the p-value out = maximum - output value.
NOT every Viewer supports all the LUTs. VOI LUT is best supported, as we mentioned above, then comes the Modality LUT and finally the Presentation LUT (This is from our experience). Even if all are individually supported, some viewer may not “chain” them correctly. For those reasons, sometimes it is better to apply any LUTs that your images need into the Pixel Data (i.e. replace the pixel data by a post-LUT equivalent).
This 2D-Array property allows a false-colour lookup table to be applied to a monochrome image. This property is used as a Final LUT when the image is being rendered for any purposes. The first dimension of the array must have lower bound of 1 and upper bound of 3. The second dimension of the array may be any size and may have any maximum value (up to 64K), as both input and output are scaled to fit the required ranges.
An article about Grayscale Transformation Sequences is also available within this knowledgebase.