Purpose

The module WEMVascularSystem visualizes vascular trees by constructing a polygonal surface along the measured edges with certain, local or global radii.

The polygonal surface is generated as a WEM so it can be processed further with existing modules or even on C++ level very easily.

Usage

Just attach a valid VesselGraph (that is a Base structure ‘Graph’ which contains VesselEdges and VesselNodes) to the module’s input. For the output, attach at least a SoWEMRenderer for converting the WEM structure into a displayable Open Inventor scene. Of course, other processing modules of the WEM library may be used, for example WEMSmooth WEMDemergePatches

Details

The module converts the radii of the skeletons of the graph’s edges into locally smoothed functions on base of a Convolution Surfaces approach. Then, a recursive marching cubes algorithm is applied to polygonize the resulting implicit surface; the result is stored and outputted as a WEM structure for further processing.

The labels of the skeletons of the original Graph are stored in the spatially associated WEMNodes for a later coloring of the surface on base of a LUT (which needs to be attached to a SoWEMRenderer); also, these stored labels may be used for disassembling the tree structure into sections with the same label (with the WEMDemergePatches module).

The module offers options to fine-tune the result, such as a smoothing of the skeletons’ positions and radii or a tapering optimization to reduce atrifacts in the association of skeleton labels to the WEMNodes.

Since the module is derived from WEMGenerator, it also offers a variety of parameters to use with other WEM modules, such as global coloring options.

Windows

Default Panel

../../../Modules/ML/MLWEMModules/mhelp/Images/Screenshots/WEMVascularSystem._default.png

Input Fields

The module has one input which needs to be of Base type ‘Graph’.

inputGraph

name: inputGraph, type: Graph(MLBase)

The input needs to be of type VesselGraph.

For accessing this object via scripting see the Scripting Reference: MLGraphWrapper.

input0

name: input0, type: Image

An optional distance image that encodes the desired iso-surface with distance 0 and has positive distances inside and negative distances outside. It should typically be smoothed with some kernel filter to gain smooth iso-surfaces.

Output Fields

The module has one output of type WEM.

outWEM

name: outWEM, type: WEM(MLBase)

An idealized surface of the vascular system described by the input graph.

For accessing this object via scripting see the Scripting Reference: MLWEMWrapper.

outGraph (hidden)

name: outGraph, type: Graph(MLBase)

Hidden output of the internally used graph. This is a copy of the input graph and is eventually smoothed. This is for testing!

For accessing this object via scripting see the Scripting Reference: MLGraphWrapper.

Parameter Fields

Visible Fields

Auto Apply

name: autoApply, type: Bool, default: TRUE

If checked, all parameter field changes lead to a re-computation.

see also WEMGenerator.autoApply

Update Mode

name: updateMode, type: Enum, default: AutoUpdate, deprecated name: autoUpdate

Defines how this module should react on any input field change.

see also WEMGenerator.updateMode

Apply

name: apply, type: Trigger

If pressed, the output WEM is computed anew.

see also WEMGenerator.apply

Clear

name: clear, type: Trigger

If pressed, the output WEM is cleared (made empty).

see also WEMGenerator.clear

Overwrite label and description

name: overwriteLabelDescription, type: Bool, default: FALSE

If checked, label and description strings are set in the output WEM to Label and Description.

see also WEMGenerator.overwriteLabelDescription

Label

name: label, type: String

Sets a label string to the output WEM.

see also WEMGenerator.label

Description

name: description, type: String

Sets a description string to the output WEM.

see also WEMGenerator.description

Num Smoothing Passes

name: numSmoothingPasses, type: Integer, default: 5

Sets the number of smoothing passes of the input graph before the surface is being generated.

Smoothing Factor

name: smoothingFactor, type: Float, default: 0.75, minimum: 0, maximum: 0.9

Sets a smoothing factor for the smoothing of the input graph before the surface is being generated.

Mode

name: radiusMode, type: Enum, default: Min

Defines the radius mode.

Values:

