Purpose

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

Usage

Simply attach a valid Graph (a Base structure that contains VesselEdge and VesselNode) to the module’s input.

For the output, attach at least one SoWEMRenderer to convert the WEM structure into a displayable Open Inventor scene. Other processing modules from the WEM library, such as WEMSmooth or WEMDemergePatches, may also be used.

Details

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

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

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

Since the module is derived from WEMGenerator.h, it also offers a variety of parameters to use with other WEM modules, including 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 isosurface with distance 0 and has positive distances inside and negative distances outside. It should typically be smoothed with some kernel filter to gain a smooth isosurfaces.

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

When pressed, the output WEM is computed anew.

see also WEMGenerator.apply

Clear

name: clear, type: Trigger

When 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 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 generated.

Mode

name: radiusMode, type: Enum, default: Min

Defines the radius mode.

Values:

Title Name Description
Min Min Uses the stored ‘min’ radius. This does not necessarily represent the minimum radius; it is simply a name.
Max Max Uses the stored ‘max’ radius. This does not necessarily represent the maximum radius; it is simply 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

Sets 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 when no reference image is used for clipping.

This only works if Clip image extent is disabled. For example, a value of 2 means the grid for interpolating the graph has a cell size of 2 mm.

Clip image extent

name: clipping, type: Bool, default: TRUE

If checked, any part of the graph that exceeds the image extent is clipped to fit within it.

Smoothness at Branchings

name: blendingStrength, type: Enum, default: Medium

Defines the smoothing function used for generating the surface; this function has the greatest effect on branchings.

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 represents 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 leading to their branching nodes are tapered. This reduces coloring artifacts at the branchings.

Edge

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

Sets the percentage of the edge that is tapered.

For example, a value of 0.1 means that the last 10% of the edge leading to the branching is tapered.

Radius

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

Sets a taper radius; this works with Edge.

For example, a value of 0.6 means that the radius of the edge is 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 seams where vessel edges branch off, with these edges displaying a different color than the stem.

Generate Locked Faces At Leaf Nodes

name: generateLockedFacesAtLeafNodes, type: Bool, default: FALSE

If checked, the module locks all faces generated for 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 recomputed.

Radius Min

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

Sets the minimum vessel radius at which the distance image is used with a strength of Weight Min.

Radius Max

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

Sets the minimum vessel radius at which the distance image is used with a strength of Weight Max.

Weight Min

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

Sets the minimum weight of the distance image; this is used for radii below the Radius Min.

Weight Max

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

Sets the maximum weight of the distance image; this is used for radii above the Radius Max.

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