NormalizeGeometry

MacroModule

genre

Geometry

author

Jan-Martin Kuhnigk

package

FMEstable/ReleaseMeVis

definition

NormalizeGeometry.def

see also

NormalizeOrthoOrientation, OrthoSwapFlip, Resample3D, Reformat

keywords

ROI, Resample, Geometry, Reformat

Purpose

The module NormalizeGeometry can be used to “normalize” input images for algorithms which have require standardized input in terms of:

  • Axis Orientation (sagittal, coronal or transversal view)

  • Voxel Size

  • Highly anisotropic voxels

  • Very high resolutions

Normalization of axis orientation and limitation of voxel anisotropy may be required to ensure proper functionality of algorithms, limitation of the voxel resolution is typically required in industry deliveries to ensure reasonable processing times even in cases of extremely high scan resolutions or large VOIs.

Usage

Connect a valid ML image to inImage and configure axis normalization and resampling parameters as desired.

Details

Resampling is controlled in the following way:

  • Check anisotropy and total voxel count thresholds

  • If any of the two thresholds is activated and violated by the input image calculate a new image extent:

  • Upsample axes with lower resolutions to highest axis resolution to make isotropic voxels

  • Symmetrically downsample all axes to meet maximum voxel count

  • Check difference of new and original image extents per axis, reset differences below Skip Resampling If Resampled Image Size Differs By No More Than

Windows

Default Panel

../../../Projects/ImageGeometry/NormalizeGeometry/Modules/mhelp/Images/Screenshots/NormalizeGeometry._default.png

Input Fields

inImage

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

Connect the image to be normalized here.

Output Fields

outImage

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

This output provides the axis normalized and resampled image.

outImageOrientationNormalized

name: outImageOrientationNormalized, type: Image, deprecated name: output1

This output provides access to an axis normalized version of the image without resampling applied. This can be useful e.g. for visualizing algorithm results as overlay on the axis normalized image with original resolution.

Parameter Fields

Field Index

Basic Geometry: Enum

Normalization Active: Bool

Use memory image: Bool

Clear: Trigger

On input change: Enum

Downsample if (resampled) image size would exceed: Bool

Resample if anisotropy (=maxVoxelSize/minVoxelSize) exceeds: Bool

enableLogging: Bool

Resampling Active: Bool

Has Valid Output: Bool

Resampling Filter: Enum

Max Anisotropy: Double

Skip Resampling If Resampled Image Size Differs By No More Than: Integer

Max Cubic Voxel Count: Integer

Target Voxel Size [mm]: Vector3

Normalizate Orientation: Enum

Update: Trigger

Visible Fields

On input change

name: updateMode, type: Enum, default: AutoUpdate

Configure the update behaviour upon changes to the input image.

Values:

Title

Name

​Clear

​AutoClear

​Update

​AutoUpdate

Update

name: update, type: Trigger

Explicitly trigger an update of the output images.

Clear

name: clear, type: Trigger

Clear all output images, free internally used memory.

Normalizate Orientation

name: normalizationMode, type: Enum, default: Off

Select whether and how to normalize the axis orientation of the image. See NormalizeOrientation for details.

Values:

Title

Name

​Off

​Off

​Transversal

​Transversal

​Coronal

​Coronal

​Sagittal

​Sagittal

Use memory image

name: useMemoryImage, type: Bool, default: FALSE

Select whether or not to use a memory image for resampling. May improve performance but requires more memory. Use this with caution especially when large input images may occur.

Normalization Active

name: normalizationEnabled, type: Bool, persistent: no

Output parameter indicating whether or not axis reformatting is actually applied. If axis orientation normalization is disabled or the input image already has the correct axis orientation now reformatting takes place. Read only.

Basic Geometry

name: targetResolutionBasedOn, type: Enum, default: TargetVoxelSize

Defines which where the target geometry is derived from.

Values:

Title

Name

Description

​In Image Resolution

​InImageResolution

​Keep the input image’s (inImage) voxel size and extent (and then possibly apply modificators)

​Target Voxel Size

​TargetVoxelSize

​Go for the voxel size specified in Target Voxel Size [mm] (and then possibly apply modifiers)

Target Voxel Size [mm]

name: targetVoxelSize_mm, type: Vector3, default: 1 1 1, deprecated name: targetVoxelSize

Target voxel size in mm, used if Basic Geometry is “TargetVoxelSize”.

Resample if anisotropy (=maxVoxelSize/minVoxelSize) exceeds

name: enableAnisotropyLimit, type: Bool, default: FALSE

Enable or disable the anisotropy threshold used to determine whether resampling is required or not.

Max Anisotropy

name: maxAnisotropy, type: Double, default: 1.5, minimum: 1

The maximal anisotropy (ratio of largest vs. smallest voxel edge length) that is allowed in the output image. If this ratio is exceeded and Resample if anisotropy (=maxVoxelSize/minVoxelSize) exceeds is enabled, the image will be resampled to isotropic voxels.

Downsample if (resampled) image size would exceed

name: enableVoxelCountLimit, type: Bool, default: FALSE

Enable or disable the maximum voxel count threshold used to determine whether resampling is required or not.

Max Cubic Voxel Count

name: maxCubicVoxelCount, type: Integer, default: 100, minimum: 1

The maximum voxel count in cubic voxels, i.e. pow(totalVoxelCount, 1.0/3.0), that is allowed in the output image. If this limit is exceeded and enableVoxelCountLimit is enabled, the image will be resampled to a total of maxCubicVoxelCount isotrope voxels.

Skip Resampling If Resampled Image Size Differs By No More Than

name: skipResamplingIfResampledImageSizeDiffersByNoMoreThan, type: Integer, default: 5, minimum: 0, deprecated name: resamplingExtensionTolerance

An optimization parameter to prevent resampling along axes where resampling would only change the image extent by no more this amount of voxels.

Resampling Filter

name: resamplingFilter, type: Enum, default: Lanczos_3

Configure the resampling filter to be used. See Resample3D documentation for details.

Values:

Title

Name

​Nearest Neighbor

​Nearest_Neighbor

​Triangle/Linear

​Triangle/Linear

​Hermite

​Hermite

​Blackman

​Blackman

​Hamming

​Hamming

​Hanning

​Hanning

​Gaussian

​Gaussian

​Bell/Quadratic

​Bell/Quadratic

​Cubic B-Spline

​Cubic_B-Spline

​Catrom

​Catrom

​Mitchell et al

​Mitchell_et_al

​Trunc Sinc 4

​Trunc_Sinc_4

​Lanczos 2

​Lanczos_2

​Lanczos 3

​Lanczos_3

​Lanczos 4

​Lanczos_4

​Box NNB

​Box_NNB

Resampling Active

name: resamplingEnabled, type: Bool, persistent: no

A flag indicating whether or not any resampling is actually applied. Read only.

Has Valid Output

name: hasValidOutput, type: Bool, persistent: no

Indicates if the current output images are valid.

Hidden Fields

enableLogging

name: enableLogging, type: Bool, default: FALSE

Enables/disables additional logging