Available Features

Browse CamiTK extension catalog

Arbitrary Slice
This extension gathers actions for manipulating the arbitrary slice in a 3D image.
1 action

This action allows user to manually modify the orientation and translation of the arbitrary slice.

arbitrary slice arbitrary modify angles angle
Parameters
Name Type Default Description
Translation double 50 Current translation inside the image
X Angle int (degree) 0 X Angle
Y Angle int (degree) 0 Y Angle
Z Angle int (degree) 0 Z Angle
Visible Viewer enum 5 Visible viewer in the main window
Average Voxel Values Tutorial Extension
Compute the average voxels value in the neiborhoods of the selected voxel
1 action

Compute the average voxels value in the neiborhoods of the selected voxel. Show results on the log console.

Neighborhood Voxel Value
Parameters
Name Type Default Description
Radius double (Number of Voxels) 5 The radius that defines the distance around which the average value is computed
Basic Mesh Processing Extension
This extension provides various basic actions for mesh component processing.
9 actions

Change the surface, wireframe or points colors of objects

Color

Change the rendering option (surface, wireframe, points, label...) of the selected mesh(es).

RenderingMode Label
Parameters
Name Type Default Description
Surface representation? bool false Allow the selected mesh(es) to be representated as a surface?
Wireframe representation? bool false Allow the selected mesh(es) to be representated as wireframes?
Points representation? bool false Allow the selected mesh(es) to be representated as with points?
Label representation? bool false Allow the selected mesh(es) to be representated with its label?
Glyph representation? bool false Allow the selected mesh(es) to have glyphs representation?
Normals representation? bool false Allow the selected mesh(es) to be representated with its normals?

Rigid transformation of Components

Transform Translate Rotate Scale

Pick a mesh to retrieve point/cell information from the mesh

Picking

Center current mesh component in the world coordinates. When applied this action moves the barycenter of the mesh at world coordinate (0,0,0). Does not consider any frame transformation.

Transform Translate
Parameters
Name Type Default Description
Mesh Center QVector3D QVector3D(0, 0, 0) Position of the center in the world coordinates (independent from current frame) before it was moved. If more than one mesh are selected, shows the last selected center.

Display basic mesh quality information (for more information: Knupp et al, The verdict geometric quality library).

Quality Distort Degenerated

This action generates a new volume image and converts the mesh into a volume representation (vtkImageData) where the foreground voxels are colored and the background voxels are black.

STE
Parameters
Name Type Default Description
Dimension QVector3D QVector3D(0, 0, 0) The dimension of the output volumic image
Origin QVector3D QVector3D(0, 0, 0) The origin frame position
Spacing QVector3D QVector3D(1, 1, 1) The spacing between each voxel
Output file QString The output filename

Compute normals of surface mesh.

normal surface

Extract the current selection

selection
Basic Picking Tutorial Extension
This is a basic picking tutorial/demo extension.
It contains two actions demonstrating one way to get information on mesh or images using picking (clicking on the object in the 2D/3D interactive viewers).
1 action

Tutorial action that retrieve pixel information from the image

Picking Image Processing
Basic Topology
This extension provides actions to build basic topology mesh.
2 actions

Build a regular grid

Build Grid
Parameters
Name Type Default Description
Simplex bool false Create a simplex mesh from the generated grid.
Network bool false Link all generated nodes to form a regular network.
Dimension X int 1 Number of nodes in the X direction (enter 0 for YZ 2D grid).
Dimension Y int 1 Number of nodes in the Y direction (enter 0 for XZ 2D grid).
Dimension Z int 1 Number of nodes in the Z direction (enter 0 for XY 2D grid).
Position X double 0 X coordinate of the grid origin.
Position Y double 0 Y coordinate of the grid origin.
Position Z double 0 Z coordinate of the grid origin.
Width double 1 Grid size in the X direction (node spacing in the X direction will be Width / Dimension X).
Height double 1 Grid size in the Y direction (node spacing in the Y direction will be Height / Dimension Y).
Depth double 1 Grid size in the Z direction (node spacing in the Z direction will be Depth / Dimension Z).

Build a sphere

Build Sphere
Parameters
Name Type Default Description
Center QVector3D QVector3D(0, 0, 0) This coordinate represents the center of the sphere.
By default this value is (0,0,0).
Radius double 0.5 This is the radius of the sphere.
The default value is 0.5.
Phi resolution int 8 This number represents the number of division between start phi and end phi on the sphere.
The phi divisions are similar to latitude lines on the earth.

The default phi resolution is 8
Theta resolution int 8 This number represents the number of division between start theta and end theta around the sphere.
The theta divisions are similar to longitude lines on the earth.
The higher the resolution the closer the approximation will come to a sphere and the more polygons there will be.

The default theta resolution is 8.
Change Image Orientation Extension
This extension can be used to test and get familiar with the frame environment.
1 action

This action re-orients a medical image according to Dicom RCS (Reference Coordinates System).

Dicom Orientation
Parameters
Name Type Default Description
Use Male Model bool true Use male or female model for image orientation illustration
Reset Image Origin bool true Reset the image frame so that the transform origin and the original origin are the same
No New Image bool false Do not create a new re-oriented image, but apply the transformations on the input image.
Component Properties Demo Extension
Extensions that manipulates component dynamic properties.
3 actions

Add a dynamic property to the currently selected component.

Dynamic Property Component
Parameters
Name Type Default Description
Name QString Name of the new property to add to the selection
Initial Value QString Initial value of the property
Description QString Dynamically <b>added</b> <i>property!</i> Description of the property
Unit QString Unit of Measurement of the property

Add lots of dynamic property to the currently selected component.

Dynamic Property Component
Parameters
Name Type Default Description
Bool Prop bool false This a normal bool property.
Note: Rich text description!
See also: CamiTK web page
Read Only Bool bool true This a read-only boolean
Bounded Int int 12 An integer bounded between 0 and 20
Double With Max double -10 A double with a max value of -4.2
Int With Single Step int -10 An integer with a single step of 5
Double With Single Step And Precision double 3.14159 A double with 5 decimals and a single step of 1.10-5
Int With Precision int 4 An integer with a precision set to 5 decimals: this should not affect it.
Read Only QVector3D QVector3D QVector3D(-4, 2, 0.1) A read-only QVector3D
QString Constrained by RegExp QString loweronly A QString contrained to lowercase characters only (no separators, numbers...)
Constrained QRect QRect A QRect constrained to (0,0,50,50)
Constrained QVector3D QVector3D QVector3D(1.1, 2.2, 3.3) A constrained QVector3D (not yet implemented)
Enumeration enum 3 An enum using different GUI strings

Demonstrates how to add an enum parameters in an action. Show the information on the log console.

Dynamic Property Enum
Parameters
Name Type Default Description
Auto Enum enum 0 An enum using different GUI strings
Custom Enum enum 0 An enum using different GUI strings
Clean Enum enum 0 An enum using different GUI strings
Crop Image
Crop a volume out of a 3D image.
1 action

This action crops a part of an image volume. Use the GUI to select the volume to crop. You can choose either the min and the max coordinates of each axis (i,j,k), i.e., 6 points or use only two extreme 3D points (the origin of parallelepiped and its opposite diagonal point).

Crop Volume Box Volume Of Interest Seed Point ROI
Developer Studio
Actions for Extension Developers.
9 actions

This action offers an interactive GUI to manages CamiTK extension files. If you don't have any CamiTK extension file yet, use the "New Extension File" action.

CamiTK File Extension Develop
Parameters
Name Type Default Description
CamiTK File QString The currently edited CamiTK extension file (full path)

Create a new CamiTK extension files from scratch. If you already have a CamiTK extension file, use the "Open Extension File" action.

CamiTK File Extension Develop

Load all the CamiTK extensions that are currently registered by the user. This list contains the currently valid extensions that were registered (imported) in the application settings.

CamiTK File Extension Develop

Unload all the CamiTK extensions that are currently registered by the user. This will remove them from memory, but not unregister them (they will be load again during the next launch). This requires a restart.

CamiTK File Extension Develop

Choose a CamiTK Extension File to register, i.e., import in the application settings so that it will always be available when you launch the application.
Note that if you move the CamiTK Extension File, you'll have to register it again.

CamiTK File Extension Develop Register
Parameters
Name Type Default Description
CamiTK File QString The CamiTK extension file (full path) to register (import).

Open the given extension in Visual Studio Code or Codium

CamiTK File Extension Develop
Parameters
Name Type Default Description
CamiTK File QString The CamiTK extension file (full path) that will set the directory path to open in the IDE.

Unregister the given extension from the application settings so that it will not be available automatically anymore when you launch the CamiTK application.
This is is the opposite to registering the extension.

CamiTK File Extension Develop
Parameters
Name Type Default Description
CamiTK File QString The CamiTK extension file (full path) that will unregistered.