Title Name Description
Min Min Uses the stored ‘min’ radius. This is not necessarily the minimum radius, this is just a name.
Max Max Uses the stored ‘max’ radius. This is not necessarily the minimum radius, this is just a name.
Average Average Uses the average of Min and Max radii.
Fixed Fixed Uses a fixed radius with size Fixed.

Scale

name: radiusScale, type: Float, default: 0.85000002, minimum: 0.1, maximum: 2

Set a global scaling factor to the radius.

Fixed

name: radiusFixedSize, type: Float, default: 2, minimum: 0

Sets a fixed radius.

Voxel Size

name: voxelSize, type: Double, default: 1

Sets the size of the voxel used for interpolation of the graph if no reference image is used for clipping. This works only if Clip image extent is disabled. E.g, a value of 2 means the grid to interpolate the graph has a cell size of 2mm.

Clip image extent

name: clipping, type: Bool, default: TRUE

If checked, the graph is clipped inside the image extent.

Smoothness at Branchings

name: blendingStrength, type: Enum, default: Medium

Defines the smoothing function that is used for generating the surface, this function affects branchings the most.

Values:

Title Name Description
Low Low Sets a low smoothness at branchings.
Medium Medium Sets a medium smoothness at branchings.
High High Sets a high smoothness at branchings.

Polygonal Refinement

name: polygonalDensity, type: Enum, default: Low

Sets the polygonal refinement which is the scan resolution of the internal marching cubes algorithm.

Values:

Title Name Description
Low Low Sets a low resolution, fast but coarse.
Medium Medium Sets a medium resolution.
High High Sets a high resolution, slow but smooth.

Use Taper Optimization

name: useTaperOptimization, type: Bool, default: TRUE

If checked, the graph edges toward their branching nodes are being tapered. This reduces coloring artifacts at branchings.

Edge

name: taperEdgePercentage, type: Float, default: 0.1, minimum: 0, maximum: 1

Sets the percentage of the edge that is being tapered. E.g., a value of 0.1 means that the last 10% of the edge towards the branching is being tapered.

Radius

name: taperTargetRadius, type: Float, default: 0.60000002, minimum: 0, maximum: 1

Sets a taper radius, this works with Edge. E.g, a value of 0.6 means that the radius of the edge is being tapered to 60% of its original radius at the very end.

Generate Smooth Furcation Joins

name: generateSmoothFurcationJoins, type: Bool, default: TRUE

If checked, the module will produce smooth rims where vessel edges branch off with a different color.

Generate Locked Faces At Leaf Nodes

name: generateLockedFacesAtLeafNodes, type: Bool, default: FALSE

If checked, the module locks all faces at the leaf nodes of a vascular system.

Locked faces are not reduced by WEMReducePolygons, they are not smoothed by WEMSmooth, and their normals are not re-computed.

Radius Min

name: distanceImageRadiusMin, type: Double, default: 5, minimum: 0

Selects the minimum vessel radius at which the distance image is used with Weight Min strength.

Radius Max

name: distanceImageRadiusMax, type: Double, default: 20, minimum: 0

Selects the maximum vessel radius at which the distance image is used with Weight Max strength.

Weight Min

name: distanceImageWeightMin, type: Double, default: 0, minimum: 0, maximum: :field:`distanceImageWeightMax`

Selects the minimum weight of the distance image, this is used below the Radius Min radius.

Weight Max

name: distanceImageWeightMax, type: Double, default: 1, minimum: :field:`distanceImageWeightMin`, maximum: 1

Selects the maximum weight of the distance image, this is used above the Radius Max radius.

Hidden Fields

isProcessing

name: isProcessing, type: Bool, persistent: no

see WEMGenerator.isProcessing

elapsedTime

name: elapsedTime, type: Float, persistent: no

see WEMGenerator.elapsedTime

id

name: id, type: Integer, default: 0

see WEMGenerator.id

shouldComputeNormals

name: shouldComputeNormals, type: Bool, default: FALSE

see WEMGenerator.shouldComputeNormals