|
|
(70 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=
| |
− | | |
− | need to add data here
| |
− | | |
− | [[Media:EMSegmentTutorial_05Jan07.tgz]]
| |