Difference between revisions of "Slicer3:EM"

From NAMIC Wiki
Jump to: navigation, search
Line 1: Line 1:
= Goals =
+
=Project Summary=
  
The goal of this project is to implement a Slicer3 module for creating ''templates'' that will be used in segmentation tasks. Each template contains a hierarchy/tree of tissue types, an atlas of prior probability maps for particular tissue types (along with associated T1 and T2 images), and global and node specific algorithm parameters. The template, which is written as an XML file, can be used later to segment new images. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist.
+
The goal of this project is to implement a Slicer3 module for the
 +
EMSegment brain segmentation algorithm (Pohl et al.).  The module
 +
allows the user to create or edit a collection of parameters and then
 +
run the algorithm to segment image data. The target audience for this
 +
module is someone familiar with brain atlases and tissue labels, not a
 +
computer scientist.
  
This module will be demonstrated at the NAMIC All-Hands meeting in January 2007.
+
As of January 1, 2007, the EMSegment module is substantially complete
 +
and has been checked into the Slicer3 SVN repository.  It was
 +
previewed at the December 2006 NAMIC meeting in Clifton Park and will
 +
be a demonstration at the NAMIC All-Hands meeting in Salt Lake City on
 +
Wednesday 10 January 2007.  Future work includes adding advanced and
 +
experimental algorithm parameters, improving visualization of
 +
parameter settings, and incorporating tissue labels from a controlled
 +
vocabulary.
  
= Features =
+
=Contacts=
  
* Slicer3 module for building templates for EM Segmentation tasks (algorithm developed by Kilian Pohl et al.)
+
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)
* tree view for building hierarchy of tissue types and specifying algorithm parameters
+
*Kitware: Brad Davis (brad.davis@kitware.com)
* wizard-like implementation to aid non-expert users
 
* output template as XML file
 
* written demo with example data
 
  
= Plan =
+
=Project Description=
  
We are implementing this project in C++ as a programmatic Slicer3 module. A set of workflow classes are being developed to facilitate the wizard interface. In the interest of time we will port as much code from the Slicer2.6 module as possible.
+
As stated above, the goal of this project is to provide the
 +
functionality of the EMSegment algorithm as a Slicer3 module. A
 +
similar EMSegment module is available in Slicer2.6.  The intent of
 +
this project is to implement a Slicer3 module with similar
 +
functionality while also improving the graphical user interface (GUI).
 +
While the GUI and data structure (MRML) code was completely rewritten
 +
for the Slicer3 module, the algorithm code was not modified.
  
= Status =
+
==High-level Module Description==
  
Not current.
+
The purpose of the module is to build a template that can be used to
 +
segment new image data. The template is composed of atlas data and a
 +
non-trivial collection of parameters for the EMSegment algorithm.  It
 +
is the user's job to specify the parameters so that the template is
 +
effective for segmenting a particular target image or image pair
 +
(e.g., T1 and T2 weighted MR images from a particular scanner). 
  
== 6 Nov 06 ==
+
Once the parameters are specified, the target images are segmented
 +
using the EM Segmentation algorithm (Pohl et al.).  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.
  
* Overall:
+
One important aspect of the project is the workflow wizard.  This
** Slicer3 module scaffolding (Done, Brad)
+
wizard simplifies the module by dividing the complicated template
** Demo design (underway, Brad)
+
specification task into a number of smaller, intuitive steps.
* Data:
+
 
** porting MRML nodes from Slicer2.6 to Slicer3 (underway, Brad)
+
==Steps in EMSegment Workflow==
* Logic: on hold until MRML nodes are finished (Brad)
+
*1/8 Define Parameters Set: Select parameter set or create new parameters
* GUI:
+
*2/8 Define Hierarchy: Define a hierarchy of anatomical structures
** porting intensity distribution widget (underway, Yumin)
+
*3/8 Assign Atlas: Assign atlases for anatomical structures
** workflow classes (underway, Sebastien)
+
*4/8 Select Target Images: Choose the set of images that will be segmented
** implement GUI for this module (not started)
+
*5/8 Specify Intensity Distributions: Define intensity distribution for each anatomical structure
 +
*6/8 Edit Node-based Parameters: Specify node-based segmentation parameters
 +
*7/8 Edit Registration Parameters: Specify atlas-to-target registration parameters
 +
*8/8 Run Segmentation: Save work and apply EM Algorithm to segment target images
 +
 
 +
==Status==
 +
 
 +
A version of the Slicer3 EMSegment module has been completed and
 +
checked into the Slicer3 SVN repository.  Example data have been
 +
packaged and will soon be available from this wiki page.  A tutorial is
 +
under development and will be presented at the January 2007 NAMIC
 +
All-Hands Meeting by K. Pohl and B. Davis.
 +
 
 +
While there is a completed working version of the module it will
 +
likely be under development for some time.  The primary future
 +
development efforts will be for (1) bug fixing, (2) adding new
 +
functionality, (3) modifying the underlying code to make better use of
 +
the evolving Slicer3 base functionality.
 +
 
 +
===Completed===
 +
 
 +
