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

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