Difference between revisions of "Modules:RobustStatisticsSeg-Documentation-3.6"

From Slicer Wiki
Jump to: navigation, search
 
(32 intermediate revisions by 2 users not shown)
Line 5: Line 5:
 
{|
 
{|
 
|[[Image:RssPanel.png|thumb|280px|RSS module panel]]
 
|[[Image:RssPanel.png|thumb|280px|RSS module panel]]
|[[Image:RSS_MultiObjSeg1.png|thumb|400px|RSS result for abdominal CT image]]
 
 
|[[Image:RssVentricle.png|thumb|400px|RSS result for Brain MR image]]
 
|[[Image:RssVentricle.png|thumb|400px|RSS result for Brain MR image]]
 
|}
 
|}
Line 32: Line 31:
 
===Use Cases, Examples===
 
===Use Cases, Examples===
  
* This module is a general purpose segmentor.  
+
* This module is a general purpose segmenter.  
 
* Link to examples of the module's use
 
* Link to examples of the module's use
  Left kidney, CT image
+
[[Image:RSSkidneyL.png | RSS left kidney result | 400px]]
+
<gallery widths="400px" heights="300px" perrow="2">
  Right kidney, CT image
+
Image:RSSkidneyL.png|Left kidney, CT image(512*512*204). IO time: 10sec, module running time: 12sec (Intel 3.0GHz), <br>Approximate volume: 200 ml, <br>Intensity homogeneity: 0.1, <br>Boundary smoothness: 0.5
[[Image:RSS_rkidney.png | RSS right kidney result | 400px]]
+
Image:RSS_rkidney.png|Right kidney, CT image(512*512*204). IO time: 10sec, module running time: 15sec (Intel 3.0GHz), <br>Approximate volume: 200 ml, <br>Intensity homogeneity: 0.1, <br>Boundary smoothness: 0.5
  Brain tumor, MR image
+
Image:RSS_tumor.png|Brain tumor, MR image(256*256*123). IO time: 3sec, Module running time: 2.5sec (Intel 3.0GHz), <br>Approximate volume: 50 ml, <br>Intensity homogeneity: 0.1,  <br>Boundary smoothness: 0.2
[[Image:RSS_tumor.png | RSS brain tumor result | 400px]]
+
Image:RssVentricle.png|Ventricle, MR image(256*256*124). IO time: 3sec, Module running time: 2.5sec (Intel 3.0GHz), <br>Approximate volume: 30 ml, <br>Intensity homogeneity: 0.02,  <br>Boundary smoothness: 0.0
 +
Image:RSS-aorta.png|Aorta, CT image(512*512*204). IO time: 10sec, module running time: 12sec (Intel 3.0GHz), <br>Approximate volume: 60 ml, <br>Intensity homogeneity: 1.0,  <br>Boundary smoothness: 0.0
 +
Image:RSSMandible.png|Head, CT image(512*512*460) from http://pubimage.hcuge.ch:8080/ MANIX data set. IO time: 16sec, module running time: 160sec (Intel 3.0GHz), <br>Approximate volume: 100 ml, <br>Intensity homogeneity: 0.5,  <br>Boundary smoothness: 0.0
 +
Image:rss_CT_liver.png|Liver, ROI cropped from CT image(512*512*204). Running time: 150sec (Intel 3.0GHz), <br>Volume limit: 2000 ml, <br>Intensity homogeneity: 0.9, <br>Boundary smoothness: 0.7. Test case file [[File:CT_liver_segmentation_case.tgz]]
 +
</gallery>
  
 
===Tutorials===
 
===Tutorials===
Line 68: Line 71:
  
  
* Data Set http://www.spl.harvard.edu/publications/bitstream/download/4217 (case3/grayscale.nrrd)
+
* Data Set http://www.spl.harvard.edu/publications/item/view/1180 Tumorbase.zip at page bottom, in the zip file, case3/grayscale.nrrd
 +
 
 
  1. Draw label map in Editing module
 
  1. Draw label map in Editing module
 
In the editing module, select any drawing tool, for example the "Paint" tool circled in red. Draw some strokes in the target in one of the 2D views. In this example, we only freely draw the "S" shaped label circled in green.
 
