The three values of the LUT Descriptor (0028,3002) describe the format of the LUT Data in the corresponding Data Element (0028,3006).
The first value is the number of entries in the lookup table. When the number of table entries is equal to 216 then this value shall be 0.
The second value is the first input value mapped. The Value Representation of the second value (US or SS) depends on the source of the input to the VOI LUT, and shall be:
- the same as specified by Pixel Representation (0028,0103), if there is no Modality LUT or Rescale Slope and Intercept specified;
- SS if the possible output range after application of the Rescale Slope and Intercept may be signed;
Note: This is always the case for the CT Image IOD in which the Rescale Type is specified to be Hounsfield Units, which are always signed.
- US otherwise.
This input value is mapped to the first entry in the LUT. All input values less than the first value mapped are also mapped to the first entry in the LUT Data. An input value one greater than the first value mapped is mapped to the second entry in the LUT Data. Subsequent input values are mapped to the subsequent entries in the LUT Data up to an input value equal to number of entries + first value mapped - 1 which is mapped to the last entry in the LUT Data. Input values greater than or equal to number of entries + first value mapped are also mapped to the last entry in the LUT Data.
The third value specifies the number of bits for each entry in the LUT Data. If the VOI LUT is included in an Image IOD, the third value of LUT Descriptor (0028,3002) shall be 8 or 16 bits, unless otherwise specialized. If the VOI LUT is included in a Presentation State IOD, the third value of LUT Descriptor (0028,3002) shall be between 8 and 16 inclusive. The LUT Data shall be stored in a format equivalent to 8 bits allocated when the number of bits for each entry is 8, and 16 bits allocated when the number of bits for each entry is 16, where in both cases the high bit is equal to bits stored - 1, and where bits stored is the third value.
Notes: 1. Since the LUT Descriptor (0028,3002) Attribute is multi-valued, in an Explicit VR Transfer Syntax, only one value representation (US or SS) may be specified, even though the first and third values are always by definition interpreted as unsigned. The explicit VR actually used is dictated by the VR needed to represent the second value.
2. Some implementations have encoded 8 bit entries with 16 bits allocated, padding the high bits; this can be detected by comparing the number of entries specified in the LUT Descriptor with the actual value length of the LUT Data entry. The value length in bytes should equal the number of entries if bits allocated is 8, and be twice as long if bits allocated is 16.
The LUT Data contains the LUT entry values.
The output range is from 0 to 2 n -1 where n is the third value of LUT Descriptor. This range is always unsigned.
Window Center (0028,1050) and Window Width (0028,1051) specify a linear conversion from stored pixel values (after any Modality LUT or Rescale Slope and Intercept specified in the IOD have been applied) to values to be displayed. Window Center contains the input value that is the center of the window. Window Width contains the width of the window.
Note: The terms “window center” and “window width” are not consistently used in practice, nor were they defined in previous versions of the standard. The definitions here are presented for the purpose of defining consistent meanings for identity and threshold transformations while preserving the common practice of using integral values for center and width.
Window Width (0028,1051) shall always be greater than or equal to 1.
When Window Width (0028,1051) is greater than 1, these Attributes select the range of input values that are to be mapped to the full range of the displayed output.
When Window Width (0028,1051) is equal to 1, they specify a threshold below which input values will be displayed as the minimum output value.
Note: Whether the minimum output value is rendered as black or white may depend on the value of Photometric Interpretation (0028,0004) or the presence of a Presentation LUT Module.
These Attributes are applied according to the following pseudo-code, where x is the input value, y is an output value with a range from y min to y max , c is Window Center (0028,1050) and w is Window Width (0028,1051):
if (x <= c - 0.5 - (w-1)/2), then y = y min
else if (x > c - 0.5 + (w-1)/2), then y = y max ,
else y = ((x - (c - 0.5)) / (w-1) + 0.5) * (y max - y min )+ y min
Notes: 1. For the purpose of this definition, a floating point calculation without integer truncation is assumed, though the manner of implementation may vary as long as the result is the same.
2. The pseudo-code function computes a continuous value over the output range without any discontinuity at the boundaries. The value of 0 for w is expressly forbidden, and the value of 1 for w does not cause division by zero, since the continuous segment of the function will never be reached for that case.
3. For example, for an output range 0 to 255:
c=2048, w=4096 becomes:
if (x <= 0) then y = 0
else if (x > 4095) then y = 255
else y = ((x - 2047.5) / 4095 + 0.5) * (255-0) + 0
c=2048, w=1 becomes:
if (x <= 2047.5) then y = 0
else if (x > 2047.5) then y = 255
else /* not reached */
c=0, w=100 becomes:
if (x <= -50) then y = 0
else if (x > 49) then y = 255
else y = ((x + 0.5) / 99 + 0.5) * (255-0) + 0
c=0, w=1 becomes:
if (x <= -0.5) then y = 0
else if (x > -0.5) then y = 255
else /* not reached */
4. A Window Center of 2 n-1 and a Window Width of 2 n selects the range of input values from 0 to 2 n -1. This represents an identity VOI LUT transformation in the case where no Modality LUT is specified and the stored pixel data are n bit unsigned integers.
5. A Window Width of 1 is typically used to represent a "threshold" operation in which those integer input values less than the Window Center are represented as the minimum displayed value and those greater than or equal to the Window Center are represented as the maximum displayed value. A Window Width of 2 will have the same result for integral input values.
6. The application of Window Center (0028,1050) and Window Width (0028,1051) may select a signed input range. There is no implication that this signed input range is clipped to zero.
7. The selected input range may exceed the actual range of the input values, thus effectively “compressing” the contrast range of the displayed data into a narrower band of the available contrast range, and “flattening” the appearance. There are no limits to the maximum value of the window width, or to the minimum or maximum value of window level, both of which may exceed the actual or possible range of input values.
8. Input values "below" the window are displayed as the minimum output value and input values "above" the window are displayed as the maximum output value. This is the common usage of the window operation in medical imaging. There is no provision for an alternative approach in which all values "outside" the window are displayed as the minimum output value.
9. The output of the Window Center/Width or VOI LUT transformation is either implicitly scaled to the full range of the display device if there is no succeeding transformation defined, or implicitly scaled to the full input range of the succeeding transformation step (such as the Presentation LUT), if present. See C.11.6.1.
10. Fractional values of Window Center and Window Width are permitted (since the VR of these Attributes is Decimal String), and though they are not often encountered, applications should be prepared to accept them.
These Attributes shall be used only for Images with Photometric Interpretation (0028,0004) values of MONOCHROME1 and MONOCHROME2. They have no meaning for other Images.
If multiple values are present, both Attributes shall have the same number of values and shall be considered as pairs. Multiple values indicate that multiple alternative views may be presented.
If any VOI LUT Table is included by an Image, a Window Width and Window Center or the VOI LUT Table, but not both, may be applied to the Image for display. Inclusion of both indicates that multiple alternative views may be presented.
If multiple items are present in VOI LUT Sequence (0028,3010), only one may be applied to the Image for display. Multiple items indicate that multiple alternative views may be presented.
If the VOI LUT Module is defined in an IOD and if neither a VOI LUT Sequence nor a Window Width and Window Center are present, then the VOI LUT stage of the grayscale pipeline is defined to be an identity transformation.
Notes: 1. This requirement is specified so that IODs that define a particular output space for the grayscale pipeline, such as P-Values, are not in an undefined state when no VOI LUT Sequence or Window Width and Window Center are present.
2. Despite the Type 3 requirement for VOI LUT Sequence and Window Center, implementations that render images are expected to implement and apply these transformations when they are present in the image, unless overridden by the user, a presentation state, or a hanging protocol, and to allow the user to select which transformation to apply when multiple transformations are present.
The VOI LUT Function (0028,1056) specifies a potentially non-linear conversion for the output of the (conceptual) Modality LUT values to the input of the (conceptual) Presentation LUT.
The behavior for the value LINEAR is defined in C.220.127.116.11. For all other values, the VOI LUT Function (0028,1056) shall include a unique descriptor of the LUT function to be used. Each descriptor is associated with a bivariate function of Window Center (0028,1050) and Window Width (0028,1051).
If the VOI LUT Function (0028,1056) is present with a value other than LINEAR, the values provided in Window Center (0028,1050) and Window Width (0028,1051) shall not be interpreted as a linear conversion of the (conceptual) Modality LUT values to the input to the (conceptual) Presentation LUT - but as parameters for the function defined by the VOI LUT Function descriptor in (0028,1056).
When defined, each descriptor must provide the functional relationship between the output of the (conceptual) Modality LUT values to the input of the (conceptual) Presentation LUT.
If the value of VOI LUT Function (0028,1056) is SIGMOID, the function to be used to convert the output of the (conceptual) Modality LUT values to the input of the (conceptual) Presentation LUT is given by
IN is the input value of the LUT (i.e., the output of the (conceptual) Modality LUT).
WC (resp. WW ) is the Window Center (resp. Window Width) defined interactively by the user or by using the values provided in (0028,1050) (resp. 0028,1051).
Output_range is the maximum output value (see Note below on encoding depth)
Note: The encoding depth of the input values for the VOI LUT function is given by the number of bits specified in Bits Stored (0028,0101). The output values of the VOI LUT function must be encoded with an appropriate depth to be then used as input for the Presentation LUT (typically this value is 8 bits) and the Output_range parameter allows this scaling. Moreover, Eq. 1 is given assuming float values for clarity but the actual implementation must include rounding to output integer values.