FuzzyConnectDistance

MLModule
genre Fuzzy
author MeVis Medical Solutions AG
package MeVisLab/Standard
dll MLFuzzy
definition MLFuzzy.def
see also ContourManager, FuzzyCluster
keywords connectedness, segmentation, HCC, tumor, vessels, bones

Purpose

The module FuzzyConnectDistance provides a segmentation algorithm based on Fuzzy Connectedness.

The algorithm can be extended by a property based on the distance of image elements to the center of the object to be segmented while calculating membership values. This version is conceived for spherical objects and objects that do not differ much from the background.

Starting from a seed point to be placed in the object of interest or from a vector drawn as the object’s diameter, the algorithm starts to calculate the membership values of the voxels in the object of interest (OOI). For the computation, mean gray values have to be provided. There are several parameters to help shortening the calculation. After the segmentation is done, the result can be manipulated by changing the threshold for the memberships to obtain an optimal result.

The distance-based method is only a feature but has not to be used. Turning the option off provides the original Fuzzy Connectedness algorithm.

Usage

Preprocessing

First you have to provide the following values: the Mean Object Value , its Stdev Object Value, the Mean Gradient and its Stdev Gradient.

This can be done manually or by drawing a contour to let the object values be calculated automatically and putting some markers at the border of the OOI to calculate the gradient to objects outside of it. Another possibility is to draw a vector in the object of interest with the index 0 and then the mean gray value will be calculated considering the points inside the circle defined by the diameter. Moreover, the radius is stored to be able to calculate distance-based membership values.

Calculation

At least one seed point has to be placed in the OOI before starting the calculation by pressing the Calculate button. To stop the calculation manually you can press the Stop button.

Postprocessing

To manipulate the result you can move the slider Selection

Windows

Default Panel

../../../Modules/ML/MLFuzzy/mhelp/Images/Screenshots/FuzzyConnectDistance._default.png

Input Fields

input0

name: input0, type: Image

The scalar input image.

inputMarker

name: inputMarker, type: XMarkerList(MLBase)

A marker list. Only for the calculation of mean gray values.

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

contour

name: contour, type: SEGContourList(MLBase)

A contour. Only for the calculation of mean gray values.

inputMarkersVol

name: inputMarkersVol, type: XMarkerList(MLBase)

A marker list, supplying drawn vectors.

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

Output Fields

output0

name: output0, type: Image

The output result as a float image.

The background is set to 0 and the values in the segmented region are between 0 and 1 depending on their membership values in the OOI.

Parameter Fields

Field Index

acceptedMarkerType: Integer Mean Background: Double Slice: Integer
Calc Mean Gray Value: Trigger Mean Gradient: Double Status: String
calcCounter: Double Mean Object Value: Double Stdev Gradient: Double
Calculate: Trigger Neighborhood: Enum Stdev Object Value: Double
calcVolume: Trigger noSeeds: Integer Stop: Trigger
Distance Weigth: Double Overflow Limit (Voxel): Integer Use (buckets): Bool
ImageMax: Double Per slice: Bool Use (distanceOn): Bool
ImageMin: Double Radius Weight: Double Value: Double
Lower Limit: Double Reset: Trigger volume: Double
maxSize: Integer Selection: Double Weight Object: Double

Visible Fields

Calculate

name: calculate, type: Trigger

If pressed, a new calculation is started.

After having stopped by pressing Stop, the calculation can be resumed by pressing Calculate again.

Slice

name: currentSlice, type: Integer, default: 0, minimum: 0, maximum: :field:`maxSize`

Sets the slice on which the calculation should be done.

Has only an effect if Per slice is checked, otherwise, the calculation is performed on each slice.

Per slice

name: perSlice, type: Bool, default: FALSE

If checked, the slice to calculate on can be chosen with Slice.

Selection

name: threshold, type: Double, default: 0.5, minimum: 0, maximum: 1

Sets the threshold for membership.

Can be used after the calculation is done to manipulate the result.

Weight Object

name: weight, type: Double, default: 1, minimum: 0, maximum: 1

Sets the weight of the object value in the calculation.

The weight of the gradient is 1 - Weight Object.

Lower Limit

name: calcThresh, type: Double, default: 0, minimum: 0, maximum: 1

Sets the membership value that the calculation should be pursued.

Should be greater than zero to avoid long calculation time.

Mean Object Value

name: meanValue, type: Double, default: 0, minimum: :field:`ImageMin`, maximum: :field:`ImageMax`

Sets the mean object value.

Stdev Object Value

name: stdDevValue, type: Double, default: 0, minimum: :field:`ImageMin`, maximum: :field:`ImageMax`

Sets the standard deviation of the mean object value.

Mean Gradient

name: meanGradient, type: Double, default: 0, minimum: :field:`ImageMin`, maximum: :field:`ImageMax`

Sets the mean gradient to objects outside the OOI.

This parameter helps finding edges of the OOI.

Stdev Gradient

name: stdDevGradient, type: Double, default: 0, minimum: :field:`ImageMin`, maximum: :field:`ImageMax`

Sets the standard deviation of the gradient.

Calc Mean Gray Value

name: seeds, type: Trigger

If pressed, the object and gradient values and their standard deviation are calculated automatically.

Use this after tracing a contour and placing markers at the border of the OOI.

Stop

name: stop, type: Trigger

If pressed, the calculation is halted.

The calculation can be resumed by pressing Calculate.

Reset

name: reset, type: Trigger

If pressed, the segmentation result is removed.

If pressed again, the calculation is being started from the beginning.

Value

name: connect, type: Double, default: 1

Shows for which membership value the calculation has been done.

Mean Background

name: meanBack, type: Double, minimum: :field:`ImageMin`, maximum: :field:`ImageMax`, persistent: no

Sets the mean background value.

Status

name: status, type: String, persistent: no

Shows the status of the module.

Overflow Limit (Voxel)

name: numberOfBucketElements, type: Integer, default: 100, minimum: 20

Sets the maximum number of the internally used buckets.

If that maximum number is reached, the calculation is stopped.

Use (buckets)

name: buckets, type: Bool, default: FALSE

If checked, the field Overflow Limit (Voxel) can be used.

Use (distanceOn)

name: distanceOn, type: Bool, default: FALSE

If checked, the distance to the center of the object is included into the calculation of membership values.

Distance Weigth

name: weightDistance, type: Double, default: 0.3, minimum: 0, maximum: 1

Sets the weighting between gray values and distance of a voxel from the center of the OOI.

Radius Weight

name: weightRadius, type: Double, default: 0.2, minimum: 0, maximum: 1

Sets a percentage that is being subtracted from the radius derived from a drawn diameter.

Neighborhood

name: neighbourhood, type: Enum, default: 4/6 Neighbours

Defines the considered neighborhood for the algorithm.

Values:

Title Name Description
4/6 Neighbours 4/6 Neighbours 2D neighborhood.
8/26 Neighbours 8/26 Neighbours 3D neighborhood.

Hidden Fields

calcCounter

name: calcCounter, type: Double, persistent: no

maxSize

name: maxSize, type: Integer, default: 0

volume

name: volume, type: Double, default: 0

calcVolume

name: calcVolume, type: Trigger

acceptedMarkerType

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

noSeeds

name: noSeeds, type: Integer, default: 0

ImageMin

name: ImageMin, type: Double, default: 0

ImageMax

name: ImageMax, type: Double, default: 4095