TensorTractography¶
-
MLModule
¶ genre FiberTracking
authors Jan Klein
,Olaf Konrad
,Mathias Schlüter
package FMEwork/Release
dll MLFiberTrackingStable
definition MLFiberTrackingStable.def see also DiffusionTensorAnalysis
keywords DTI
,tensor
,fiber
,fiber
,tracking
Purpose¶
The module TensorTractography
allows for fiber tracking and has been renamed from TensorTractographyGlobal (the old name was misleading as the module uses only a global virtual volume for accessing voxels very efficiently, but no global fiber tracking has been performed).
You may choose between two different algorithms:
- TEND (corresponding paper: White Matter Tractography Using Tensor Deflection)
- MeVis fiber tracking algorithm (corresponding paper: White matter lesion phantom for diffusion tensor data and its application to the assessment of fiber tracking).
Usage¶
Connect DTI vector or DTI tensor field (which is the output of the DiffusionTensorAnalysis module) and a list of XMarkers as seed region to start the tracking. Optional, connect a FA map to increase the speed of tracking at the second image input.
Details¶
The input images are scanned page wise, using the standard ML procedure. To convert own data to the format the module can process and visualize, have a look at the conversion below:
normFactor = 1.0 / max(eigval(i))
e(0,0) = eigval(0) * eigenvec(0,0) * normFactor
e(0,1) = eigval(0) * eigenvec(0,1) * normFactor
e(0,2) = eigval(0) * eigenvec(0,2) * normFactor
e(1,0) = eigval(1) * eigenvec(1,0) * normFactor
e(1,1) = eigval(1) * eigenvec(1,1) * normFactor
e(1,2) = eigval(1) * eigenvec(1,2) * normFactor
e(2,0) = eigval(2) * eigenvec(2,0) * normFactor
e(2,1) = eigval(2) * eigenvec(2,1) * normFactor
e(2,2) = eigval(2) * eigenvec(2,2) * normFactor
Now you have the eigenvectors scaled by their eigenvalue, but normalized in a way that the longest eigenvector yields length == 1
. This normalization is optional. However, if you also would like to visualize the tensor or vector field using, e.g., SoTensorFieldVis, you may consider that the coloring scheme relies on the eigenvectors’ coordinates, longer vectors may result in an all-white tensor glyph (RGB capped at 1). The built-in color coding uses a simple RGB = |X||Y||Z|
.
Filling the u-dimension:
u[0] = unsigned int((e(0,0) + 1.0) * 32767)
u[1] = unsigned int((e(0,1) + 1.0) * 32767)
u[2] = unsigned int((e(0,2) + 1.0) * 32767)
u[3] = unsigned int((e(1,0) + 1.0) * 32767)
u[4] = unsigned int((e(1,1) + 1.0) * 32767)
u[5] = unsigned int((e(1,2) + 1.0) * 32767)
u[6] = unsigned int((e(2,0) + 1.0) * 32767)
u[7] = unsigned int((e(2,1) + 1.0) * 32767)
u[8] = unsigned int((e(2,2) + 1.0) * 32767)
Input Fields¶
Parameter Fields¶
Field Index¶
Apply : Trigger |
Direction Jitter : Float |
Timing in seconds : Double |
Auto apply : Bool |
Main Vector Weighting : Float |
Tractography Algorithm : Enum |
Auto update : Bool |
Max. Curvature : Float |
Use averages for direction and curvature : Bool |
Average Curvature Weighting : Float |
Max. Length : Float |
Use curvature for tracking : Bool |
Average Direction Weighting : Float |
Min. Value : Float |
Use curvature step length : Bool |
Check anisotropy : Bool |
progress : Float |
Use moving averages : Bool |
Check curvature : Bool |
Scale with Curvature : Bool |
Use shape for tensor interpolation : Bool |
Check length : Bool |
Status : String |
Window Length : Float |
Clear : Trigger |
Step Length : Float |
Visible Fields¶
Auto apply¶
-
name:
autoApply
, type:
Bool
, default:
TRUE
¶ If checked, any parameter changes causes the module to compute anew.
Auto update¶
-
name:
autoUpdate
, type:
Bool
, default:
TRUE
¶ If checked, the module computes anew on any input change.
Tractography Algorithm¶
-
name:
tractographyMode
, type:
Enum
, default:
Mevis
¶ Defines the used tractography algorithm.
Values:
Title | Name |
---|---|
Tend | TEND |
Mevis | Mevis |
Min. Value¶
-
name:
stopAnisotropy
, type:
Float
, default:
0.5
, minimum:
0
, maximum:
1
¶ Sets a minimum anisotropy value for terminating the tracking of a fiber.
Check anisotropy¶
-
name:
shouldStopAnisotropy
, type:
Bool
, default:
FALSE
¶ If checked, the module uses the
Min. Value
value for terminating the tracking.
Window Length¶
-
name:
windowLength
, type:
Float
, default:
2
¶ Sets a window length of statistical analysis of a fiber while tracking.
Max. Curvature¶
-
name:
stopCurvature
, type:
Float
, default:
0.5
, minimum:
0
, maximum:
100
¶ Sets the maximum curvature of a fiber as a terminating condition.
Check curvature¶
-
name:
shouldStopCurvature
, type:
Bool
, default:
FALSE
¶ If checked, the curvature of a fiber is used as a terminating condition.
Max. Length¶
-
name:
stopLength
, type:
Float
, default:
300
, minimum:
0
, maximum:
1000
¶ Sets the maximal length of a fiber in mm as a termination condition.
Check length¶
-
name:
shouldStopLength
, type:
Bool
, default:
TRUE
¶ If checked, the module uses the fiber length as a terminating condition.
Use moving averages¶
-
name:
useAveragesForStop
, type:
Bool
, default:
TRUE
¶ If checked, the module uses local averages in a moving window for computing terminating conditions.
Use averages for direction and curvature¶
-
name:
useAverages
, type:
Bool
, default:
FALSE
¶ If checked, the module uses averages for direction and curvature computation.
Average Direction Weighting¶
-
name:
aveDirWeighting
, type:
Float
, default:
0
, minimum:
0
, maximum:
1
¶ This factor weights the average direction for calculating the next position.
Average Curvature Weighting¶
-
name:
aveCurvWeighting
, type:
Float
, default:
1
, minimum:
0
, maximum:
1
¶ This factor weights the average curvature for calculating the next position.
Use curvature step length¶
-
name:
useCurvStepLength
, type:
Bool
, default:
FALSE
¶ If checked, the curvature at the world position determines the step length of the tracking algorithm.
Use curvature for tracking¶
-
name:
useCurvature
, type:
Bool
, default:
TRUE
¶ If checked, the curvature at the world position is used in the tracking dynamics.
Scale with Curvature¶
-
name:
useCurvatureWeighting
, type:
Bool
, default:
FALSE
¶ If checked, the tensor shape at the world position is used for scaling the main vector weight.
Use shape for tensor interpolation¶
-
name:
useShapeForInterpolation
, type:
Bool
, default:
FALSE
¶ If checked, the tensor shape at a voxel position is used for scaling the weights for interpolation.
Main Vector Weighting¶
-
name:
mainVectorWeighting
, type:
Float
, default:
0
, minimum:
0
, maximum:
1
¶ This factor allows for blending between the tensor deflection method (TEND) and the streamline tracking technique (STT): 0=TEND, 1=STT.