*finalize workflow description (Kilian, Wendy, Brad)
 +
*define new MRML node structure (Kilian, Brad)
 +
*implement workflow wizard (Sebastien, Luis)
 +
*document workflow wizard and write tutorial (Sebastien)
 +
*implement core MRML classes/attributes (Brad)
 +
*implement logic class that manages MRML nodes and provides API to GUI (Brad)
 +
*implement user interface for each wizard step (Yumin, Sebastien)
 +
*create example data and parameter set (Kilian, Brad)
 +
*port algorithm code from Slicer2 (Brad)
 +
 
 +
===In Progress===
 +
*create tutorial (Kilian, Brad)
 +
 
 +
===Future Work===
 +
*run algorithm in a different thread (with progress bars)
 +
*incorporate rules for when user may go to next step in workflow
 +
*add registration to module
 +
*simplified interface---only load template, load images, start segmentation (like EMAtlasBrainClassifier)
 +
*add standardized tissue labels;  need to elaborate on specification
 +
*intensity distribution widget
 +
*incorporate PCA parameters into GUI
 +
*incorporate Class Interaction Matrix parameters into GUI
 +
 
 +
==Implementation Details==
 +
 
 +
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.
 +
 
 +
=EMSegment Tutorial=
 +
 
 +
need to add data here

Revision as of 15:42, 5 January 2007

Home < Slicer3:EM

Project Summary

The goal of this project is to implement a Slicer3 module for the EMSegment brain segmentation algorithm (Pohl et al.). The module allows the user to create or edit a collection of parameters and then run the algorithm to segment image data. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist.

As of January 1, 2007, the EMSegment module is substantially complete and has been checked into the Slicer3 SVN repository. It was previewed at the December 2006 NAMIC meeting in Clifton Park and will be a demonstration at the NAMIC All-Hands meeting in Salt Lake City on Wednesday 10 January 2007. Future work includes adding advanced and experimental algorithm parameters, improving visualization of parameter settings, and incorporating tissue labels from a controlled vocabulary.

Contacts

  • MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)
  • Kitware: Brad Davis (brad.davis@kitware.com)

Project Description

As stated above, the goal of this project is to provide the functionality of the EMSegment algorithm as a Slicer3 module. A similar EMSegment module is available in Slicer2.6. The intent of this project is to implement a Slicer3 module with similar functionality while also improving the graphical user interface (GUI). While the GUI and data structure (MRML) code was completely rewritten for the Slicer3 module, the algorithm code was not modified.

High-level Module Description

The purpose of the module is to build a template that can be used to segment new image data. The template is composed of atlas data and a non-trivial collection of parameters for the EMSegment algorithm. It is the user's job to specify the parameters so that the template is effective for segmenting a particular target image or image pair (e.g., T1 and T2 weighted MR images from a particular scanner).

Once the parameters are specified, the target images are segmented using the EM Segmentation algorithm (Pohl et al.). 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.

Steps in EMSegment Workflow

  • 1/8 Define Parameters Set: Select parameter set or create new parameters
  • 2/8 Define Hierarchy: Define a hierarchy of anatomical structures
  • 3/8 Assign Atlas: Assign atlases for anatomical structures
  • 4/8 Select Target Images: Choose the set of images that will be segmented
  • 5/8 Specify Intensity Distributions: Define intensity distribution for each anatomical structure
  • 6/8 Edit Node-based Parameters: Specify node-based segmentation parameters
  • 7/8 Edit Registration Parameters: Specify atlas-to-target registration parameters
  • 8/8 Run Segmentation: Save work and apply EM Algorithm to segment target images

Status

A version of the Slicer3 EMSegment module has been completed and checked into the Slicer3 SVN repository. Example data have been packaged and will soon be available from this wiki page. A tutorial is under development and will be presented at the January 2007 NAMIC All-Hands Meeting by K. Pohl and B. Davis.

While there is a completed working version of the module it will likely be under development for some time. The primary future development efforts will be for (1) bug fixing, (2) adding new functionality, (3) modifying the underlying code to make better use of the evolving Slicer3 base functionality.

Completed

  • finalize workflow description (Kilian, Wendy, Brad)
  • define new MRML node structure (Kilian, Brad)
  • implement workflow wizard (Sebastien, Luis)
  • document workflow wizard and write tutorial (Sebastien)
  • implement core MRML classes/attributes (Brad)
  • implement logic class that manages MRML nodes and provides API to GUI (Brad)
  • implement user interface for each wizard step (Yumin, Sebastien)
  • create example data and parameter set (Kilian, Brad)
  • port algorithm code from Slicer2 (Brad)

In Progress

  • create tutorial (Kilian, Brad)

Future Work

  • run algorithm in a different thread (with progress bars)
  • incorporate rules for when user may go to next step in workflow
  • add registration to module
  • simplified interface---only load template, load images, start segmentation (like EMAtlasBrainClassifier)
  • add standardized tissue labels; need to elaborate on specification
  • intensity distribution widget
  • incorporate PCA parameters into GUI
  • incorporate Class Interaction Matrix parameters into GUI

Implementation Details

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.

EMSegment Tutorial

need to add data here