Available Features
Arbitrary Slice
This extension gathers actions for manipulating the arbitrary slice in a 3D image.This action allows user to manually modify the orientation and translation of the arbitrary slice.
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 voxelCompute the average voxels value in the neiborhoods of the selected voxel. Show results on the log console.
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.Change the surface, wireframe or points colors of objects
Change the rendering option (surface, wireframe, points, label...) of the selected mesh(es).
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
Pick a mesh to retrieve point/cell information from the mesh
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.
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).
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.
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.
Extract the current 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).
Tutorial action that retrieve pixel information from the image
Basic Topology
This extension provides actions to build basic topology mesh.Build a regular 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
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.This action re-orients a medical image according to Dicom RCS (Reference Coordinates System).
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.Add a dynamic property to the currently selected 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.
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.
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.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).
Developer Studio
Actions for Extension Developers.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.
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.
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.
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.
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.
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
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.
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.
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
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...)Select the last top level component that was instantiated
Remove the last top level component that was instantiated without saving it
Clear the list of selected item
Set the working directory path to the test data dir (useful for test purpose)
File Application Level Actions
This extension provides various actions to manipulate components at the application level (open, close, save...)Open data (component) from a file
Open data (component) from a given file
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| File Name | QString | The name of the file to open. |
Open a CamiTK workspace from a given file
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 the currently selected data under a different filename or format
Saves all the currently loaded data
Save the workspace
Close the currently selected components
Close all components, prompting for additional information if needed
Exit the application, prompting for additional information if needed
Frames Transformations
This extension provides actions to manipulate Frames and Transformations for a componentSets 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
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.
Show/Hide the 3D axes representation of the frame of reference of the selected component, i.e., its local coordinate system.
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
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)
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
Sets the Frame/Frames of the input Component from the Frame/Frames of another Component
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.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).
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...)Toggle the redirection console window that shows log and std output.
Show a little dialog about the application
Change Language with a given .qm file
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.
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.
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).
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..
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)
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)
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
- Derivative along X axis
- Derivative along Y axis
- Derivative along Z axis
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)
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.
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.
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.
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.
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
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.
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.
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...)
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.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. 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.
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.
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.
MML Processing
Various actions for MMLGenerates 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.
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 layoutShow the Axial Viewer Only
Show the Coronal Viewer Only
Show the Sagittal Viewer Only
Show the 3D Viewer Only
Show Classical Medical Image Viewer (Axial, Coronal, Sagittal and 3D in a 4 panels)
Show the Arbitrary Slice Viewer Only
Mesh Point Data Visibility
This extension shows how to show/hide mesh point data using a color scaleThis action demonstrates how to show the point data on a color scale
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:
|
Mesh Processing
This extension provides more advanced mesh processing algorithms.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).
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.
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.
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).
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| Displacement | double | 1 | The length of the displacement of the mesh toward its normals. |
Extract Surface from Volumetric Mesh
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
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
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).
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
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.
Interactive Mesh Clipping in the 3D Viewer
Computes curvatures of a surface.
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.
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.
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 slicesProject the mesh contours onto an image in the 2D slice viewer
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.This action demonstrates how to compute the barycenter of the currently selected mesh nodes
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!The shaker motor. It shakes your mesh in all directions (once)!
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!
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!
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.Modify the LUT of an image components
MultiPickingExtension
Manages list of pixels picked in an image.Action to manage several pixel points in an image (coordinates and index).
Multilabel Reconstruction
This extension includes an action to create meshes from a label image.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).
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.This action aims at exploring inner PML information (atoms, cells and components). Features a specific Qt explorer.
Generates a Structural Component from a given bounding box or current PML explorer selection
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)
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
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)
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.
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.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.
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.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.Restart the application after confirmation
Show Image In 3D Extension
Toggle display of the image volume slices in the 3D viewerShows the Image Volume in 3D viewer
Toggle display of the axial slice in 3D
Toggle display of the coronal slice(s) in 3D
Toggle display of the sagittal slice(s) in 3D
Toggle display of the arbitrary slice(s) in 3D
Sleeping While Working Tutorial Extension
This extension shows how to directly manipulate the viewers (and pretend you are busily doing it yourself!).This action generates a linear exploration of slice sagittal, coronal and axial viewers
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.
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.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).
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).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.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| Task | enum | 0 |
|
| 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.Volume rendering of 3D medical image using ray casting
(Use Ctrl+R to render a selected image volume)
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).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)
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).
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!)
CamiTK Workspace
Manage CamiTK Workspace format.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/
MML Component
Manage .mml document in CamiTK.Lots of things are possible with MML!
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 formatOff Component
OFF .off files in CamiTK(c) Univ. Grenoble Alpes
PML Component
New PML COMPONENT!Pick Me Component
This tutorial show how to the pointPicked(..) and cellPicked(..) method to interact directly with your componentSTL Component
Manage STL format, see https://en.wikipedia.org/wiki/STL_%28file_format%29Testing Abort Component
A small extension that can be used for testing how CamiTK handle AbortException in component constructor.Testing Mixed Component
A small extension that integrates mha and vtk together, i.e .mixed files in CamiTK.(very few support!)
VRML 2 Component
Basic support for VRML 2 .wrl and .vrml documentsVTK Image
Manage image file type directly supported by vtk. For MetaImage documentation, check the official documentation (https://itk.org/Wiki/ITK/MetaIO).VTK Mesh
Manage VTK .vtk mesh files in CamiTK.DICOM
This extension adds support for DICOM single image file (.dcm) and series thanks to the gdcm libraryAction Viewer Extension
"Action Viewer" displays the currently selected action's GUI as well as an action selectorAction 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 viewerBitmap Viewer EMBEDDED
BitmapViewer is a simple 2D image viewer
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 componentsComponent 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 slices3D Viewer EMBEDDED
Default 3D viewers that shows components with a geometry or bitmap representation
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 imagesAxial Viewer EMBEDDED
Default slice viewer that displays the axial slices
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
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
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
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)
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 componentMixed 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 componentProperty Explorer DOCKED
The property explorer shows the properties of the currently selected 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)
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 transformationsTransformation Explorer DOCKED
The transformation explorer shows all transformations and frames of reference