In the editing module, select any drawing tool, for example the "Paint" tool circled in red. Draw some strokes in the target in one of the 2D views. In this example, we only freely draw the "S" shaped label circled in green.
  
 
[[Image:RSS_editStep.png | Drawing label map for RSS| 700px]]
 
[[Image:RSS_editStep.png | Drawing label map for RSS| 700px]]
  2. Run RSS
+
  2. Run RSS.
Run the RSS module. The setting for this case is shown in the screenshot, in the red box. The sensitivity of the parameters are not quantitatively evaluated. However, the experience shows that for most of the cases, the algorithm is robust to the parameters.
+
To run the RSS module. The parameters which may affect the segmentation results include: ''Approximate volume'', ''Intensity homogeneity'', ''Boundary smoothness'', ''Max running time''. The particular setting of the parameters for this example case is shown in the screenshot, in the red box. Some guidelines for adjusting them are given in the '''Troubleshooting''' section above, whereas their general roles in influencing the results are given in the '''Quick Tour of Features and Use''' section below. The sensitivity of the parameters are not quantitatively evaluated. In some easy cases, the algorithm is rather robust to the parameters. However for some objects with inhomogeneous intensity as well as irregular shape, the parameters may need to be carefully tuned.
  
 
[[Image:RSS_run.png | Set up RSS module| 700px]]
 
[[Image:RSS_run.png | Set up RSS module| 700px]]
Line 80: Line 84:
 
* Multiple-value label map handling
 
* Multiple-value label map handling
  
The parameter "Output Label Value"(OLV) is for user to assign the output label value. Moreover, it is also used in cases where the user provided label map contains more than one label value. In general, the module handles three cases:
+
The parameter "Output Label Value"(OLV) is for user to assign the output label value. Moreover, when user provided label map contains several labels, the target corresponding to the OLV is the one get segmented. More specifically, there are three difference situations:
  
 
# user provided label map contains only one label value, L. In this case, the output label value will be set to OLV, not matter what value L takes.
 
# user provided label map contains only one label value, L. In this case, the output label value will be set to OLV, not matter what value L takes.
 
# user provided label map contains multiple label values, one of which matches OLV. Then only that label will be effective and all the others are discarded. The output will have label value OLV too.
 
# user provided label map contains multiple label values, one of which matches OLV. Then only that label will be effective and all the others are discarded. The output will have label value OLV too.
 
# user provided label map contains multiple label values, but none matches OLV. Then all the non-zero labels will be considered as a single label value and then come back to the case 1 above.
 
# user provided label map contains multiple label values, but none matches OLV. Then all the non-zero labels will be considered as a single label value and then come back to the case 1 above.
 +
 +
In the current version, regardless of the number of different labels appearing in the label map, only one object is extracted from the image. The on-going work extends this to extracting multiple objects simultaneously.
  
 
===Quick Tour of Features and Use===
 
===Quick Tour of Features and Use===
Line 95: Line 101:
 
** '''Approximate volume:''' The estimated upper limit of the target volume. The resulting volume will be less or equal than this value.
 
** '''Approximate volume:''' The estimated upper limit of the target volume. The resulting volume will be less or equal than this value.
 
** '''Intensity homogeneity:''' If the target contains homogeneous intensity, then give a close-to-1 value here.
 
** '''Intensity homogeneity:''' If the target contains homogeneous intensity, then give a close-to-1 value here.
* '''Boundary smoothness::''' Larger value will result in smoother boundary.
+
** '''Boundary smoothness:''' Larger value will result in smoother boundary and a more spherical looking result.
 
** '''Output Label Value:''' Defined the label value of the output. Also refer to the "Multiple-value label map handling" above.
 
** '''Output Label Value:''' Defined the label value of the output. Also refer to the "Multiple-value label map handling" above.
 
** '''Max running time:''' The upper limit for program running time.
 
** '''Max running time:''' The upper limit for program running time.
Line 113: Line 119:
 
===Dependencies===
 
===Dependencies===
  
This module depend on the Slicer editing module, or outside input, to provide initial label image.
+
This module depends on the Slicer editing module, or outside input, to provide initial label image.
  
 
===Tests===
 
