ApplyGlobalModalityLUT

MacroModule

author

Jan-Martin Kuhnigk

package

FMEstable/ReleaseMeVis

definition

ApplyGlobalModalityLUT.def

see also

DicomRescale

keywords

normalization, CT, DICOM, rescal, hounsfield, units, range, Siemens, Toshiba, GE, Philips, value

Purpose

The module allows for normalizing DICOM data containing either a single frame-unspecific (i.e. “shared” or “global”) or multiple frame-specific RescaleIntercept or RescaleSlope values to a single, frame-unspecific, user-defined intercept, slope, and data type.

For CT data, intercept and slope define the transformation between intensity values (IV) and Hounsfield Units (HU): HU = IV * slope + intercept For example, this is very useful in order to normalize CT data from different vendors (Siemens, Philips, GE, Toshiba), who mostly use their specific intercept / slope / data type values, on the fly without extensive computational cost.

It can also be used to scale into another datatype for more memory efficient processing and still have the correct correspondence of intensity values and external scale.

Usage

Connect a DICOM image to the input, and select appropriate rescaling parameters.

E.g., to rescale to Siemens standard, use Intercept -1024, slope 1, and data type UInt16. If Int16 is selected instead, values below -1024 HU which occur in most Philips and Toshiba datasets are preserved and result in intensity values below 0 in the output image.

Recommended normalization values for image processing are intercept = 0, slope = 1 so that there is no need to translate between voxel values and user values (e.g. HU).

Details

Normalizing frame-specific to shared tags is a preprocessing step that only kicks in whenever at least two different frame-specifc tag values are detected. As the frame-specific values are not removed

Windows

Default Panel

../../../Projects/ApplyGlobalModalityLUT/Modules/mhelp/Images/Screenshots/ApplyGlobalModalityLUT._default.png

Input Fields

inImage

name: inImage, type: Image, deprecated name: input0

Input image with frame-specific or shared (or without, equivalent to a 0/1 shared) modality LUT.

Output Fields

outImage

name: outImage, type: Image, deprecated name: output0

Output image with global (aka. shared) Modality LUT.

Parameter Fields

Field Index

[]: Trigger

Input Intercept: String

Output Minimum: Double

Clamp values above: Bool

Input Maximum: Double

Set as output maximum: Bool

Clamp values below: Bool

Input Minimum: Double

Set as output minimum: Bool

Clear: Trigger

Input Rescale Type: String

Status Code: Enum

doNotClearOnFailedUpdate: Bool

Input Slope: String

Status Message: String

Global Intercept: Double

Lower Bound: Double

Update: Trigger

Global Slope: Double

On Input Change Behavior: Enum

Upper Bound: Double

Has Valid Output: Bool

Output Data Type: String

Voxel Data Type: Enum

Input Data Type: String

Output Maximum: Double

Visible Fields

Update

name: update, type: Trigger

Initiates update of all output field values.

Clear

name: clear, type: Trigger

Clears all output field values to a clean initial state.

On Input Change Behavior

name: onInputChangeBehavior, type: Enum, default: Clear, deprecated name: autoUpdateMode,shouldAutoUpdate,shouldUpdateAutomatically

Declares how the module should react if a value of an input field changes.

Values:

Title

Name

Deprecated Name

​Update

​Update

​AutoUpdate,TRUE

​Clear

​Clear

​AutoClear,FALSE

[]

name: updateDone, type: Trigger, persistent: no

Notifies that an update was performed (Check status interface fields to identify success or failure).

Has Valid Output

name: hasValidOutput, type: Bool, persistent: no, deprecated name: outputValid,valid

Indicates validity of output field values (success of computation).

Status Code

name: statusCode, type: Enum, persistent: no

Reflects module’s status (successful or failed computations) as one of some predefined enumeration values.

Values:

Title

Name

​Ok

​Ok

​Invalid input object

​Invalid input object

​Invalid input parameter

​Invalid input parameter

​Internal error

​Internal error

Status Message

name: statusMessage, type: String, persistent: no

Gives additional, detailed information about status code as human-readable message.

Global Intercept

name: inOutputIntercept, type: Double, default: 0, deprecated name: outputIntercept

Sets the user defined intercept value for the output.

Global Slope

name: inOutputSlope, type: Double, default: 1, deprecated name: outputSlope

Sets the user defined slope value.

Voxel Data Type

name: inOutputDataTypeSelection, type: Enum, default: Int16, deprecated name: inOutputTypeSelect,typeSelect

Defines the data type for the output image.

Values:

Title

Name

​Automatic

​Automatic

​Input Data Type

​Input Data Type

​UInt8

​UInt8

​Int8

​Int8

​UInt16

​UInt16

​Int16

​Int16

​UInt32

​UInt32

​Int32

​Int32

​Float

​Float

​Double

​Double

Clamp values below

name: inClampToUserMin, type: Bool, default: FALSE, deprecated name: inUseUserMin,useUserMin

If checked, the data is clamped to the user-defined upper bound Lower Bound.

Lower Bound

name: inUserMin, type: Double, default: -2048, deprecated name: userMin

Can be used for clamping and/or setting a user defined minimum image value. See also Clamp values below and Set as output minimum

Set as output minimum

name: inUseUserMinAsOutputMin, type: Bool, default: FALSE, deprecated name: useUserMinAsOutputMin

If checked, the user minimum Lower Bound is set as output minimum value.

Clamp values above

name: inClampToUserMax, type: Bool, default: FALSE, deprecated name: inUseUserMax,useUserMax

If checked, the data is clamped to the user-defined upper bound Upper Bound.

Upper Bound

name: inUserMax, type: Double, default: 6143, deprecated name: userMax

Can be used for clamping and/or setting a user defined maximum image value. See also Clamp values above and Set as output maximum

Set as output maximum

name: inUseUserMaxAsOutputMax, type: Bool, default: FALSE, deprecated name: useUserMaxAsOutputMax

If checked, useUserMax is automatically enabled and the user maximum is applied as output maximum.

Input Intercept

name: outInputIntercept, type: String, persistent: no, deprecated name: inputIntercept

RescaleIntercept of input image. Will show the value for shared RescaleIntercept, and (frame specific) for frame-specific values.

Input Slope

name: outInputSlope, type: String, persistent: no, deprecated name: inputSlope

RescaleSlope of input image. Will show the value for shared RescaleSlope, and (frame specific) for frame-specific values.

Input Data Type

name: outInputDataType, type: String, persistent: no, deprecated name: inputType,outInputType

Data type of input image.

Input Rescale Type

name: outInputRescaleType, type: String, persistent: no, deprecated name: inputRescaleType

Displays the value of the DICOM tag “RescaleType” (0028,1054) if present, or “n/a” otherwise. Not used by the module, just displayed for user information.

Input Minimum

name: outInputMin, type: Double, persistent: no, deprecated name: inputMin

Minimum voxel value of input image.

Input Maximum

name: outInputMax, type: Double, persistent: no, deprecated name: inputMax

Maximum voxel value of input image

Output Minimum

name: outMin, type: Double, persistent: no, deprecated name: outputMin

Minimum voxel value of output image

Output Maximum

name: outMax, type: Double, persistent: no, deprecated name: outputMax

Maximum voxel value of output image

Output Data Type

name: outOutputDataType, type: String, persistent: no, deprecated name: outputType,outType

Data type of output image.

Hidden Fields

doNotClearOnFailedUpdate

name: doNotClearOnFailedUpdate, type: Bool, persistent: no

Prevents automated clear after update failed. This does not affect status fields. It enables the developer to analyze module’s state after failure.