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/")
 
(48 intermediate revisions by 2 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 the creation of a module in Slicer 3 integrating the EMSegment algorithm (Pohl et al.), an automatic segmentation algorithm for medical images that previously existed in Slicer 2. As in Slicer 2, the user is able to adjust the algorithm to a variety of imaging protocols as well as anatomical structures and run the segmenter on large data set. However, the configuration of the algorithm is greatly simplified in Slicer 3 as the user is guided by a work flow. 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 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.).  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)
 
*create tutorial (Kilian, Brad)
 
 
 
===In Progress===
 
*bug fixes
 
*intensity distribution widget
 
*incorporate feedback from NAMIC community into priorities for future work
 
 
 
===Future Work===
 
 
 
Prioritized future work for EMSegment Module:
 
 
 
Documentation & Outreach:
 
*(+1) template library---parameters sets that others can use (Kilian)
 
**distribution of information/data/templates
 
**link to wiki/web page for data/templates
 
*(+1) develop help for module (Kilian & Brad)
 
*( 0) expand developer documentation (some work critical)
 
*(-1) user tutorial development (later)
 
 
 
New Features:
 
*(+1) one-click  segmentation of new images (Brad)
 
*(+1) class overview widget (Brad)
 
*(+1) intensity distribution widget (Brad)
 
*(+1) intensity normalization across scanners (Brad & Kilian)
 
*(+1) atlas-to-image registration  (Slicer community)
 
**coordinate with other Slicer3 developers; Ron, Will, Bill
 
*(+1) change log-normal to normal (Slicer community)
 
*(+1) generate surface models (Slicer community)
 
**coordinate with other Slicer3 developers; Ron, Will, Steve
 
*( 0) controlled vocabulary
 
**color---label from controlled set---need specification & use cases
 
*( 0) rules for wizard transitions
 
*( 0) volume computation
 
**coordinate with other Slicer3 developers; Ron, Will, Steve
 
*(-1) tissue labels carry through to other Slicer3 modules
 
*(-1) PCA interface
 
*(-1) CIM interface
 
 
 
Updates to current code:
 
 
 
Usability:
 
*(+1) rename buttons with more intuitive names: (Kilian & Brad)
 
**manual, manually segment, etc.: Edit, Sample Points, Automatic
 
**when modifying tissue class tree: add "sub-class" instead of "child node"
 
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)
 
*(+1) undo/redo (Brad)
 
*(+1) progress bar (threading?) (Brad)
 
*(+1) small gui tweaks (Kilian & Brad)
 
 
 
Engineering:
 
*(+1) testing (Brad)
 
*( 0) expand updating based on MRML events
 
 
 
==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 nodesThe
 
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 (or unzip) 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 the parameter node "TutorialTemplate" 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 Intel processor with 2 gigabytes of memory
 
##by default the resulting segmentation is saved in the segmentation_result.mhd image
 
 
 
Tutorial:  [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]
 
 
 
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]
 

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