Rebuild and reload the given extension. This requires a restart.

CamiTK File Extension Develop
Parameters
Name Type Default Description
CamiTK File QString The CamiTK extension file (full path) that will be rebuild and reloaded.

Set the always verify or rebuild option. If this option is on: - Python virtual environment is systematically verified and missing package are installed to satisfy requirements - C++ extensions are systematically rebuild when loaded. This might increase the startup time but ensure the - Python virtual environment is valid - C++ last available source code version is used

CamiTK File Extension Develop
Edit Application Level Actions
This extension provides various actions to manipulate selection and paths (select/remove last instantiated, set path to test data, clear selection...)
4 actions

Select the last top level component that was instantiated

Select Component

Remove the last top level component that was instantiated without saving it

Delete Component

Clear the list of selected item

Clear Selection

Set the working directory path to the test data dir (useful for test purpose)

Path Test TestData
File Application Level Actions
This extension provides various actions to manipulate components at the application level (open, close, save...)
10 actions

Open data (component) from a file

Open

Open data (component) from a given file

Open
Parameters
Name Type Default Description
File Name QString The name of the file to open.

Open a CamiTK workspace from a given file

Open Workspace
Parameters
Name Type Default Description
File Name QString The name of the file to open.

Save all the top-level of the selected components

Save

Save the currently selected data under a different filename or format

Save As

Saves all the currently loaded data

Save All

Save the workspace

Save Workspace

Close the currently selected components

Close

Close all components, prompting for additional information if needed

Close

Exit the application, prompting for additional information if needed

Quit Application Exit Application
Frames Transformations
This extension provides actions to manipulate Frames and Transformations for a component
7 actions

Sets the anatomical orientation information for a given Frame. This allows CamiTK to display the correct letters (R/L, I/S, A/P) or even custom ones for each axis, and to correctly orient the camera in the Axial/Sagittal/Coronal orientations

orientation anatomy frame
Parameters
Name Type Default Description
Data Image Frame bool false Set the information on the data frame (for ImageComponent) instead of the (main) frame of the Component
Axis enum 0
Direction enum 0
Label QString
Orientation enum 0

Edit the selected Transformation. This action allows one to set directly the matrix values, to apply a rotation or a translation to the current value.

transformation matrix translation rotation

Show/Hide the 3D axes representation of the frame of reference of the selected component, i.e., its local coordinate system.

Frame Of Reference Coordinates Visualization
Parameters
Name Type Default Description
Show Frame bool false Show/Hide the component frame in the 3D viewer.

Add a new Transformation between two frames

transformation
Parameters
Name Type Default Description
Origin Frame enum 0 Frame of origin for the new Transformation
Destination Frame enum 0 Destination Frame of reference for the new Transformation

Remove a Transformation if possible (e.g. not owned by any object outside TransformationManager)

transformation

Reset the Transformation of a Component: the Frame of the input Component is set to a new independent Frame. You can then add a Transformation between the new Frame and another one to define how it is related to other Components

frame transformation

Sets the Frame/Frames of the input Component from the Frame/Frames of another Component

frame transformation
Parameters
Name Type Default Description
Source Component enum 0 Component that will be used to copy Frame(s) from.
Main Frame Only enum 0 Only used if target and source Component are ImageComponents: choose whether to copy only the main Frame, or to copy all Frames and Transformations of the source Image.
Hard-Coded Pipeline of Actions
Demo that show how to programmatically apply two actions from inside a third action.
1 action

Demonstrate how to call one or more actions from another action (that is, implement a hard-coded action pipeline without modifying anything of the called actions).

Pipeline
Parameters
Name Type Default Description
Resample Factor double (factor) 0.5 The resample factor to use when applying the Resample action
Help Application Level Actions
This extension provides various help actions at the application level (about, show console...)
4 actions

Toggle the redirection console window that shows log and std output.

Console Terminal Show Console Log

Show a little dialog about the application

About

Change Language with a given .qm file

Internationalization
Parameters
Name Type Default Description
Language Selected QString Language for the User Interface
Flag File Name QString The corresponding flag image file name

Play along with logger parameters: level and other specifications.
Note: This action does only modify the log interaction temporarily. Please use the application preference dialog or the console tool buttons to save the logger parameter in settings.

Log
ITK Filters
This extension implements ITK Filters on image volumes. See Chapter 6 of "The ITK Software Guide" Second edition for more information about ITK Filters.
14 actions


