Difference between revisions of "Slicer3:EM"

From NAMIC Wiki
Jump to: navigation, search
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/")
 
(67 intermediate revisions by 3 users not shown)
Line 1: Line 1:
−
=Project Summary=
+
<big>'''Note:''' We are migrating this content to the slicer.org domain - <font color="orange">The newer page is [https://www.slicer.org/wiki/Slicer3:EM#Old_.282007.29_Tutorial here]</font></big>a
−
 
 
−
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=
 
−
 
 
−
To try out the module with the tutorial data:
 
−
#build the latest version of Slicer3
 
−
#download and untar the data file below (it is approximately 43 megabytes zipped and  329 megabytes unzipped)
 
−
#start Slicer3
 
−
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data
 
−
##a number of images and MRML nodes will be loaded, this may take some time depending on the speed of you computer and file access
 
−
#in Slicer3 change to the EMSegment module
 
−
#in step 1 of the module make sure that parameter node 100 is selected (that is the one that was loaded in the previous step)
 
−
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go
 
−
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings
 
−
#on step 8/8, select "Run" and the segmentation will start
 
−
##the segmentation takes approximately 2.5 minutes on a dual core Pentium with 2 gigabytes of memory
 
−
##by default the resulting segmentation is saved in the Segmentation_Result image
 
−
 
 
−
[[Media:EMSegmentTutorial_05Jan07.tgz | Tutorial Data 05 Jan 07]]
 

Latest revision as of 17:21, 10 July 2017

Home < Slicer3:EM

Note: We are migrating this content to the slicer.org domain - The newer page is herea