===Tests===
  
On the [http://www.cdash.org/CDash/index.php?project=Slicer3 Dashboard], these tests verify that the module is working on various platforms:
+
Test testing code and test data sets are included in this module to ensure its successful running on various platforms. The testing file is: SFLSRobustStat3DTestConsole.cxx, residing in the same directory as the module code.
 
 
* MyModuleTest1 [http://viewvc.slicer.org/viewcvs.cgi/trunk MyModuleTest1.cxx]
 
* MyModuleTest2 [http://viewvc.slicer.org/viewcvs.cgi/trunk MyModuleTest2.cxx]
 
  
 
===Known bugs===
 
===Known bugs===
  
Links to known bugs in the Slicer3 bug tracker
+
No bug known on Apr 14.2010
 
 
* [http://www.na-mic.org/Bug/view.php?id=000 Bug 000: description]
 
 
 
  
 
===Usability issues===
 
===Usability issues===
Line 135: Line 135:
 
===Source code & documentation===
 
===Source code & documentation===
  
Links to the module's source code:
+
The source code of the algorithm is in 3D Slicer source directory tree. Under Slicer3/Applications/CLI/RobustStatisticsSegmenter/
  
Source code:
+
Moreover, the code above is a self-contained implementation for the 3D Sparse Filed Level Set method. The level set evolution is implemented in the base class. Specific flow, such as Chan-Vese, Geodesic Active Contour, or the Robust Statistics based flow, can be implemented as the derived class. Therefore, it can be reused for other types of flow with not much work.
*[http://viewvc.slicer.org/viewcvs.cgi/trunk file.cxx ]
 
*[http://viewvc.slicer.org/viewcvs.cgi/trunk file.h ]
 
 
Doxygen documentation:
 
*[http://www.na-mic.org/Slicer/Documentation/Slicer3-doc/html/classes.html class1]
 
  
 
== More Information ==  
 
== More Information ==  
Line 152: Line 147:
  
 
===References===
 
===References===
 +
Yi Gao, Ron Kikinis, Sylvain Bouix, Martha Shenton, Allen Tannenbaum, ''A 3D Interactive Multi-object Segmentation Tool using Local Robust Statistics Driven Active Contours'', Medical Image Analysis, 2012, http://dx.doi.org/10.1016/j.media.2012.06.002

Latest revision as of 11:16, 16 July 2012

Home < Modules:RobustStatisticsSeg-Documentation-3.6

Return to Slicer 3.6 Documentation

Robust Statistics Segmentation

RSS module panel
RSS result for Brain MR image

General Information

Module Type & Category

Type: CLI

Category: Segmentation

Authors, Collaborators & Contact

  • Yi Gao (Author): Georgia Tech
  • Allen Tannenbaum (Author): Georgia Tech
  • Ron Kikinis (Author): BWH
  • Contact: Yi Gao, yi.gao@gatech.edu

Module Description

This module is a general purpose segmenter. The target object is initialized by a label map. An active contour model then evolves to extract the desired boundary of the object.

Usage

Module parameters ---> Adv Module parameters ---> Adv Module parameters

Use Cases, Examples

  • This module is a general purpose segmenter.
  • Link to examples of the module's use

Tutorials

  • First run:
  1. Give a rough estimate of the object volume and use the editing module to paint several non-zero labels, called seeds in the following, in the object.
  2. Run the module using the default parameters.
  • Note:
  1. The Approximate volume is just a rough upper limit for the volume. It should be at least the size of the object. This is because when the volume reaches that, the program must stop. However, other criteria may stop the algorithm before the volume reaches this value.
  2. The positions of the seeds have to be in the object, preferably close to center.
  • Troubleshooting
    • Surface is too rough. Try:
      • Increase "Boundary smoothness"
    • Leakage into thin/narrow regions. Try:
      • Increase "Boundary smoothness"
    • leakage into similar (but still different) intensity regions (which is not necessarily thin), Try:
      • Increase "Intensity homogeneity"
    • Some regions are missed: Try (either one):
      • Increase "Max volume"
      • Decrease"Intensity homogeneity"
      • Decrease "Boundary smoothness"
    • Some regions are missed, at the same time leakages to some other regions. Try (either one)
      • Increase "Intensity homogeneity"
      • Add some other seeds


1. Draw label map in Editing module

In the editing module, select any drawing tool, for example the "Paint" tool circled in red. Draw some strokes in the target in one of the 2D views. In this example, we only freely draw the "S" shaped label circled in green.

Drawing label map for RSS

2. Run RSS. 

To run the RSS module. The parameters which may affect the segmentation results include: Approximate volume, Intensity homogeneity, Boundary smoothness, Max running time. The particular setting of the parameters for this example case is shown in the screenshot, in the red box. Some guidelines for adjusting them are given in the Troubleshooting section above, whereas their general roles in influencing the results are given in the Quick Tour of Features and Use section below. The sensitivity of the parameters are not quantitatively evaluated. In some easy cases, the algorithm is rather robust to the parameters. However for some objects with inhomogeneous intensity as well as irregular shape, the parameters may need to be carefully tuned.

Set up RSS module

  • Multiple-value label map handling

The parameter "Output Label Value"(OLV) is for user to assign the output label value. Moreover, when user provided label map contains several labels, the target corresponding to the OLV is the one get segmented. More specifically, there are three difference situations:

  1. user provided label map contains only one label value, L. In this case, the output label value will be set to OLV, not matter what value L takes.
  2. user provided label map contains multiple label values, one of which matches OLV. Then only that label will be effective and all the others are discarded. The output will have label value OLV too.
  3. user provided label map contains multiple label values, but none matches OLV. Then all the non-zero labels will be considered as a single label value and then come back to the case 1 above.

In the current version, regardless of the number of different labels appearing in the label map, only one object is extracted from the image. The on-going work extends this to extracting multiple objects simultaneously.

Quick Tour of Features and Use

A list panels in the interface, their features, what they mean, and how to use them. For instance:

  • Parameters panel:
    • Approximate volume: The estimated upper limit of the target volume. The resulting volume will be less or equal than this value.
    • Intensity homogeneity: If the target contains homogeneous intensity, then give a close-to-1 value here.
    • Boundary smoothness: Larger value will result in smoother boundary and a more spherical looking result.
    • Output Label Value: Defined the label value of the output. Also refer to the "Multiple-value label map handling" above.
    • Max running time: The upper limit for program running time.
  • IO panel:
    • Input Image: The image to be segmented.
    • Label Image: The label map providing initial seeds.
  • Output Volume: The output volumetric image.
User Interface

Development

Notes from the Developer(s)

Algorithms used, library classes depended upon, use cases, etc.

Dependencies

This module depends on the Slicer editing module, or outside input, to provide initial label image.

Tests

Test testing code and test data sets are included in this module to ensure its successful running on various platforms. The testing file is: SFLSRobustStat3DTestConsole.cxx, residing in the same directory as the module code.

Known bugs

No bug known on Apr 14.2010

Usability issues

Follow this link to the Slicer3 bug tracker. Please select the usability issue category when browsing or contributing.

Source code & documentation

The source code of the algorithm is in 3D Slicer source directory tree. Under Slicer3/Applications/CLI/RobustStatisticsSegmenter/

Moreover, the code above is a self-contained implementation for the 3D Sparse Filed Level Set method. The level set evolution is implemented in the base class. Specific flow, such as Chan-Vese, Geodesic Active Contour, or the Robust Statistics based flow, can be implemented as the derived class. Therefore, it can be reused for other types of flow with not much work.

More Information

Acknowledgment

This work was supported in part by grants from NSF, AFOSR, ARO, as well as by a grant from NIH (NAC P41 RR-13218) through Brigham and Women’s Hospital. An NSF Fellowship supported part of the work.

References

Yi Gao, Ron Kikinis, Sylvain Bouix, Martha Shenton, Allen Tannenbaum, A 3D Interactive Multi-object Segmentation Tool using Local Robust Statistics Driven Active Contours, Medical Image Analysis, 2012, http://dx.doi.org/10.1016/j.media.2012.06.002