The Canny edge detector is an edge detection operator that uses a multi-stage algorithm to detect a wide range of edges in images.
The filter steps are : * Preprocessing noise reduction using a gaussian convolution filtering. * Finding the intensity gradient of the image * Non-maximum suppression * Tracing edges through the image and hysteresis thresholding It was developed by John F. Canny in 1986. (source: Wikipedia).
This filter is widely used for edge detection since it is the optimal solution satisfying the constraints of good sensitivity, localization and noise robustness. (source: ITK Developer's Guide).

canny Edge Detection Contours
Parameters
Name Type Default Description
Keep original voxel type? bool true Does the output image have the same voxel type as the input one?
Variance double 2 The variance is used in the gaussian preprocessing step. The higher the variance is, the less the edges detection will be noise sensitive.
Upper threshold double 0 The upper threshold is used at step 3 to determine whether a voxel belongs an edge or not. Above, the voxel is detected as an edge. Below and upper the low threshold, the voxel is accepted if it is connected to an edge voxel neighbor.
Lower threshold double 0 The lower threshold is used at step 3 to determine whether a voxel belongs an edge or not. Above, and under the upper threshold the voxel is detected as an edge if it is connected to an edge voxel neighbor. Below, the voxel is rejected.


A 2D or 3D edge detection using the Sobel operator.
This filter uses the Sobel operator to calculate the image gradient and then finds the magnitude of this gradient vector. The Sobel gradient magnitude (square-root sum of squares) is an indication of edge strength..

Sobel Edge Detection Contours
Parameters
Name Type Default Description
Keep original voxel type? bool true Does the output image have the same voxel type as the input one?


The magnitude of the image gradient is extensively used in image analysis, mainly to help in the determination of object contours and the separation of homogeneous regions.
The Gradient Magnitude filter computes the magnitude of the image gradient at each pixel location using a simple finite differences approach. (source: ITK Developer's Guide)

Gradient Derivative Edge Detection Contours


Differentiation is an ill-defined operation over digital data.
In practice it is convenient to define a scale in which the differentiation should be performed. This is usually done by preprocessing the data with a smoothing filter.

It has been shown that a Gaussian kernel is the most choice for performing such smoothing. By choosing a particular value for the standard deviation (sigma) of the Gaussian, an associated scale is selected that ignores high frequency content, commonly considered image noise.

This filter computes the magnitude of the image gradient at each pixel location.

The computational process is equivalent to first smoothing the image by convolving it with a Gaussian kernel and then applying a differential operator.

The user selects the value of sigma. Internally this is done by applying an IIR filter that approximates a convolution with the derivative of the Gaussian kernel. Traditional convolution will produce a more accurate result, but the IIR approach is much faster, especially using large sigmas (Deriche1990,Deriche1993).

(source: ITK Developer's Guide)

Gradient Derivative Edge Detection Contours Smoothing
Parameters
Name Type Default Description
Standard deviation double 3 The standard deviation (sigma) is used as a parameter of the Gaussian convolution kernel. The higher the deviation is, the blurer the resulting image will be.


This filter is used for computing the partial derivative of an image.


Choose the order of the derivative:

  • Zero order: no derivation
  • First order derivative
  • Second order derivative
Choose the direction of the derivative:
  • Derivative along X axis
  • Derivative along Y axis
  • Derivative along Z axis

Derivative Edge Detection Contours
Parameters
Name Type Default Description
Keep original voxel type? bool true Does the output image have the same voxel type as the input one?
Derivative order enum 0 The derivative order of the partial derivative along the selected direction (x, y, z).
Direction enum 0 The direction of the partial derivative.


This filter computes the Laplacian of a scalar-valued image.

The Laplacian is an isotropic measure of the second spatial derivative of an image.

The Laplacian of an image highlights regions of rapid intensity change and is therefore often used for edge detection. Often, the Laplacian is applied to an image that has first been smoothed with a Gaussian filter in order to reduce its sensitivity to noise.

(source: ITK Developer's Guide)

Derivative Edge Detection Contours
Parameters
Name Type Default Description
Keep original voxel type? bool true Does the output image have the same voxel type as the input one?


Computes the Laplacian of Gaussian (LoG) of an image by convolution with the second derivative of a Gaussian.

This filter is implemented using the recursive gaussian filters.

Gradient Derivative Edge Detection Contours Smoothing
Parameters
Name Type Default Description
Keep original voxel type? bool true Does the output image have the same voxel type as the input one?
Standard deviation double 3 The standard deviation (sigma) is used as a parameter of the Gaussian convolution kernel. The higher the deviation is, the blurer the resulting image will be.


This filter sharpens an image using a Laplacian filter .
Laplacian Sharpening highlights regions of rapid intensity change and therefore highlights or enhances the edges. The result is an image that appears more in focus.

Derivative Edge Detection Contours Sharpen


The mean filter is commonly used for noise reduction.

This filter computes the value of each output pixel by finding the statistical mean of the neighborhood of the corresponding input pixel. The following figure illustrates the local effect of the mean filter in 2D case.
______________
| 28 | 26 | 50 |
|-----|-----|------|
| 27 | 25 | 29 | -> 30.22 -> 30
|-----|-----|------|
| 25 | 30 | 32 |
--------------------
Note that this algorithm is sensitive to the presence of outliers in the neighborhood.

The parameters are the size of the neighborhood along X, Y and Z directions.
The value on each direction is used as the semi-size of a rectangular box. For example in 2D a size of 1 in X direction and 2 in Y direction results in a 3x5 neighborhood.

Mean Smoothing Neighborhood Filter
Parameters
Name Type Default Description
Half neighborhood size along X int 1 Half the size of the X direction of the neighborhood taken into account for the mean computation. For instance, a value of 2 will create a windows of size 4 along the X direction.
Half neighborhood size along Y int 1 Half the size of the Y direction of the neighborhood taken into account for the mean computation. For instance, a value of 2 will create a windows of size 4 along the Y direction.
Half neighborhood size along Z int 1 Half the size of the Z direction of the neighborhood taken into account for the mean computation. For instance, a value of 2 will create a windows of size 4 along the Z direction.


The median filter is commonly used as a reobust approach for noise reduction.
This filter is particularly efficient against salt-and-pepper noise. In other words, it is robust to the presence of gray-level outliers.
This filter computes the value of each output pixel as the statistical median of the neighborhood of values around the corresponding input pixel. The following figure illustrates the local effect of this filter in 2D case.
_____________
| 28 | 26 | 50 |
|----|-----|----|
| 27 | 25 | 29 | -> 28
|----|-----|----|
| 25 | 30 | 32 |
-----------------

The parameters are the size of the neighborhood along X, Y and Z directions. The value on each direction is used as the semi-size of a rectangular box. For example in 2D a size of 1 in X direction and 2 in Y direction results in a 3x5 neighborhood.

Median Smoothing Neighborhood Filter
Parameters
Name Type Default Description
Half neighborhood size along X int 1 Half the size of the X direction of the neighborhood taken into account for the mean computation. For instance, a value of 2 will create a windows of size 4 along the X direction.
Half neighborhood size along Y int 1 Half the size of the Y direction of the neighborhood taken into account for the mean computation. For instance, a value of 2 will create a windows of size 4 along the Y direction.
Half neighborhood size along Z int 1 Half the size of the Z direction of the neighborhood taken into account for the mean computation. For instance, a value of 2 will create a windows of size 4 along the Z direction.


Mathematical morphology has proved to be a powerful resource for image processing and analysis.

This filter implements classical mathematical morphology operators:

  • erosion
  • dilation
  • opening
  • closure

Morphology Operations Neighborhood Filter
Parameters
Name Type Default Description
Structuring element size int 1 The structuring element size 'n'' represents the dimension of the n x n x n voxels square used by the operator. For instance a 3 voxels size will indicate a 3x3x3 square.
Image scalar type enum 0 The image scalar type.
Type of operation enum 0 Select the desired morphological operation.

Blurring is the traditional apporach for removing noise from images. It is usually implemented in the form of a convolution with a kernel. One of the most commonly used kernels is the Gaussian.

The classical methode of smoothing an image by convolution with a Gaussian kernel has the drawback that it is slow when the standard deviation sigma of the Gaussian is large.

The Recursive IIR (Infinite Impulse Rewponse) implements an approximation of convolution with the Gaussian. In practice, this filter requires a constant number of operations for approximating the convolution, regardless of the sigma value.

Blur Smoothing Neighborhood Filter Convolution Gaussian
Parameters
Name Type Default Description
Variance double (Depending on the "Use Image Spacing", this value is in image spacing unit (usually mm) or number of pixels.) 1 The variance is an input parameter of the gaussian kernel. The higher the variance is, the blurer the resulting image will be.
Gaussian Type enum 0 Choose the type of kernel for the gaussian filtering
Use Image Spacing bool true The variance or standard deviation (sigma) will be evaluated as pixel units if this is off or as physical units if this is on.

Anisotropic diffusion methods are formulated to reduce noise (or unwanted detail) in images while preserving specific image features. For many applications, there is an assumption that light-dark transitions (edges) are interesting. Standard isotropic diffusion methods move and blur light-dark boundaries. Anisotropic diffusion methods are formulated to specifically preserve edges.

The numberOfIterations parameter specifies the number of iterations (time-step updates) that the solver will perform to produce a solution image. The appropriate number of iterations is dependent on the application and the image being processed. As a general rule, the more iterations performed, the more diffused the image will become.

The conductance parameter controls the sensitivity of the conductance term in the basic anisotropic diffusion equation. It affect the conductance term in different ways depending on the particular variation on the basic equation. As a general rule, the lower the value, the more strongly the diffusion equation preserves image features (such as high gradients or curvature). A high value for conductance will cause the filter to diffuse image features more readily. Typical values range from 0.5 to 2.0 for data like the Visible Human color data, but the correct value for your application is wholly dependent on the results you want from a specific data set and the number or iterations you perform.

The Gradient anisotropic diffusion implements an N-dimensional version of the classic Perona-Malik anisotropic diffusion equation for scal-valued images.

The Curvature anisotropic diffusion performs anisotropic diffusion on an image using a modified curvature diffusion equation (MCDE). MCDE does not exhibit the edge enhancing properties of classic anisotropic diffusion, which can under certain conditions undergo a negative diffusion, which enhances the contrast of edges. Equations of the form MCDE always undergo positive diffusion, with the conductance term only varying the stregth of that diffusion.

Edge Preserving Smoothing Blur Perona and Malik
Parameters
Name Type Default Description
Keep original image voxel type bool true Keep the original image voxel type ?
Number of iterations int 5 The more iterations, the more smoothing. Each iteration takes the same amount of time. If it takes 10 seconds for one iteration, then it will take 100 seconds for 10 iterations. Note that the conductance controls how much each iteration smooths across edges.
Conductance double 1 Conductance controls the sensitivity of the conductance term. As a general rule, the lower the value, the more strongly the filter preserves edges. A high value will cause diffusion (smoothing) across edges. Note that the number of iterations controls how much smoothing is done within regions bounded by edges.
Diffusion type enum 0 The type of diffusion to use.

Labels connected components of a binary image and order the labes with respect to the size of the connected components (i.e., the larges connected component has the label 1, the one a little smaller has the label 2, and so on...)

Neighborhood Filter Connected
Parameters
Name Type Default Description
Number of Connected Components QString ? The computed number of connected components computed by this filter. This property is read only and only updated after applying the action on a component.
Image Acquisition Action Extension
Generic Actions container for acquisition devices.
7 actions

initialize the acquisition device

start the 2D acquisition done with the device (i.e : running a acquisition in live mode...)

stop the 2D continuous acquisition performed by the device

start the 3D continuous acquisition performed by the device

stop the 3D continuous acquisition performed by the device

acquire one 2D ImageComponent by the device

acquire one 3D ImageComponent by the device

Image Segmentation using ITK
This extension implements ITK Segmentation Filters on image volumes. See Chapter 9 of The ITK Software Guide Second edition for more information about ITK Segmentation Filters.
3 actions

This filter creates a binary thresholded image that separates an image into foreground and background components.
The filter calculates the optimum threshold separating those two classes so that their combined spread (intra-class variance) is minimal (see http://en.wikipedia.org/wiki/Otsu%27s_method). Then the filter applies that threshold to the input image using an Itk binary fileter. The numberOfHistogram bins can be set for the Otsu Calculator. The insideValue and outsideValue can be set for the Itk binary filter. The filter produces a labeled volume.

The original reference is:
. Otsu, ''A threshold selection method from gray level histograms,'' IEEE Trans.Syst.ManCybern.SMC-9,62-66 1979.

Threshold Automatic Otsu
Parameters
Name Type Default Description
Inside Value int 0 The scalar type value assigned to voxels which have their scalar type BELOW the threshold value.
Outside Value int 255 The scalar type value assigned to voxels which have their scalar type ABOVE the threshold value.
Computed Threshold QString ? The computed threshold found by the Otsu filter. This property is read only and only updated after applying the action on a component.


Creates a new binary image depending on the initial voxel value:

  • If the initial value is between low and high thresholds (included), the new voxel value will be set to 255 (usually displayed as white)
  • Otherwise the new voxel value is set to 0 (usually displayed as black)

If you want to select all the voxels that have a specific value x, set both thresholds to the value x.

Threshold Manual Classification
Parameters
Name Type Default Description
Low Threshold double 128 Voxels which have a value strictly below Low Threshold will be set to 0 (usually displayed as black).
High Threshold double 255 Voxels which have a value strictly greater than High Threshold will be set to 0 (usually displayed as black).

This filter segments volume images using region growing approach. It starts from a seed point that is considered to be inside the object to be segmented. The pixels neighboring this seed point are evaluated to determine if they should also be considered part of the object. If so, they are added to the region and the process continues as long as new pixels are added to the region. For connected threshold filter, the criterion is based on the intensity of the neighboring pixels. They are considered as part of the object if theyr value is between a lower and an upper threshold.

Threshold Manal Classification Growing Region Seed Point Region Growing
MML Processing
Various actions for MML
2 actions

Generates a model from a mesh: mml, pml and corresponding lml are generated.

The current points selected by picking (Picked Selection) will be considered as fixed nodes.

Build Biomechanical Model
Parameters
Name Type Default Description
Selection Is Constrained bool true Use the current point selection to add a null displacement constraint to the model. If this is true, all the currently selected nodes will be fixed during the simulation
Gravity QVector3D (acceleration in m/s^2) QVector3D(-9.81, 0, 0) Direction of the simulated gravity, X- is the default
SOFA Only bool false Generate the model using only the SOFA simulator (without the help of MML

Show MML Simulation Dialog

Medical Image Viewer Visibility
This extension provides six actions to change the visibility of the viewers embedded in the Medical Image Viewer layout
6 actions

Show the Axial Viewer Only

Axial Viewer Slice

Show the Coronal Viewer Only

Coronal Viewer Slice

Show the Sagittal Viewer Only

Sagittal Viewer Slice

Show the 3D Viewer Only

3D Viewer Geometry

Show Classical Medical Image Viewer (Axial, Coronal, Sagittal and 3D in a 4 panels)

All Viewers Medical Image Viewer

Show the Arbitrary Slice Viewer Only

Arbitrary Slice Viewer Slice
Mesh Point Data Visibility
This extension shows how to show/hide mesh point data using a color scale
1 action

This action demonstrates how to show the point data on a color scale

VTK Point Data Color Scale Color Bar
Parameters
Name Type Default Description
Generation Method enum 0 How/What Point Data to Show. In this example, there are two ways to add synthetic point data:
  1. The generated point data have random values between 0 and 100
  2. The generated point data have the values of their point index
To show the point data, select the "Data" tab in the property editor and select the data you would like to display. Random generation point data are recreated each time.
Mesh Processing
This extension provides more advanced mesh processing algorithms.
17 actions

This action reduce the number of triangles in a triangle mesh, forming a good approximation to the original geometry.

The algorithm proceeds as follows. Each vertex in the mesh is classified and inserted into a priority queue. The priority is based on the error to delete the vertex and retriangulate the hole. Vertices that cannot be deleted or triangulated (at this point in the algorithm) are skipped. Then, each vertex in the priority queue is processed (i.e., deleted followed by hole triangulation using edge collapse). This continues until the priority queue is empty. Next, all remaining vertices are processed, and the mesh is split into separate pieces along sharp edges or at non-manifold attachment points and reinserted into the priority queue. Again, the priority queue is processed until empty. If the desired reduction is still not achieved, the remaining vertices are split as necessary (in a recursive fashion) so that it is possible to eliminate every triangle as necessary.

To use this object, at a minimum you need to specify the parameter Decimation percentage. The algorithm is guaranteed to generate a reduced mesh at this level as long as the following four conditions are met:

  • topology modification is allowed (i.e., the parameter Preserve topology is false);
  • mesh splitting is enabled (i.e., the parameter Splitting is true);
  • the algorithm is allowed to modify the boundaries of the mesh (i.e., the parameter Boundary vertex deletion? is true);
  • the maximum allowable error (i.e., the parameter Maximum error) is set to 1.0e+38f (default value).
Other important parameters to adjust are the Feature angle and Split angle parameters, since these can impact the quality of the final mesh.

Decimation Simplify
Parameters
Name Type Default Description
Decimation percentage int 90 Specify the desired reduction in the total number of polygons.
Because of various constraints, this level of reduction may not be realized. If you want to guarantee a particular reduction, you must turn off Preserve topology? and Boundary vertex deletion?, turn on Split mesh?, and set the Maximum error to its maximum value (these parameters are initialized this way by default).
Preserve topology? bool false Turn on/off whether to preserve the topology of the original mesh.
If on, mesh splitting and hole elimination will not occur. This may limit the maximum reduction that may be achieved.
Maximum error double 1e+38 Set the largest decimation error that is allowed during the decimation process.
This may limit the maximum reduction that may be achieved. The maximum error is specified as a fraction of the maximum length of the input data bounding box.
Feature angle double (Degrees) 15 Specify the mesh feature angle.
This angle is used to define what an edge is (i.e., if the surface normal between two adjacent triangles is >= FeatureAngle, an edge exists).
Split edge? bool true Turn on/off the splitting of the mesh at corners, along edges, at non-manifold points, or anywhere else a split is required.
Turning splitting off will better preserve the original topology of the mesh, but you may not obtain the requested reduction.
Split angle double (Degrees) 75 Specify the mesh split angle. This angle is used to control the splitting of the mesh.
A split line exists when the surface normals between two edge connected triangles are >= SplitAngle.
Boundary vertex deletion? bool true Turn on/off the deletion of vertices on the boundary of a mesh.
This may limit the maximum reduction that may be achieved.
Max triangles for 1 vertex int 0 If the number of triangles connected to a vertex exceeds Max triangles for 1 vertex, then the vertex will be split.

NOTE: the complexity of the triangulation algorithm is proportional to Degree^2.
Setting degree small can improve the performance of the algorithm.
Inflection ratio double 10 Specify the inflection point ratio.
An inflection point occurs when the ratio of reduction error between two iterations is greater than or equal to the InflectionPointRatio.

Merge duplicate points, and/or remove unused points and/or remove degenerate cells.

vtkCleanPolyData Clean vtkPolyData
Parameters
Name Type Default Description
Tolerance double (%) 1 Tolerance is given as a percentage of the bounding box
E.g. for a Tolerance value of 1.0, if points are closer than 1.0% of the bounding box dimensions, then they are merged.

Fill a surfacic mesh with regularly spaced nodes by creating new nodes inside the mesh.

Add Nodes
Parameters
Name Type Default Description
Points per bucket int (Number of points) 1 The number of points per bucket.
A bucket represent a group of points in the input mesh.
The less this number is, the higher the output mesh points density will be.
Randomize? bool true Randomize the position of the added points by +/- 0.5

Move the outside points along the normal in order to thicken a volumic mesh (works only with closed- centered- mesh).

Grow Thicken
Parameters
Name Type Default Description
Displacement double 1 The length of the displacement of the mesh toward its normals.

Extract Surface from Volumetric Mesh

ExtractSurface

Iterative Closest Point algorithm between two mesh.
At least two mesh components must be selected :

  • The first one is the source mesh (the one to be registered)
  • The second one is the target mesh

Mesh Processing CPI
Parameters
Name Type Default Description
Maximum Number Of Iterations int 50 The maximum number of iterations of the ICP algorithm.
Maximum Number Of Landmarks int 200 The maximum number of landmarks sampled in your dataset. If your dataset is dense, then you will typically not need all the points to compute the ICP transform. The default is 200.
Distance Mesure Type enum 0 The distance mesure type used by the ICP algorithm. Specify the mean distance mode. The RMS mode is the square root of the average of the sum of squares of the closest point distances. The Absolute Value mode is the mean of the sum of absolute values of the closest point distances.
Transform Type enum 1 The landmark transformation type used by the ICP agorithm. Set the number of degrees of freedom to constrain the solution to: Rigidbody (rotation and translation only), Similarity (rotation, translation and isotropic scaling) or Affine (collinearity is preserved, ratios of distances along a line are preserved.
Match Centroid First bool false Starts the process by translating source centroid to target centroid.
Check Mean Distance bool false Force the algorithm to check the mean distance between two iterations. This is slower but generally more accurate.
Maximum Mean Distance double 0.01 The maximum mean distance between two iterations. If the mean distance is lower than this, the convergence stops.

Invert the mesh faces

Inside Out Normal Flip

This filter adjusts point positions using Laplacian smoothing.
It makes the cells better shaped and the vertices more evenly distributed.
The effect is to "relax" the mesh, making the cells better shaped and the vertices more evenly distributed. Note that this filter operates on the lines, polygons, and triangle strips composing an instance of vtkPolyData. Vertex or poly-vertex cells are never modified.

The algorithm proceeds as follows. For each vertex v, a topological and geometric analysis is performed to determine which vertices are connected to v, and which cells are connected to v. Then, a connectivity array is constructed for each vertex. (The connectivity array is a list of lists of vertices that directly attach to each vertex.) Next, an iteration phase begins over all vertices. For each vertex v, the coordinates of v are modified according to an average of the connected vertices. (A relaxation factor is available to control the amount of displacement of v). The process repeats for each vertex. This pass over the list of vertices is a single iteration. Many iterations (generally around 20 or so) are repeated until the desired result is obtained.

There are some special parameters used to control the execution of this filter. (These parameters basically control what vertices can be smoothed, and the creation of the connectivity array.) The Boundary smoothing paramerter enables/disables the smoothing operation on vertices that are on the "boundary" of the mesh. A boundary vertex is one that is surrounded by a semi-cycle of polygons (or used by a single line).

Another important parameter is Feature edge smoothing. If this ivar is enabled, then interior vertices are classified as either "simple", "interior edge", or "fixed", and smoothed differently. (Interior vertices are manifold vertices surrounded by a cycle of polygons; or used by two line cells.) The classification is based on the number of feature edges attached to v. A feature edge occurs when the angle between the two surface normals of a polygon sharing an edge is greater than the FeatureAngle ivar. Then, vertices used by no feature edges are classified "simple", vertices used by exactly two feature edges are classified "interior edge", and all others are "fixed" vertices.

Once the classification is known, the vertices are smoothed differently. Corner (i.e., fixed) vertices are not smoothed at all. Simple vertices are smoothed as before (i.e., average of connected vertex coordinates). Interior edge vertices are smoothed only along their two connected edges, and only if the angle between the edges is less than the EdgeAngle ivar.

The total smoothing can be controlled by the The Number of iterations which is a cap on the maximum number of smoothing passes.

Note that this action does not create a new component, but modify the selected one(s).

SMO
Parameters
Name Type Default Description
Boundary smoothing bool true Turn on/off the smoothing of vertices on the boundary of the mesh.
Feature edge smoothing bool false Turn on/off smoothing along sharp interior edges.
Number of iterations int 20 Specify the number of iterations for Laplacian smoothing.
Edge angle double (Degrees) 15 Specify the edge angle to control smoothing along edges (either interior or boundary).
Feature angle double (Degrees) 45 Specify the feature angle for sharp edge identification.
Relaxation factor double 0.1 Specify the relaxation factor for Laplacian smoothing.
As in all iterative methods, the stability of the process is sensitive to this parameter. In general, small relaxation factors and large numbers of iterations are more stable than larger relaxation factors and smaller numbers of iterations.

Extract edges from a mesh

ExtractEdges


Create a new mesh from two input meshes (merge).

  • If points are exactly at the same coordinates, they will be merged.
  • If cells (tetras, triangles) are overlapped, only one is kept (Points must be exactly at the same coordinates).
  • If a triangle is enclosed in a volume during the merging action, it will be removed.


WARNING:This action works only with point set, triangular surface mesh or tetrahedral and/or triangular volume mesh.

The resulting mesh frame will be:

  • the same as both input meshes if they both have the same frame,
  • a new frame with a default identity transformation to world if both frames have an independent frame and a default identity transformation to world,
  • the same as the first mesh otherwise.

Merge Meshes

Interactive Mesh Clipping in the 3D Viewer

Mesh Clipping 3D Interaction

Computes curvatures of a surface.

curvatures
Parameters
Name Type Default Description
Curvature type enum 0 The type of curvature to compute on the surfacic mesh.

Load a transformation from a file. The file should contains the 4x4 matrix values (4 lines of 4 values). See also the "Save Displacement From Transformation" action.

translation rotation load from file

Export As MDL (an old legacy file format from early CAMI devices). This is kept for historical reason only.

Load Texture From BMP

Save the displacement from the last translation in a text file. Alternatively, load a transformation from a text file and apply it on the selected Mesh component.

translation rotation load from file save from file

Append several meshes in one mesh.

Parameters
Name Type Default Description
Merge Points bool true Define if close points are merged
Mesh Projection Extension
Show the contour of the mesh in 2D slices
1 action

Project the mesh contours onto an image in the 2D slice viewer

Projection Contour Cutter
Parameters
Name Type Default Description
ImageComponent List enum 0 List of possible image component to project onto
Show Mesh Projection bool false Show/Hide the mesh projection on the selected image slices
Contour Line Width double (mm) 1 Line width of the contour
Mesh Selection Tutorial Extension
This extension shows how to work with the mesh selection.
1 action

This action demonstrates how to compute the barycenter of the currently selected mesh nodes

Selection Points
Parameters
Name Type Default Description
Selection Barycenter QVector3D (same as the mesh) QVector3D(0, 0, 0) Geometric barycenter of the currently selected mesh nodes
Mesh Shaker Extension
An example of mesh animation. The shaker animation motors shakes your mesh in all directions!
3 actions

The shaker motor. It shakes your mesh in all directions (once)!

Demo Animation
Parameters
Name Type Default Description
Shaking Intensity double (%age of the bounding radius) 1 Max intensity for the sshhhhaakkiinggg...

The shaker motor. It shakes your mesh in all directions!

Animation Demo
Parameters
Name Type Default Description
Shaking Intensity double (%age of the bounding radius) 1 Max intensity for the sshhhhaakkiinggg...
Show Displacement bool (boolean) false Display the displacements in a color scale

The shaker motor. It uses the shakerlib external library to move the mesh in all directions!

Animation Demo
Parameters
Name Type Default Description
Shaking Intensity double (%age of the bounding radius) 1 Max intensity for the sshhhhaakkiinggg...
Show Displacement bool (boolean) false Display the displacements in a color scale
Modify Image Look Up Table
This extension provides an action to manipulate the Look Up Table of an image component.
1 action

Modify the LUT of an image components

LUT
MultiPickingExtension
Manages list of pixels picked in an image.
1 action

Action to manage several pixel points in an image (coordinates and index).

Picking Select Pixels
Multilabel Reconstruction
This extension includes an action to create meshes from a label image.
1 action

Build meshes from each label in the target image using the marching cubes or flying edges method. The minimum voxel value is considered as the background value and no mesh is created for it. Warning: by default the created meshes are set as unmodified (you won't be warned when they are being closed without saving them).

Label Image Marching Cubes Flying Edges
Parameters
Name Type Default Description
Method enum 0 Choose method to compute mesh from image labels
Smooth Meshes bool true Smoothes the resulting mesh using a windowed sinc function interpolation kernel (see also parameters iterations, passband and feature angle)
Iterations int 17 See vtkWindowedSincPolyDataFilter documentation
Passband double 0.001 See vtkWindowedSincPolyDataFilter documentation
Feature Angle double (°) 120 See vtkWindowedSincPolyDataFilter documentation
Selection Of Label Values QString List of labels that will be used to build meshes (e.g. 2,5,7-9,12-15) - Leave empty for all labels
PML Explorer Extension
Feature the actions of PML Explore which aims at displaying structural information about a PML component.
2 actions

This action aims at exploring inner PML information (atoms, cells and components). Features a specific Qt explorer.

pml physicalmodel physical physical model

Generates a Structural Component from a given bounding box or current PML explorer selection

CreateSC Select
Parameters
Name Type Default Description
Name Of The New Component QString selection Name of the newly created PML component.
Use PML Selection bool false Use the selected PML atoms and cells.
Use Picking Selection bool false Use the piked selection.
Bottom Corner QVector3D QVector3D(0, 0, 0) Bottom corner of the selection bounding box.
Top Corner QVector3D QVector3D(0, 0, 0) Top corner of the selection bounding box.
Pixel Color Changer
Extension that allows one to change pixel color value (paint image using a pencil)
1 action


Sets clicked XxYxZ cube of voxels (by CTRL + Mouse Left) to a new defined color value.

  • A size of 1 (X, Y or Z) corresponds to one pixel in the considered slice.
  • A size of 2 corresponds to 3 pixels in the slice, in the aim to always keep the picked pixel as the center.
    (Size 3-> 5pix; 4->7pix...)

Compatible with this pixel types formats :[unsigned] short / float / double / char

Color Changer Picked Pixel
Parameters
Name Type Default Description
New color int 255 The new color of the voxel(s) picked.
Cube picking size in X int 1 The cube picking width = 2xn + 1 where n is this property.
Cube picking size in Y int 1 The cube picking height = 2xn + 1 where n is this property.
Cube picking size in Z int 1 The cube picking depth = 2xn + 1 where n is this property.
Reconstruction
Extension that provides 3D reconstruction from an image component (e.g. marching cube)
1 action


Marching cubes is a simple algorithm for creating a triangle mesh from an implicit function (one of the form f(x, y, z) = 0).
It works by iterating ("marching") over a uniform grid of cubes superimposed over a region of the function. If all 8 vertices of the cube are positive, or all 8 vertices are negative, the cube is entirely above or entirely below the surface and no triangles are emitted. Otherwise, the cube straddles the function and some triangles and vertices are generated. Since each vertex can either be positive or negative, there are technically 28 possible configurations, but many of these are equivalent to one another.

This action uses this algorithm to build a 3D surfacic mesh of the input image.

Reconstruction
Parameters
Name Type Default Description
Threshold double 127.5 Grey level value corresponding to the isovalue the isosurface represents.
Keep only largest component? bool true Do we keep only the largest component?
Subsample original image? bool false Do we subsample input image for faster computation?
Subsampled image width (X) int 64 The width (X dimension) of the subsampled image
Subsampled image height (Y) int 64 The height (Y dimension) of the subsampled image
Subsampled image depth (Z) int 64 The depth (Z dimension) of the subsampled image
Registration Using Elastix Executable
This extension calls the elastix program to perform image registration. Note that elastix should be installed separately on your machine.
1 action

Registration using Elastix

Note that elastix should be installed on your machine.

This action can only modifies the following three main parameters:

  • Initialization: whether or not the initial translation between images should be estimated as the distance between their centers.
  • Transformation model: determines what type of deformations between the fixed and moving image is handled. There are 6 models available in elastix. Only three different types are available in this action: translation only, affine transformation (includes translation, rotation, scaling and shearing, and the nonrigid (i.e., elastic) B-spline transformation (uses cubic multidimensional B-spline polynomial control points). See section "2.6 Transform" of the elastix manual.
  • Similarity metrics: the similarity measure uses to compare the voxel values and find the best match during the registration. There are 5 different similarity measures available in elastix, the main one being: Mean Squared Difference (MSD) and Mutual Information (MI). See section "2.3 Metrics" of the elastix manual.

matching
Parameters
Name Type Default Description
Elastix Executable QString /usr/bin/elastix Path to the elastix executable. If empty, i.e., not found automatically in the system path or in the installation directories, you will require to set the path manually.
Elastix Version QString
Translation Initialization bool false Whether or not the initial translation between images should be estimated as the distance between their centers
Transform Type enum 0 This parameter set the transformation model used by the application to determine what type of deformations between the fixed and moving image is handled. There are 6 models available in elastix. Only three different types are available in this action: translation only, affine transformation (includes translation, rotation, scaling and shearing, and the nonrigid (i.e., elastic) B-spline transformation (uses cubic multidimensional B-spline polynomial control points). See section "2.6 Transform" of the elastix manual.
Similarity Metric enum 0 This parameter set the similarity measure uses to compare the voxel values and find the best match during the registration. There are 5 different similarity measures available in elastix, the main one being: Mean Squared Difference (MSD) and Mutual Information (MI). See section "2.3 Metrics" of the elastix manual.
Moving Image enum 0 Choose the moving image
Fixed Image enum 0 Choose the fixed image
Overwrite Results bool true Overwrite previous elastix results when registration is rerun
Result Name QString The name used to create a subdirectory. Automatically updated depending on the parameters and the input images. You can modify it just before clicking on "Apply"
Resample Image Extension
Resamples the input image.
1 action

Resamples the input image in two different ways:

  • 1. Resamples the scalar type of the voxels unless new scalard type is SAME_AS_INPUT
  • 2. Resamples the size of the voxels

Parameters
Name Type Default Description
New Image X Dimension int 256 The new image width (in voxels).
New Image Y Dimension int 256 The new image height (in voxels).
New Image Z Dimension int 256 The new image depth (in voxels).
New Image Scalar Type enum 0 The new image voxels scalar type
Restart Application
This extension provides an action that will restart the application after confirmation.
1 action

Restart the application after confirmation

Restart Reload
Show Image In 3D Extension
Toggle display of the image volume slices in the 3D viewer
5 actions

Shows the Image Volume in 3D viewer

3D Viewer

Toggle display of the axial slice in 3D

3D Viewer Axial Slice

Toggle display of the coronal slice(s) in 3D

3D Viewer

Toggle display of the sagittal slice(s) in 3D

3D Viewer

Toggle display of the arbitrary slice(s) in 3D

3D Viewer Arbitrary Slice
Sleeping While Working Tutorial Extension
This extension shows how to directly manipulate the viewers (and pretend you are busily doing it yourself!).
2 actions

This action generates a linear exploration of slice sagittal, coronal and axial viewers

Working When Sleeping
Parameters
Name Type Default Description
High Speed bool false If true, change goes faster.
Number Of Steps int 300 Number of change steps.

This action generates a random exploration of slice sagittal, coronal and axial viewers.

Working When Sleeping
Parameters
Name Type Default Description
Random Maximum Step int (degree) 3 Max Degree of rotation.
Number Of Steps int 300 Number of change steps.
Threshold (VTK)
A threshold action using VTK.
1 action

Simple threshold filter based on vtkImageThreshold.
Creates a new binary image depending on the initial voxel value:

  • If the initial value is between low and high thresholds (included), the new voxel value will be set to 'In Value' (e.g., 255 that is usually displayed as white)
  • Otherwise the new voxel value is set to 'Out Value' (e.g., 0 that is usually displayed as black)

If you want to select all the voxels that have a specific value x, set both thresholds to the value x. You can replace the in values, the out values or both with the given values (note: replacing both, the default, will result in a binary image).

Threshold Manual Classification
Parameters
Name Type Default Description
Low Threshold double 128 Voxels which have a value strictly below Low Threshold will be set to 'Out Value' (e.g. 255, usually displayed as black).
High Threshold double 255 Voxels which have a value strictly greater than High Threshold will be set to 'Out Value' (e.g. 0, usually displayed as black).
In Value double 255 Voxel value to use to replace the value that are in the low/high range.
Out Value double 0 Voxel value to use to replace the value that are not in the low/high range.
Replace Values enum 2 Replace or not the values that are in/out of the low/high range
TotalSegmentator
Segment CT or MRI using TotalSegmentator. If you use this tool please cite it as follows: Wasserthal, J., Breit, H.-C., Meyer, M.T., Pradella, M., Hinck, D., Sauter, A.W., Heye, T., Boll, D., Cyriac, J., Yang, S., Bach, M., Segeroth, M., 2023. TotalSegmentator: Robust Segmentation of 104 Anatomic Structures in CT Images. Radiology: Artificial Intelligence. https://doi.org/10.1148/ryai.230024 TotalSegmentator is heavily based on nnUnet (https://github.com/MIC-DKFZ/nnUNet). Note: as TotalSegmentator only use nifti format for I/O and that nifti format, this extension depends on the imaging CEP (for now).
1 action

Segment CT or MRI using TotalSegmentator.

If you use this tool please cite it as follows:
Wasserthal, J., Breit, H.-C., Meyer, M.T., Pradella, M., Hinck, D., Sauter, A.W., Heye, T., Boll, D., Cyriac, J., Yang, S., Bach, M., Segeroth, M., 2023. TotalSegmentator: Robust Segmentation of 104 Anatomic Structures in CT Images. Radiology: Artificial Intelligence. DOI

TotalSegmentator is heavily based on nnUnet.

TotalSegmentator
Parameters
Name Type Default Description
Task enum 0
  • total: default task containing 117 main classes (see here for a list of classes)
  • total_mr: default task containing 50 main classes on MR images (see here for a list of classes)
  • lung_vessels: lung_vessels (cite paper), lung_trachea_bronchia
  • body: body, body_trunc, body_extremities, skin
  • body_mr: body_trunc, body_extremities (for MR images)
  • vertebrae_mr: sacrum, vertebrae_L5, vertebrae_L4, vertebrae_L3, vertebrae_L2, vertebrae_L1, vertebrae_T12, vertebrae_T11, vertebrae_T10, vertebrae_T9, vertebrae_T8, vertebrae_T7, vertebrae_T6, vertebrae_T5, vertebrae_T4, vertebrae_T3, vertebrae_T2, vertebrae_T1, vertebrae_C7, vertebrae_C6, vertebrae_C5, vertebrae_C4, vertebrae_C3, vertebrae_C2, vertebrae_C1 (for CT this is part of the total task)
  • cerebral_bleed: intracerebral_hemorrhage (cite paper)*
  • hip_implant: hip_implant*
  • pleural_pericard_effusion: pleural_effusion (cite paper), pericardial_effusion (cite paper)*
  • head_glands_cavities: eye_left, eye_right, eye_lens_left, eye_lens_right, optic_nerve_left, optic_nerve_right, parotid_gland_left, parotid_gland_right, submandibular_gland_right, submandibular_gland_left, nasopharynx, oropharynx, hypopharynx, nasal_cavity_right, nasal_cavity_left, auditory_canal_right, auditory_canal_left, soft_palate, hard_palate (cite paper)
  • head_muscles: masseter_right, masseter_left, temporalis_right, temporalis_left, lateral_pterygoid_right, lateral_pterygoid_left, medial_pterygoid_right, medial_pterygoid_left, tongue, digastric_right, digastric_left
  • headneck_bones_vessels: larynx_air, thyroid_cartilage, hyoid, cricoid_cartilage, zygomatic_arch_right, zygomatic_arch_left, styloid_process_right, styloid_process_left, internal_carotid_artery_right, internal_carotid_artery_left, internal_jugular_vein_right, internal_jugular_vein_left (cite paper)
  • headneck_muscles: sternocleidomastoid_right, sternocleidomastoid_left, superior_pharyngeal_constrictor, middle_pharyngeal_constrictor, inferior_pharyngeal_constrictor, trapezius_right, trapezius_left, platysma_right, platysma_left, levator_scapulae_right, levator_scapulae_left, anterior_scalene_right, anterior_scalene_left, middle_scalene_right, middle_scalene_left, posterior_scalene_right, posterior_scalene_left, sterno_thyroid_right, sterno_thyroid_left, thyrohyoid_right, thyrohyoid_left, prevertebral_right, prevertebral_left (cite paper)
  • liver_vessels: liver_vessels, liver_tumor (cite paper)*
  • oculomotor_muscles: skull, eyeball_right, lateral_rectus_muscle_right, superior_oblique_muscle_right, levator_palpebrae_superioris_right, superior_rectus_muscle_right, medial_rectus_muscle_left, inferior_oblique_muscle_right, inferior_rectus_muscle_right, optic_nerve_left, eyeball_left, lateral_rectus_muscle_left, superior_oblique_muscle_left, levator_palpebrae_superioris_left, superior_rectus_muscle_left, medial_rectus_muscle_right, inferior_oblique_muscle_left, inferior_rectus_muscle_left, optic_nerve_right*
  • lung_nodules: lung, lung_nodules (provided by BLUEMIND AI: Fitzjalen R., Aladin M., Nanyan G.) (trained on 1353 subjects, partly from LIDC-IDRI)
  • kidney_cysts: kidney_cyst_left, kidney_cyst_right (strongly improved accuracy compared to kidney_cysts inside of total task)
  • breasts: breast
  • liver_segments: liver_segment_1, liver_segment_2, liver_segment_3, liver_segment_4, liver_segment_5, liver_segment_6, liver_segment_7, liver_segment_8 (Couinaud segments)
  • liver_segments_mr: liver_segment_1, liver_segment_2, liver_segment_3, liver_segment_4, liver_segment_5, liver_segment_6, liver_segment_7, liver_segment_8 (for MR images) (Couinaud segments)
Gpu enum 0
Fast enum 0
Generate Meshes bool false Generate Meshes using Reconstruction Action
Volume Rendering Extension
This extension allows user to display volume rendering representation of a 3D image.
1 action

Volume rendering of 3D medical image using ray casting
(Use Ctrl+R to render a selected image volume)

Volume rendering volume render ray tracing
Parameters
Name Type Default Description
Volume Rendering Visibility bool false Should the volume rendering be visible in 3D
Color Map File QString :resources/default.clm Path to the colormap file name
Vtk Widget Tutorial Extension
This is a simple action extension containing one action to show how to add a vtk 3D widget in a viewer (a VTK Widget is an type of interaction directly available in a VTK renderer window).
2 actions

Add a VTK 3D Widget to the 3D viewer.
Mouse interaction

  • Left button: grab on the six face handles → slide the faces
  • Left button: grab the center handle → move the entire box
  • Shift+Left button: inside the box widget → Translation
  • Right button: inside the box widget → up/down scaling
  • Left mouse: pick a face (not a face handle) → rotate (if Rotation Enabled is ticked)

VTK Widget Demo 3D Interaction
Parameters
Name Type Default Description
Translation Enabled bool true Enable box translation (Left button on the box center controller or Shift+Left button inside the box).
Scaling Enabled bool true Enable box scaling (move faces).
Rotation Enabled bool false Enable box rotation (Left button on a face).
Bottom Corner QVector3D QVector3D(0, 0, 0) Bottom corner coordinates, automatically updated when the box widget is modified
Top Corner QVector3D QVector3D(1, 1, 1) Top corner coordinates, automatically updated when the box widget is modified

Add a VTK Contour widget in a 2D viewer to interactively define a region contour. The contour follows the selected slice.

First select the 2D viewer and then click Apply to start the contour creation:

  • Click Apply and then left click in the chosen viewer to add the first contour node
  • Left Click: Add/select a point
  • Right Click: Add final point
  • Middle Click: Translate the contour
  • Close Contour Widget: Join the start and end handles interactively
  • Delete Contour Widget button: Delete the current contour widget. This will allow you to start again from scratch in any viewer you like. It will detach the generated mesh component and leave it in its current state without deleting it. Note: it is not possible to re-attach it later.
  • Duplicate Contour WidgetSame as Delete Contour Widget but will create a new contour and mesh component from the current contour widget shape. This can be useful to use the current contour as the initialization for the next slice. Once the contour is duplicate, change the slice to move it to the next image slice

You may change the color and size an any time, click Apply to update the contour. You cannot change the viewer until you click on Delete Contour Widget (or close the generated Mesh Component).

Demo Segmentation 2D Interaction VTK Widget
Parameters
Name Type Default Description
Viewer enum 0 The viewer in which the contour is going to be created
Contour Color QColor QColor#fa9632 Color of the contour (default is orange)
Line Width double 2 Contour line width
Number Of Points int 0 Number of points in the current contour (updated automatically when the contour is interactively modified).
Alias Wavefront OBJ Component
Manage Alias Wavefront OBJ .obj files in CamiTK.
(very few support!)
1 file extension
.obj
CamiTK Workspace
Manage CamiTK Workspace format.
1 file extension
.camitk
ItkImages Component
Manage any file type supported by itk and not by vtk in CamiTK.
For more info about image data format: http://www.dclunie.com/medical-image-faq/html
  • hdr is the Analyse header file format
  • spr is the Stimulate header file format
  • gipl is the Guys Image Processing Lab Format
  • pic is the Bio-Rad file format, used by confocal microscopes like MRC 1024 and MRC 600
  • LSM is a line of confocal laser scanning microscopes produced by the Zeiss company
  • Nrrd is the "Nearly Raw Raster Data"
  • NIfTI-1 (.nii) is adapted from the widely used ANALYZE 7.5 file format. For more info about image data format: http://nifti.nimh.nih.gov/nifti-1/
11 file extensions
.hdr .spr .gipl .pic .lsm .nrrd .hdr.gz .nii .nii.gz .img .img.gz
MML Component
Manage .mml document in CamiTK.
Lots of things are possible with MML!
2 file extensions
.mml .scn
Msh Component
This simple MSH Component allows you to manipulate .msh files (initially from gmsh software). See http://www.geuz.org/gmsh/doc/texinfo/gmsh.html for more information about this format
1 file extension
.msh
Off Component
OFF .off files in CamiTK
(c) Univ. Grenoble Alpes
1 file extension
.off
PML Component
New PML COMPONENT!
1 file extension
.pml
Pick Me Component
This tutorial show how to the pointPicked(..) and cellPicked(..) method to interact directly with your component
1 file extension
.pickme
STL Component
Manage STL format, see https://en.wikipedia.org/wiki/STL_%28file_format%29
2 file extensions
.stl .STL
Testing Abort Component
A small extension that can be used for testing how CamiTK handle AbortException in component constructor.
1 file extension
.abort
Testing Mixed Component
A small extension that integrates mha and vtk together, i.e .mixed files in CamiTK.
(very few support!)
1 file extension
.mixed
VRML 2 Component
Basic support for VRML 2 .wrl and .vrml documents
2 file extensions
.vrml .wrl
VTK Image
Manage image file type directly supported by vtk. For MetaImage documentation, check the official documentation (https://itk.org/Wiki/ITK/MetaIO).
11 file extensions
.mha .mhd .png .tiff .tif .bmp .pbm .pgm .ppm .jpg .raw
VTK Mesh
Manage VTK .vtk mesh files in CamiTK.
1 file extension
.vtk
DICOM
This extension adds support for DICOM single image file (.dcm) and series thanks to the gdcm library
1 file extension
.[directory]
Action Viewer Extension
"Action Viewer" displays the currently selected action's GUI as well as an action selector
Action Viewer DOCKED

"Action Viewer" displays the currently selected action's GUI as well as an action selector

Properties
Name Type Description
Show Search Panel bool Visibility of the action search panel (where you can search for an action by family, tag or keywords).
uuid QUuid Unique Identifier
Bitmap Viewer Extension
This extension provides BitmapViewer, a simple 2D image viewer
Bitmap Viewer EMBEDDED

BitmapViewer is a simple 2D image viewer

Compatible Components SingleImageComponent
Properties
Name Type Description
Backface culling bool Compute the non visible polygons and display them?
Background color QColor The background color of this viewer.
Camera Orientation int Select the camera orientation. XY to display the XY plane, XZ, YZ, or Other for custom orientation
FXAA Antialiasing bool Use FXAA antialiasing to smooth edges?
Highlight Mode int Select the highlight mode for selecting components. OFF: both selected and non-selected Components are in default mode SELECTION: the selected Components are in default mode, the non-selected Components are shaded SELECTION_ONLY: the selected Components are in default mode, the non-selected are hidden
Lines considered as tube? bool Does this viewer replace drawn lines as tubes?
Point size? double The 3D point size of each node
Screenshot button visible bool Is the screenshot button visible in the slice viewer sidebar
Use a background gradient color? bool Does this viewer use a gradient to render its background color?
uuid QUuid Unique Identifier
Component Explorer Extension
The Component Explorer viewer shows all the instantiated components
Component Explorer DOCKED

The Explorer viewer shows all the instantiated components

Interactive Geometry Viewer Extension
Interactive geometry viewers are 3D viewers that show 3D geometry and image slices
3D Viewer EMBEDDED

Default 3D viewers that shows components with a geometry or bitmap representation

Compatible Components Component
Properties
Name Type Description
Backface culling bool Compute the non visible polygons and display them?
Background color QColor The background color of this viewer.
Camera Orientation int Select the camera orientation. XY to display the XY plane, XZ, YZ, or Other for custom orientation
FXAA Antialiasing bool Use FXAA antialiasing to smooth edges?
Highlight Mode int Select the highlight mode for selecting components. OFF: both selected and non-selected Components are in default mode SELECTION: the selected Components are in default mode, the non-selected Components are shaded SELECTION_ONLY: the selected Components are in default mode, the non-selected are hidden
Lines considered as tube? bool Does this viewer replace drawn lines as tubes?
Point size? double The 3D point size of each node
Screenshot button visible bool Is the screenshot button visible in the slice viewer sidebar
Use a background gradient color? bool Does this viewer use a gradient to render its background color?
uuid QUuid Unique Identifier
Interactive Slice Viewer Extension
Interactive slice viewers are 2D viewers that show one specific image slice or 2D images
Axial Viewer EMBEDDED

Default slice viewer that displays the axial slices

Compatible Components SingleImageComponent
Properties
Name Type Description
Backface culling bool Compute the non visible polygons and display them?
Background color QColor The background color of this viewer.
Camera Orientation int Select the camera orientation. XY to display the XY plane, XZ, YZ, or Other for custom orientation
FXAA Antialiasing bool Use FXAA antialiasing to smooth edges?
Highlight Mode int Select the highlight mode for selecting components. OFF: both selected and non-selected Components are in default mode SELECTION: the selected Components are in default mode, the non-selected Components are shaded SELECTION_ONLY: the selected Components are in default mode, the non-selected are hidden
Lines considered as tube? bool Does this viewer replace drawn lines as tubes?
Point size? double The 3D point size of each node
Screenshot button visible bool Is the screenshot button visible in the slice viewer sidebar
Use a background gradient color? bool Does this viewer use a gradient to render its background color?
uuid QUuid Unique Identifier
Coronal Viewer EMBEDDED

Default slice viewer that displays the coronal slices

Compatible Components SingleImageComponent
Properties
Name Type Description
Backface culling bool Compute the non visible polygons and display them?
Background color QColor The background color of this viewer.
Camera Orientation int Select the camera orientation. XY to display the XY plane, XZ, YZ, or Other for custom orientation
FXAA Antialiasing bool Use FXAA antialiasing to smooth edges?
Highlight Mode int Select the highlight mode for selecting components. OFF: both selected and non-selected Components are in default mode SELECTION: the selected Components are in default mode, the non-selected Components are shaded SELECTION_ONLY: the selected Components are in default mode, the non-selected are hidden
Lines considered as tube? bool Does this viewer replace drawn lines as tubes?
Point size? double The 3D point size of each node
Screenshot button visible bool Is the screenshot button visible in the slice viewer sidebar
Use a background gradient color? bool Does this viewer use a gradient to render its background color?
uuid QUuid Unique Identifier
Sagittal Viewer EMBEDDED

Default slice viewer that displays the sagittal slices

Compatible Components SingleImageComponent
Properties
Name Type Description
Backface culling bool Compute the non visible polygons and display them?
Background color QColor The background color of this viewer.
Camera Orientation int Select the camera orientation. XY to display the XY plane, XZ, YZ, or Other for custom orientation
FXAA Antialiasing bool Use FXAA antialiasing to smooth edges?
Highlight Mode int Select the highlight mode for selecting components. OFF: both selected and non-selected Components are in default mode SELECTION: the selected Components are in default mode, the non-selected Components are shaded SELECTION_ONLY: the selected Components are in default mode, the non-selected are hidden
Lines considered as tube? bool Does this viewer replace drawn lines as tubes?
Point size? double The 3D point size of each node
Screenshot button visible bool Is the screenshot button visible in the slice viewer sidebar
Use a background gradient color? bool Does this viewer use a gradient to render its background color?
uuid QUuid Unique Identifier
Arbitrary Viewer EMBEDDED

Default slice viewer that displays the arbitrary orientation slices

Compatible Components SingleImageComponent
Properties
Name Type Description
Backface culling bool Compute the non visible polygons and display them?
Background color QColor The background color of this viewer.
Camera Orientation int Select the camera orientation. XY to display the XY plane, XZ, YZ, or Other for custom orientation
FXAA Antialiasing bool Use FXAA antialiasing to smooth edges?
Highlight Mode int Select the highlight mode for selecting components. OFF: both selected and non-selected Components are in default mode SELECTION: the selected Components are in default mode, the non-selected Components are shaded SELECTION_ONLY: the selected Components are in default mode, the non-selected are hidden
Lines considered as tube? bool Does this viewer replace drawn lines as tubes?
Point size? double The 3D point size of each node
Screenshot button visible bool Is the screenshot button visible in the slice viewer sidebar
Use a background gradient color? bool Does this viewer use a gradient to render its background color?
uuid QUuid Unique Identifier
Medical Image Viewer Extension
The Medical Image Viewer embeds all classical medical image views (axial, sagittal, coronal, 3D and arbitrary orientation).
Medical Image Viewer EMBEDDED

The Medical Image Viewer embeds all classical medical image views (axial, sagittal, coronal, 3D and arbitrary orientation)

Compatible Components Component
Properties
Name Type Description
Backface culling bool Compute the non visible polygons and display them?
Background color QColor The background color of this viewer.
Camera Orientation int Select the camera orientation. XY to display the XY plane, XZ, YZ, or Other for custom orientation
FXAA Antialiasing bool Use FXAA antialiasing to smooth edges?
Highlight Mode int Select the highlight mode for selecting components. OFF: both selected and non-selected Components are in default mode SELECTION: the selected Components are in default mode, the non-selected Components are shaded SELECTION_ONLY: the selected Components are in default mode, the non-selected are hidden
Lines considered as tube? bool Does this viewer replace drawn lines as tubes?
Point size? double The 3D point size of each node
Screenshot button visible bool Is the screenshot button visible in the slice viewer sidebar
Use a background gradient color? bool Does this viewer use a gradient to render its background color?
uuid QUuid Unique Identifier
Mixed Viewer Extension
An extension that provides a two panels viewer (left is axial, right is 3D), specialized in mixed component
Mixed Viewer EMBEDDED

A two panels viewer (left is axial, right is 3D), specialized in mixed component

Property Explorer Extension
The property explorer shows the properties of the currently selected component
Property Explorer DOCKED

The property explorer shows the properties of the currently selected component

Compatible Components Component
Properties
Name Type Description
View mode int The display type of the PropertyExplorer
uuid QUuid Unique Identifier
TextViewer Extension
An extension that brings a pure text viewer called... TextViewer (docked by default)
Text Viewer DOCKED

This text only viewer displays the number of opened components (docked by default)

Compatible Components Component
Properties
Name Type Description
Background Color QColor Text background color, modifiable in the TextViewer settings
Text Color QColor Text color, modifiable in the TextViewer settings
uuid QUuid Unique Identifier
Transformation Explorer Extension
The transformation explorer shows all frames of reference and transformations
Transformation Explorer DOCKED

The transformation explorer shows all transformations and frames of reference