Difference between revisions of "Modules:EMSegmenter-3.6"

From Slicer Wiki
Jump to: navigation, search
 
(54 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
[[EMSegmenter-Overview|Return to EMSegmenter Overview Page]]
 +
 
[[Documentation-3.6|Return to Slicer 3.6 Documentation]]
 
[[Documentation-3.6|Return to Slicer 3.6 Documentation]]
  
Line 4: Line 6:
  
 
__NOTOC__
 
__NOTOC__
===Module Name===
+
===EMSegmenter===
MyModule
+
EMSegmenter
 
 
{|
 
|[[Image:Rannou_Jaume_Pieper_Kikinis_New_Expectation_Maximization_Segmentation_Pipeline_in_Slicer3.jpg|thumb|580px|EM Segment Pipeline]]
 
|}
 
  
 
== General Information ==
 
== General Information ==
Line 19: Line 17:
  
 
===Authors, Collaborators & Contact===
 
===Authors, Collaborators & Contact===
* Brad Davis, Kitware
+
* Daniel Haehn, UPenn
* Sylvain Jaume: MIT
+
* Dominique Belhachemi, UPenn
* Kilian Pohl: IBM
+
* Kilian Pohl: UPenn
* Nicolas Rannou: Harvard Medical School
+
* Contact: Kilian Pohl <pohl@csail.mit.edu>
* Contact: Kilian Pohl <sylvain@csail.mit.edu>
 
  
 
===Module Description===
 
===Module Description===
This module is designed for users who performs tissue classification (aka image parcelation) for volumetric medical images. This module has been tested on brain MRI images. Familiarity with statistical modeling may help but is not required. It allows the user to configure the algorithm---step-by-step---to a variety of imaging protocols and anatomical structures, and then apply the algorithm to segment data. Configuration settings are stored in an EMSegment parameters node in the Slicer3 MRML tree. These settings can be saved and later applied to new data via any of the EMSegment interfaces within Slicer3 or the command-line EMSegment executable.
+
[[Image:EMSegmenterLogo.png|thumb|width=200px|Hierarchical Model of the EMSegmenter]]
 
+
This module is designed for users who perform atlas based medical image segmentation. The module can be operated in <B>two</B> modes: <br>
The EMSegment in Slicer 3.6 has been improved to allow for visual feedback of parameter selection.
+
An <B>advanced mode (Button: Adjust Parameters)</B> that allows users to parameterize the tool to specific segmentation tasks and a <B>simple mode (Button: Use Existing Setting)</B> which is designed for users who would like to apply the predefined parameterization to new data with a minimal amount of user interaction. One can also apply the parameterization to medical scans via the command-line executable <B>EMSegmentCommandLine</B>. The remainder of this sections describes the work flow of the two modes in further detail:
The main features that have been added in Slicer 3.6 include:
 
 
 
* Visualization of the image histogram for intensity normalization
 
 
 
The gaussian visualization enables an intuitive interpretation of the data and an efficient selection of parameters.
 
The normalization parameter values for the atlas are computed based on the user selection.
 
{|
 
|[[Image:EMSegment_Intensity_Normalization.png|thumb|580px|EMSegment intensity normalization]]
 
|}
 
 
 
The sample selection through the Editor module allows for an rapid selection of a high number of samples
 
as well as the visualization of the selected points (previously the points were not displayed).
 
Thanks to the integration of the sample selection with the Editor module,
 
a pre-existing label map can be used and refined using the EMSegment module.
 
 
 
* Visualization of 2D Gaussian models for image intensity distributions
 
The image intensities for every class are modeled by a gaussian distribution.
 
{|
 
|[[Image:EMSegment_Gaussian_2D.png|thumb|580px|EMSegment image intensity modeling as 2D gaussian distributions]]
 
|}
 
 
 
* Visualization of the global prior parameter value in the image histogram
 
The global prior parameter can be selected interactively by moving a vertical cursor in the image intensity histogram.
 
{|
 
|[[Image:EMSegment_Global_Prior_Visualization.png|thumb|580px|EMSegment visualization of the global prior parameter value]]
 
|}
 
  
 
== Usage ==
 
== Usage ==
Line 66: Line 37:
 
re-run.
 
re-run.
  
One important aspect of the project is the workflow wizard. This
+
One important aspect of the project is the workflow wizard. This wizard simplifies the module by dividing the complicated template specification task into a number of smaller, intuitive steps. The wizard allows to [[EMSegmenter-CreateTask|create tasks]] and to use them to analyze data sets.
wizard simplifies the module by dividing the complicated template
+
 
specification task into a number of smaller, intuitive steps.
+
There are multiple [[EMSegmenter-Tasks|'''predefined tasks''']] which are ready to use.
 +
 
 +
=== Simple Mode ===
 +
The work flow is defined by only two steps.
 +
==== Step 1: Define Task ====
 +
Select an already existing task and click on the "Use Existing Settings" button to use for the simple mode in the pop up window.
 +
A MRML file defining parameters of the algorithm specific to the task as well atlas data are automatically downloaded for existing Tasks.
 +
==== Step 2: Define Input Channels  ====
 +
In this step the user specifies the scans to be segmented as well as the check list associated with the preprocessing.
 +
A click on the 'Segment' button is enough to start the pre-processing and the subsequent segmentation.
 +
 
 +
=== Advanced Mode ===
 +
Unlike the Simple mode, the advanced mode is defined by nine steps which one can navigate via the "Back", "Next", or "Segment" button. The Segment button jumps right away to the last step of the work flow and segments the medical scans into the structures of interests. 
 +
==== Step 1: Define Task ====
 +
Select an already existing task or define a new one. Click on the button "Adjust Parameters" for the advanced mode in the pop up window. A MRML file defining parameters of the algorithm specific to the task as well atlas data are automatically downloaded for existing Tasks.
 +
==== Step 2: Define Input Channel  ====
 +
Define the number of input channels as well as the name of each channel and the corresponding scan associated with the channel. If using multiple input channel(scans) which are not aligned with each other then check on the check-box button "Align input scans".
 +
==== Step 3: Define Anatomical Tree  ====
 +
The user specifies the hierarchical relationship between the anatomical structures. The tree will refine the complex segmentation task into a set of easier segmentation problems. A sub-classes is added to an existing structure by right-clicking on the structure and selecting "Add sub-class". The name, label, and color of a structure are modified by selecting the structure in the tree and then defining these attributes in the panel below.
 +
==== Step 4: Define Atlas  ====
 +
In this step, the user links the probabilistic atlases to the anatomical structures in the tree by first highlighting the structure and then selecting the volume representing the probability map of that structure in the panel below. We note that the probabilistic atlas of structures with sub-structures is defined by the atlases of the sub-structures and thus is not explicitly defined.
 +
==== Step 5: Edit Registration Parameters ====
 +
The atlas is in general not aligned to the specific patient scans defined in Step 2. The user assigns in this step the scans of the atlas corresponding to the input channels in Step 2 as well as the type of registration (Affine / Deformable) and the interpolation.
 +
==== Step 6: Define Preprocessing ====
 +
[[Image:EMSegmenter_DisplayClassDistribution.png | thumb|width=200px|Graph showing intensity distributions of a set of anatomical structures]] This step is defined via a task specific Tcl file that configures the preprocessing pipeline of the input scans and the atlas. Complete the step by going through the task specific check list, clicking on the 'Next' button, and clicking on the 'Yes' button of the pop up window.  One can define a new preprocessing pipeline by specifying the pipeline via a Tcl file, placing the file in Slicer3-build/share/Slicer3/Modules/EMSegment/Tasks and listing the file name in the task specific MRML file.
 +
 
 +
==== Step 7: Specify Intensity Distribution ====
 +
Refining the intensity distribution for each structure of interest is often a critical step in the parameterization of the segmentation algorithm. The panel includes an overview window that shows the distribution in a 1D and 2D graph (press "Plot Distributions" to view the graph). By placing the mouse cursor in the 2D viewers the corresponding intensity value is shown in the graph.
 +
 
 +
==== Step 8: Edit Node-based Parameters ====
 +
Users specify the relative to weight of a node in the tree with respect to other structures which are children of the same parent node. The first tab also specifies the weight of the input channels as well as the atlases. The value 'Alpha' specifies the smoothing applied to the structure (via MRFs). The second tab (Stopping Condition) lists the number of iterations associated with the segmentation task. By default, the Bias iteration is set to -1 which means that it is performed each iteration. If the value is greater -1 then the inhomogeneity computation is stopped after n iterations. The third tab specifies printing out intermediate results, which are saved in the working directory specified in the next step
 +
==== Step 9: Define Miscellaneous Parameters ====
 +
This panels lists the general parameters necessary for segmenting images. Users can specify a region of interest to speed up the segmentation algorithm. Pressing the 'Segment' button creates a label map of the anatomical structures.
  
 
===Use Cases, Examples & Tutorials ===
 
===Use Cases, Examples & Tutorials ===
  
* A full Tutorial for all three EMSegment modules
+
* EMSegmenter Tutorial for 3D Slicer 3.6.2
 +
** [[Media:EMSegmenterTutorialSimpleMode-2010-Dec.pdf | Simple Mode]] - [[Media:MRIHumanBrain_T1_aligned.nrrd | Tutorial Data]]
 +
** [[Media:EMSegmenterTutorialAdvancedMode-2010-Dec.pdf | Advanced Mode]] - [[Media:MRIHumanBrain_T1_aligned.nrrd | Tutorial Data]]
  
These slides and data describe the Slicer3 implementation of all three EMSegment modules and demonstrate their use. A recent (later than 7Jan08) version of Slicer3 is required to run the test data.
+
* EMSegmenter Tutorial for 3D Slicer 3.6.3
 +
** [[Media:EMSegmenterTutorialSimpleMode-Slicer-3.6.3-1.pdf | Simple Mode]] - [[Media:MRIHumanBrain_T1_aligned.nrrd | Tutorial Data]]
 +
** [[Media:EMSegmenterTutorialAdvancedMode-Slicer-3.6.3-1.pdf | Advanced Mode]] - [[Media:MRIHumanBrain_T1_aligned.nrrd | Tutorial Data]]
  
[[Media:EMSegTutorial-AHM2008.ppt | Tutorial Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Tutorial Data]]
 
  
* Another detailed training tutorial on EM Segment algorithm and Slicer3 EMSegment Template Builder module
+
* A full Tutorial for all two EMSegment modules
[http://wiki.na-mic.org/Wiki/images/2/2f/AutomaticSegmentation_SoniaPujol_Munich2008.ppt Tutorial Slides] - [http://wiki.na-mic.org/Wiki/images/b/b7/AutomaticSegmentation.tar.gz Training Data]
+
 
 +
These slides and data describe the Slicer3 implementation of the two EMSegment GUI and command-line modules and demonstrate their use.
  
===Quick Tour of Features and Use===
+
[[Media:EMSegTutorial-AHM2008.ppt | Tutorial Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Tutorial Data]]
  
There is a [[Modules:EMSegment-TemplateBuilder:EMSegment-TemplateBuilder-Steps | step-by-step instruction]] with screen shots to describe the Workflow Wizard interface.  
+
* Another detailed training tutorial on EMSegment algorithm and the Slicer3 EMSegment module.
Here is the brief version of the steps in the wizard:
 
  
*1/9 Define Parameters Set: Select parameter set or create new parameters
+
[http://wiki.na-mic.org/Wiki/images/2/2f/AutomaticSegmentation_SoniaPujol_Munich2008.ppt  Tutorial Slides] -  
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures
+
[http://wiki.na-mic.org/Wiki/images/b/b7/AutomaticSegmentation.tar.gz  Training Data]
*3/9 Assign Atlas: Assign atlases for anatomical structures
 
*4/9 Select Target Images: Choose the set of images that will be segmented
 
*5/9 Intensity Normalization: Normalize target images
 
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure
 
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters
 
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters
 
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images
 
  
 
== Development ==
 
== Development ==
Line 127: Line 126:
 
*[http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/EMSegment/Testing/vtkEMSegmentReadWriteMRMLTest.cxx vtkEMSegmentReadWriteMRMLTest  ]
 
*[http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/EMSegment/Testing/vtkEMSegmentReadWriteMRMLTest.cxx vtkEMSegmentReadWriteMRMLTest  ]
 
*[http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/EMSegment/Testing/vtkEMSegmentTestUtilities.cxx  vtkEMSegmentTestUtilities ]
 
*[http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/EMSegment/Testing/vtkEMSegmentTestUtilities.cxx  vtkEMSegmentTestUtilities ]
 +
 
===Known bugs===
 
===Known bugs===
  
Links to known bugs in the Slicer3 bug tracker
+
* [http://www.na-mic.org/Bug/view_all_bug_page.php Links ] to known bugs in the Slicer3 bug tracker. Please expand the search options, select EMSegmenter in the category, and press apply filter
 
 
* [http://www.na-mic.org/Bug/view.php?id=000 Bug 000: description]  
 
 
 
  
 
===Usability issues===
 
===Usability issues===
 
The EMSegment can be adapted to many segmentation problems.  However, there is no "default" set of parameters that will work for all segmentation problems. 
 
*Atlas-to-target registration and intensity normalization are very important; it will be most effective to apply these steps using algorithms that are customized to your data.  Defaults are provided but they may perform poorly for your data---this will lead to poor segmentation results.
 
 
 
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.
 
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.
  
Line 148: Line 141:
  
 
== More Information ==  
 
== More Information ==  
*Background materials: [http://wiki.na-mic.org/Wiki/index.php/EMSegmenter EMSegment history]
+
*For more information about the EM Segmenter project see the [[EMSegmenter-Overview| EMSegmenter Wiki page here]]
*For more information about the EM Segmenter project in Slicer3 [[Slicer3:EM|see the old EMSegment Wiki page here]]
 
*The old [[Modules:EM-Segmenter-Documentation:FAQ |EMSegment FAQ]] contains frequently asked questions about the EMSegment interfaces in Slicer3.
 
*There is also an old [http://www.na-mic.org/Wiki/index.php/EMSegmenter_Mini-Tutorials EMSegmenter Mini-Tutorials]
 
  
 
===Acknowledgment===
 
===Acknowledgment===
Line 158: Line 148:
  
 
===References===
 
===References===
 
+
*Pohl K, Bouix S, Nakamura M, Rohlfing T, McCarley R, Kikinis R, Grimson W, Shenton M, Wells W. [http://www.slicer.org/pages/Special:PubDB_View?dspaceid=608 A Hierarchical Algorithm for MR Brain Image Parcellation.] IEEE Transactions on Medical Imaging. 2007 Sept;26(9):1201-1212. [[http://people.csail.mit.edu/pohl/publications/journal-citation-bib.html#pohl07_3 bib]]
Pohl K, Bouix S, Nakamura M, Rohlfing T, McCarley R, Kikinis R, Grimson W, Shenton M, Wells W. [http://www.slicer.org/pages/Special:PubDB_View?dspaceid=608 A Hierarchical Algorithm for MR Brain Image Parcellation.] IEEE Transactions on Medical Imaging. 2007 Sept;26(9):1201-1212.
 
 
 
[[http://people.csail.mit.edu/pohl/publications/journal-citation-bib.html#pohl07_3 bib]]
 
Rannou N, Jaume S, Pieper S, Kikinis R, [http://www.slicer.org/publications/item/view/1694 New Expectation Maximization Segmentation Pipeline in Slicer 3] Insight Journal 2009 [http://insight-journal.org/browse/publication/696]
 

Latest revision as of 02:09, 10 December 2011

Home < Modules:EMSegmenter-3.6

Return to EMSegmenter Overview Page

Return to Slicer 3.6 Documentation

Gallery of New Features


EMSegmenter

EMSegmenter

General Information

Module Type & Category

Type: Interactive

Category: Segmentation

Authors, Collaborators & Contact

  • Daniel Haehn, UPenn
  • Dominique Belhachemi, UPenn
  • Kilian Pohl: UPenn
  • Contact: Kilian Pohl <pohl@csail.mit.edu>

Module Description

Hierarchical Model of the EMSegmenter

This module is designed for users who perform atlas based medical image segmentation. The module can be operated in two modes:
An advanced mode (Button: Adjust Parameters) that allows users to parameterize the tool to specific segmentation tasks and a simple mode (Button: Use Existing Setting) which is designed for users who would like to apply the predefined parameterization to new data with a minimal amount of user interaction. One can also apply the parameterization to medical scans via the command-line executable EMSegmentCommandLine. The remainder of this sections describes the work flow of the two modes in further detail:

Usage

The purpose of the module is to configure the algorithm to automatically segment anatomical structures in medical images. First the user has to specify parameters defining the image protocol and the anatomical structures of interests. This process results in a template that the module uses to automatically segment large data sets. The template is composed of atlas data and a non-trivial collection of parameters for the EMSegment algorithm.

Once the parameters are specified, the target images are segmented using the EM Segmentation algorithm (Pohl et al. TMI 2007). If the results are satisfactory, the template is saved and can be used later to segment new images (via the GUI or batch processing). If the results are unsatisfactory, the parameters can be modified and the segmentation re-run.

One important aspect of the project is the workflow wizard. This wizard simplifies the module by dividing the complicated template specification task into a number of smaller, intuitive steps. The wizard allows to create tasks and to use them to analyze data sets.

There are multiple predefined tasks which are ready to use.

Simple Mode

The work flow is defined by only two steps.

Step 1: Define Task

Select an already existing task and click on the "Use Existing Settings" button to use for the simple mode in the pop up window. A MRML file defining parameters of the algorithm specific to the task as well atlas data are automatically downloaded for existing Tasks.

Step 2: Define Input Channels

In this step the user specifies the scans to be segmented as well as the check list associated with the preprocessing. A click on the 'Segment' button is enough to start the pre-processing and the subsequent segmentation.

Advanced Mode

Unlike the Simple mode, the advanced mode is defined by nine steps which one can navigate via the "Back", "Next", or "Segment" button. The Segment button jumps right away to the last step of the work flow and segments the medical scans into the structures of interests.

Step 1: Define Task

Select an already existing task or define a new one. Click on the button "Adjust Parameters" for the advanced mode in the pop up window. A MRML file defining parameters of the algorithm specific to the task as well atlas data are automatically downloaded for existing Tasks.

Step 2: Define Input Channel

Define the number of input channels as well as the name of each channel and the corresponding scan associated with the channel. If using multiple input channel(scans) which are not aligned with each other then check on the check-box button "Align input scans".

Step 3: Define Anatomical Tree

The user specifies the hierarchical relationship between the anatomical structures. The tree will refine the complex segmentation task into a set of easier segmentation problems. A sub-classes is added to an existing structure by right-clicking on the structure and selecting "Add sub-class". The name, label, and color of a structure are modified by selecting the structure in the tree and then defining these attributes in the panel below.

Step 4: Define Atlas

In this step, the user links the probabilistic atlases to the anatomical structures in the tree by first highlighting the structure and then selecting the volume representing the probability map of that structure in the panel below. We note that the probabilistic atlas of structures with sub-structures is defined by the atlases of the sub-structures and thus is not explicitly defined.

Step 5: Edit Registration Parameters

The atlas is in general not aligned to the specific patient scans defined in Step 2. The user assigns in this step the scans of the atlas corresponding to the input channels in Step 2 as well as the type of registration (Affine / Deformable) and the interpolation.

Step 6: Define Preprocessing

Graph showing intensity distributions of a set of anatomical structures

This step is defined via a task specific Tcl file that configures the preprocessing pipeline of the input scans and the atlas. Complete the step by going through the task specific check list, clicking on the 'Next' button, and clicking on the 'Yes' button of the pop up window. One can define a new preprocessing pipeline by specifying the pipeline via a Tcl file, placing the file in Slicer3-build/share/Slicer3/Modules/EMSegment/Tasks and listing the file name in the task specific MRML file.

Step 7: Specify Intensity Distribution

Refining the intensity distribution for each structure of interest is often a critical step in the parameterization of the segmentation algorithm. The panel includes an overview window that shows the distribution in a 1D and 2D graph (press "Plot Distributions" to view the graph). By placing the mouse cursor in the 2D viewers the corresponding intensity value is shown in the graph.

Step 8: Edit Node-based Parameters

Users specify the relative to weight of a node in the tree with respect to other structures which are children of the same parent node. The first tab also specifies the weight of the input channels as well as the atlases. The value 'Alpha' specifies the smoothing applied to the structure (via MRFs). The second tab (Stopping Condition) lists the number of iterations associated with the segmentation task. By default, the Bias iteration is set to -1 which means that it is performed each iteration. If the value is greater -1 then the inhomogeneity computation is stopped after n iterations. The third tab specifies printing out intermediate results, which are saved in the working directory specified in the next step

Step 9: Define Miscellaneous Parameters

This panels lists the general parameters necessary for segmenting images. Users can specify a region of interest to speed up the segmentation algorithm. Pressing the 'Segment' button creates a label map of the anatomical structures.

Use Cases, Examples & Tutorials


  • A full Tutorial for all two EMSegment modules

These slides and data describe the Slicer3 implementation of the two EMSegment GUI and command-line modules and demonstrate their use.

Tutorial Slides - Tutorial Data

  • Another detailed training tutorial on EMSegment algorithm and the Slicer3 EMSegment module.

Tutorial Slides - Training Data

Development

The overall design of the EMSegment module is described in the AHM2008 slides.

The module is implemented as a programmatic Slicer3 module because it requires a large degree of interaction with the user, the data stored in the MRML tree, and the Slicer3 GUI itself. Because the MRML node structure is rather complicated (for example the anatomical tissue hierarchy and a large number of interdependent nodes) the Logic class is solely responsible for maintaining and accessing these nodes. The Logic class provides an API that the GUI code uses to access and modify data. The Logic class also wraps the algorithm code itself.

Notes from the Developer(s)

N/A

Dependencies

Slicer3 base modules.


Tests

On the Dashboard, these tests verify that the module is working on various platforms:

Known bugs

  • Links to known bugs in the Slicer3 bug tracker. Please expand the search options, select EMSegmenter in the category, and press apply filter

Usability issues

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

Source code & documentation

Links for the module.

More Information

Acknowledgment

We thank Andriy Fedorov and Alexander Zaitsev for pointing to and fixing issues in the early development. Funding for the EMSegment module was provided by NA-MIC and NAC (PI: Ron Kikinis).

References