Tag | (0028,1056) |
---|---|
Type | Optional (3) |
Keyword | VOILUTFunction |
Value Multiplicity | 1 |
Value Representation | Code String (CS) |
Describes a VOI LUT function to apply to the values of Window Center (0028,1050) and Window Width (0028,1051).
See Section C.11.2.1.3 for further explanation.
Defined Terms:
When this Attribute is not present, the interpretation of the values of Window Center (0028,1050) and Window Width (0028,1051) is linear as in Section C.11.2.1.2.
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 Section C.11.2.1.2.1. 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
Equation C.11-1.
where
is the input value of the LUT (i.e., the output of the (conceptual) Modality LUT).
is the Window Center defined interactively by the user or by using the values provided in (0028,1050).
is the Window Width defined interactively by the user or by using the values provided in (0028,1051).
is the output value
is the minimum output value
is the maximum output value
Window Width (0028,1051) shall always be greater than 0.
Window Width (0028,1051) is required to be greater than zero to prevent division by zero (quite apart from being meaningless).
If the value of VOI LUT Function (0028,1056) is LINEAR_EXACT, 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 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 - w/2), then y = y_{min}
else if (x > c + w/2), then y = y_{max}
else y = ((x - c) / w + 0.5) * (y_{max}- y_{min}) + y_{min}
Window Width (0028,1051) shall always be greater than 0.
For example, given stored unsigned pixel values from 0 to 65535, a Rescale Intercept of 0 and a Rescale Slope of 1.0/65535, a Window Width of 1.0 and a Window Center of 0.5 would specify the entire range of values (the identity transformation for those rescale values).
Window Width (0028,1051) is required to be greater than zero to prevent division by zero (quite apart from being meaningless).
If VOI LUT Function (0028,1056) is absent or has a value of LINEAR, 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.
The terms "window center" and "window width" are not consistently used in practice, nor were they defined in previous editions 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 integer 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.
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}
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.
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.
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 */
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 a mathematical identity VOI LUT transformation over the possible input values (whether used or not) in the case where no Modality LUT is specified and the stored pixel data are n bit unsigned integers.
In the case where x1 is the lowest input value actually used in the Pixel Data and x2 is the highest, a Window Center of (x1+x2+1)/2 and a Window Width of (x2-x1+1) selects the range of input values from x1 to x2, which represents the full range of input values present as opposed to possible. This is distinct from the mathematical identity VOI LUT transformation, which instead selects the full range of input values possible as opposed to those actually used. The mathematical identity and full input range transformations are the same when x1 = 0 and x2 is 2^{n}-1 and the input values are n bit unsigned integers. See also Note 7.
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.
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.
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.
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.
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 Section C.11.6.1.
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.
The Window Center (0028,1050), Window Width (0028,1051) and VOI LUT Function (0028,1056) 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.
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.
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.