Purpose

The module CSOIsoProcessor allows for a generation of iso contours on slices.

Usage

Attach this module to the inProcessor field of a SoView2DCSOEditor module.

Details

The module can generate iso contours at a fixed iso value, or at an interactively adjustable iso value. The module can either generate a single CSO, or can find all contours for a certain iso value. The resulting CSOs are generated on base of a marching squares algorithm. Ambiguous cells are always treated in the same way, thus resolving the ambiguities.

If the CSOIsoProcessor should generate all contours on a slice, the iso value can be adjusted once, and on the next mouse click, all CSOs at the given iso value are generated. If the iso value should be interactively set, the active mouse button can be pressed and held down while moving the mouse cursor over the image; all the contours at the iso value (this is the voxel value under the current mouse pointer location) are generated immediately.

If the module should create only one CSO at a time, the behavior in the interactive case is quite similar to the behavior described above. If the iso value is fixed, however, the module searches on base of a broad search for the nearest (marching square-) cell with a zero crossing and starts the contouring algorithm from there. The attempt of finding such a cell can further be influenced by the Start Condition; this parameter can be adjusted, so that the module compares the fixed iso value with the current value under the mouse cursor. If the Start Condition is set to Always, a new CSO is always generated (if an according zero crossing is found within the image). If it is set to Hit Lower Iso Value or to Hit Greater Iso Value the current image value under the cursor position must be either lower or greater than the adjusted fixed iso value in order to trigger a search for a zero crossing-cell.

Generally, the CSOIsoProcessor processes the image that is shown in the viewer to which the according SoView2DCSOEditor is attached to. But it can be necessary to process another image for the finding of CSOs, like an overlay image. For that case, the module has an input image field. In order to activate the processing of the input image, the according field needs to be checked (Use input image). For the use of the module in conjunction with ortho-reformatted images or with MPRs, the module yields an Info tab with all the needed information. Those fields must be connected with the modules that supply the input image. Refer to the example network for further information and note that the optional input image must have the same image size as the image that is shown in the according viewer.

All generated CSOs can be interpolated linearly on base of the ratio of the iso value and the voxel values of the voxels the concerning contour is running through. Additionally or alternatively, a spline approximation (B-Splines) scheme can be applied to the CSOs as a smoothing.

In interactive mode, the module does not facilitate the editing of generated contours.

Interaction

If clicked onto a connected viewer on a free space (the mouse cursor looks like a fill bucket), a new CSO is generated. Depending on the parameter Find all contours, one or more CSOs are created. Also, the usage of a fixed or an interactively determined iso value influences the creation of the CSO(s).

If clicked to the vicinity of an existing CSO, the CSO in the vicinity is selected.

Windows

Default Panel

../../../Modules/Inventor/SoCSO/mhelp/Images/Screenshots/CSOIsoProcessor._default.png

Input Fields

input0

name: input0, type: Image

Output Fields

outProcessorData

name: outProcessorData, type: CSOProcessorData(MLBase)

Parameter Fields

Field Index

addCSOToGroupMode: Enum Interpolate contour: Bool Update Start Position: Bool
addCSOToGroupWithId: Integer Is Processing: Bool updateMode: Enum
apply: Trigger Iso Value: Float Use input image: Bool
autoApply: Bool Layout: Integer Use iso value:: Bool
Current Layout String: String Plane: Plane  
done: Trigger Slice: Integer  
emptyGroupBeforeGeneration: Bool Smoothing Mode: Enum  
Find all contours: Bool Start Condition: Enum  

Visible Fields

Is Processing

name: isProcessing, type: Bool, persistent: no

Shows whether the module is processing which is when the user interacts.

Plane

name: plane, type: Plane, persistent: no

Shows the currently visible slice as a plane equation with a normal vector and a distance scalar.

The plane equation can be used to adjust an input MPR to the currently visible slice.

Slice

name: currentSlice, type: Integer, persistent: no

Shows which slice is currently visible.

Layout

name: currentLayout, type: Integer, persistent: no

Shows the closest ortho plane. Values are Sagittal (0), Coronal (1) and Axial (2).

Current Layout String

name: currentLayoutString, type: String, default: Axial

Shows the layout described in Layout as a string.

Use input image

name: useInputImage, type: Bool, default: FALSE

If checked, the module processes the optional input image.

Interpolate contour

name: interpolate, type: Bool, default: TRUE

If checked, the generated CSOs are interpolated by a linear interpolation scheme based on the voxel values and the iso value.

Use iso value:

name: useIsoValue, type: Bool, default: FALSE

If checked, the module enables the setting of a fixed iso value, as well as the choice of a Start Condition.

Find all contours

name: findAllContours, type: Bool, default: FALSE

If checked, the module searches the whole slice for iso contours at either the fixed or the interactive value.

Iso Value

name: isoValue, type: Float, default: 1200

Sets the iso value which is only evaluated if Use iso value: is checked.

Update Start Position

name: updateStartPosition, type: Bool, default: TRUE

If checked, the mouse can be moved over the image with a pressed mouse button and from the current and updated mouse position, the current CSO is being generated. Otherwise, a new CSO is started.

This option needs the Find all contours have unchecked. If all contours are generated for a slice, this option does not make any difference.

Start Condition

name: startCondition, type: Enum, default: Always

Defines whether a contour should be searched for, depending on the fixed iso value and the current voxel value under the mouse cursor.

Values:

Title Name
Always Always
Hit Lower Iso Value HitLowerIsoValue
Hit Greater Iso Value HitGreaterIsoValue

Smoothing Mode

name: smoothingMode, type: Enum, default: SplineApproximation

Sets the smoothing mode that is applied after the linear interpolation.

Values:

Title Name Description
None None No additional smoothing.
Spline Approximation SplineApproximation The contour is smoothed by a spline approximation.
Spline Interpolation SplineInterpolation The contour is smoothed by a spline interpolation.

Hidden Fields

updateMode

name: updateMode, type: Enum, default: AutoClear

Values:

Title Name
Off Off
Auto Update AutoUpdate
Auto Clear AutoClear

autoApply

name: autoApply, type: Bool, default: FALSE

apply

name: apply, type: Trigger

done

name: done, type: Trigger, persistent: no

emptyGroupBeforeGeneration

name: emptyGroupBeforeGeneration, type: Bool, default: FALSE

addCSOToGroupMode

name: addCSOToGroupMode, type: Enum, default: AddToGroupByLabel

Values:

Title Name
None AddToGroupNone
By Label AddToGroupByLabel
By Id AddToGroupById

addCSOToGroupWithId

name: addCSOToGroupWithId, type: Integer, default: -1