https://www.na-mic.org/w/api.php?action=feedcontributions&user=Davisb&feedformat=atomNAMIC Wiki - User contributions [en]2024-03-28T12:27:31ZUser contributionsMediaWiki 1.33.0https://www.na-mic.org/w/index.php?title=Events:Computational_Methods_for_Radiation_Oncology&diff=66955Events:Computational Methods for Radiation Oncology2011-05-02T12:38:51Z<p>Davisb: /* Confirmed Participants */</p>
<hr />
<div> Back to [[Events]]<br />
<br />
==Date and Location==<br />
Date: Thursday, May 5, 2011<br />
<br />
Location: Surgery Education Office, Room CA-034, Carrie Hall, 15 Francis Street. ([[Media:Directions to CA-034 Carrie Hall 15 Francis Street Boston.doc|Directions]])<br />
<br />
In addition, the following information is useful for first time visitors to the hospital:<br />
*http://www.brighamandwomens.org/about_bwh/locations/directions/default.aspx<br />
*On the "Pike map" PDF link (bottom of page), the Carrie Hall building is closest to the 15 Francis St entrance -- enter through the columns.<br />
*On Google Street View/Map, the Carrie Hall building is near the label "Howard Hughes Medical Institute". <br />
<br />
==Agenda==<br />
<br />
To brainstorm computational methods for radiation oncology between UNC, NA-MIC, BWH.<br />
<br />
<br />
*8am: Breakfast<br />
*8:30-10:30am: UNC -presentations about capabilities of current projects, short term and longer term plans <br />
**Julian Rosenman PLUNC 18 minutes<br />
**Gregg Tracton Software for PLUNC, segmentation, registration 10 minutes<br />
**Stephen Pizer Registration by regression (2 methods), Segmentation via posterior optimization, training probability distributions on s reps and quantile functions, segmentation via correspondence-preserving warps, ant aliasing 23 minutes<br />
**Sha Chang Nanotube imaging, incl. for IGRT 10 minutes <br />
**Brandon Frederick Iterative tomographic reconstruction, CTs at treatment time, gpu’s 15 minutes<br />
**Derek Merck 3D visualization via model-guided rendering, 3D visualization in PLUNC for RTP 15 minutes <br />
**Ilknur Kabul Texturing of surfaces, onion skins, and cut planes; interpolation of textures 10 minutes<br />
**Hina Shah Registration of endoscopic cine and CT of throat,fused displays of these two registered sources 8 minutes<br />
**Ron Alterovitz Planning for brachytherapy with curved needles, FEM software 12 minutes<br />
*10:30 am: Break <br />
*10:50am-12:10pm: NA-MIC/Harvard presentations about capabilities of current projects, short term and longer term plans<br />
**Slicer3 to Slicer 4, Radiation Therapy support today, and plans for the next year (Steve Pieper) (15 minutes)<br />
**SPARKit, Canadian grant for providing open source software platform for radiotherapy, potentially based on NA-MIC Kit (Andras Lasso) (10minutes)<br />
**Head and Neck Cancer NA-MIC DBP (Greg Sharp) (15 minutes)<br />
**Gynecologic Cancer Brachytherapy Plans (Tina Kapur) (15 minutes)<br />
**Shadie, shading language for volume visualization(Hanspeter Pfister, Milos Hasan, George Chen, John Wolfgang) (20 minutes)<br />
*12:10pm pm: Lunch<br />
*1pm: Intro of afternoon objectives (Julian Rosenman) <br />
*1:10pm: What UNC/Boston system combinations ought to be developed -- the Boston perspective (Tina Kapur)<br />
*1:30pm: What Boston/UNC system combinations ought to be developed -- the UNC perspective (Steve Pizer)<br />
*2:00-2:30pm: Comments from Kitware about their capabilities relevant to proposed combinations (Brad Davis)<br />
*2:30pm: Break and subgroup formation (e.g., merging surgical and radiation treatment planning system; 3D visualization software for treatment planning; image analysis software for treatment planning)<br />
*3:00-4pm: Subgroups sketch out mechanics for collaborations<br />
*4:00-5:0pm: Summary: what we do next?<br />
<br />
==Confirmed Participants==<br />
<br />
#Julian Rosenman <br />
#Gregg Tracton <br />
#Stephen Pizer <br />
#Sha Chang <br />
#Brandon Frederick <br />
#Derek Merck <br />
#Ilknur Kabul <br />
#Hina Shah <br />
#Ron Alterovitz <br />
#Ron Kikinis<br />
#Sandy Wells <br />
#Steve Pieper<br />
#Andras Lasso<br />
#Greg Sharp<br />
#Tina Kapur<br />
#Hanspeter Pfister<br />
#Milos Hasan<br />
#George Chen<br />
#John Wolfgang<br />
#Petter Risholm<br />
#Andrey Fedorov<br />
#James Balter<br />
#Brad Davis<br />
#Andinet Enquobahrie</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3.2:Training&diff=24554Slicer3.2:Training2008-05-12T16:20:22Z<p>Davisb: /* EMSegment Template Builder */</p>
<hr />
<div>[[Image:3DSlicerLogo-H-Color-424x236.png | right]]<br />
<br />
== Welcome to the Slicer3 101 page (under construction)==<br />
<br />
Slicer 3 has been envisioned as<br />
<br />
* an easy-to-use application for 3D image analysis and visualization,<br />
* an open-source environment for software development,<br />
* a technology delivery platform for community breakthroughs.<br />
<br />
Slicer3 is distributed under a BSD open source license, and is designed to enable a collaborative development environment.<br />
<br />
For course related questions, please send an e-mail to Sonia Pujol, Ph.D. (spujol at bwh.harvard.edu).<br />
<br />
== Software Installation ==<br />
The [http://www.na-mic.org/Wiki/index.php/Slicer3:Downloads download instructions] will guide you through the installation of the Slicer3 software appropriate to your platform. <br />
<br />
==Level 1: Getting Started==<br />
<br />
The Slicer3 course for users introduces the basics of loading, visualizing and interacting with data in 3D.<br />
<br />
'''Tutorial:''' [[Media:Slicer3Training_LoadingAndVisualization.ppt| Data Loading and Visualization in Slicer3 ]] '''- Dataset:''' [http://www.na-mic.org/Wiki/index.php/Image:SlicerSampleVisualization.tar.gz SlicerSampleVisualization.tar.gz]<br />
<br />
==Level 2: Developer Training==<br />
<br />
The Slicer3 course for developers teaches how to plug an external executable to Slicer3. <br />
This tutorial is intended for engineers who want to to integrate external programs with Slicer3 using the new Execution Model, and leverage the visualization, data integration and processing capabilities that are available in the Slicer3 environment.<br />
<br />
'''Tutorial:''' [[media:Slicer3CourseForDevelopers SPujol.ppt|Slicer3 Course for Developers]] '''- Dataset:''' [[Media:HelloWorld.zip|HelloWorld.zip]]<br />
<br />
==Module Tutorials==<br />
<br />
===EMSegment Template Builder===<br />
'''Tutorial (2008):''' [[Media:EMSegTutorial-AHM2008.ppt|PowerPoint Slides]] '''- Tutorial (2007):''' [[Media:NAMIC-AHM07-EMTutorialV2.ppt|PowerPoint Slides]]'''- Dataset:''' [[Media:EMSegTutorial-AHM2008.zip|EMSegTutorial-AHM2008.zip]]<br />
<br />
'''Mini-tutorials:''' [[EMSegmenter Mini-Tutorials]]<br />
<br /> Back to [[Training:Main|Training:Main]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3.2:Training&diff=24553Slicer3.2:Training2008-05-12T16:19:53Z<p>Davisb: /* EMSegment Template Builder */</p>
<hr />
<div>[[Image:3DSlicerLogo-H-Color-424x236.png | right]]<br />
<br />
== Welcome to the Slicer3 101 page (under construction)==<br />
<br />
Slicer 3 has been envisioned as<br />
<br />
* an easy-to-use application for 3D image analysis and visualization,<br />
* an open-source environment for software development,<br />
* a technology delivery platform for community breakthroughs.<br />
<br />
Slicer3 is distributed under a BSD open source license, and is designed to enable a collaborative development environment.<br />
<br />
For course related questions, please send an e-mail to Sonia Pujol, Ph.D. (spujol at bwh.harvard.edu).<br />
<br />
== Software Installation ==<br />
The [http://www.na-mic.org/Wiki/index.php/Slicer3:Downloads download instructions] will guide you through the installation of the Slicer3 software appropriate to your platform. <br />
<br />
==Level 1: Getting Started==<br />
<br />
The Slicer3 course for users introduces the basics of loading, visualizing and interacting with data in 3D.<br />
<br />
'''Tutorial:''' [[Media:Slicer3Training_LoadingAndVisualization.ppt| Data Loading and Visualization in Slicer3 ]] '''- Dataset:''' [http://www.na-mic.org/Wiki/index.php/Image:SlicerSampleVisualization.tar.gz SlicerSampleVisualization.tar.gz]<br />
<br />
==Level 2: Developer Training==<br />
<br />
The Slicer3 course for developers teaches how to plug an external executable to Slicer3. <br />
This tutorial is intended for engineers who want to to integrate external programs with Slicer3 using the new Execution Model, and leverage the visualization, data integration and processing capabilities that are available in the Slicer3 environment.<br />
<br />
'''Tutorial:''' [[media:Slicer3CourseForDevelopers SPujol.ppt|Slicer3 Course for Developers]] '''- Dataset:''' [[Media:HelloWorld.zip|HelloWorld.zip]]<br />
<br />
==Module Tutorials==<br />
<br />
===EMSegment Template Builder===<br />
'''Tutorial (2008):''' [[Media:EMSegTutorial-AHM2008.ppt|PowerPoint Slides]] '''- Tutorial (2007):''' [[Media:NAMIC-AHM07-EMTutorialV2.ppt|PowerPoint Slides]]'''- Dataset:''' [[Media:EMSegTutorial-AHM2008.zip|EMSegTutorial-AHM2008.zip]]<br />
'''Mini-tutorials:''' [[EMSegmenter Mini-Tutorials]]<br />
<br /> Back to [[Training:Main|Training:Main]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3.2:Training&diff=24552Slicer3.2:Training2008-05-12T16:18:40Z<p>Davisb: /* EMSegment Template Builder */</p>
<hr />
<div>[[Image:3DSlicerLogo-H-Color-424x236.png | right]]<br />
<br />
== Welcome to the Slicer3 101 page (under construction)==<br />
<br />
Slicer 3 has been envisioned as<br />
<br />
* an easy-to-use application for 3D image analysis and visualization,<br />
* an open-source environment for software development,<br />
* a technology delivery platform for community breakthroughs.<br />
<br />
Slicer3 is distributed under a BSD open source license, and is designed to enable a collaborative development environment.<br />
<br />
For course related questions, please send an e-mail to Sonia Pujol, Ph.D. (spujol at bwh.harvard.edu).<br />
<br />
== Software Installation ==<br />
The [http://www.na-mic.org/Wiki/index.php/Slicer3:Downloads download instructions] will guide you through the installation of the Slicer3 software appropriate to your platform. <br />
<br />
==Level 1: Getting Started==<br />
<br />
The Slicer3 course for users introduces the basics of loading, visualizing and interacting with data in 3D.<br />
<br />
'''Tutorial:''' [[Media:Slicer3Training_LoadingAndVisualization.ppt| Data Loading and Visualization in Slicer3 ]] '''- Dataset:''' [http://www.na-mic.org/Wiki/index.php/Image:SlicerSampleVisualization.tar.gz SlicerSampleVisualization.tar.gz]<br />
<br />
==Level 2: Developer Training==<br />
<br />
The Slicer3 course for developers teaches how to plug an external executable to Slicer3. <br />
This tutorial is intended for engineers who want to to integrate external programs with Slicer3 using the new Execution Model, and leverage the visualization, data integration and processing capabilities that are available in the Slicer3 environment.<br />
<br />
'''Tutorial:''' [[media:Slicer3CourseForDevelopers SPujol.ppt|Slicer3 Course for Developers]] '''- Dataset:''' [[Media:HelloWorld.zip|HelloWorld.zip]]<br />
<br />
==Module Tutorials==<br />
<br />
===EMSegment Template Builder===<br />
'''Tutorial (2008):''' [[Media:EMSegTutorial-AHM2008.ppt|PowerPoint Slides]] '''- Tutorial (2007):''' [[Media:NAMIC-AHM07-EMTutorialV2.ppt|PowerPoint Slides]]'''- Dataset:''' [[Media:EMSegTutorial-AHM2008.zip|EMSegTutorial-AHM2008.zip]]<br />
<br />
<br /> Back to [[Training:Main|Training:Main]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3.2:Training&diff=24551Slicer3.2:Training2008-05-12T16:14:36Z<p>Davisb: </p>
<hr />
<div>[[Image:3DSlicerLogo-H-Color-424x236.png | right]]<br />
<br />
== Welcome to the Slicer3 101 page (under construction)==<br />
<br />
Slicer 3 has been envisioned as<br />
<br />
* an easy-to-use application for 3D image analysis and visualization,<br />
* an open-source environment for software development,<br />
* a technology delivery platform for community breakthroughs.<br />
<br />
Slicer3 is distributed under a BSD open source license, and is designed to enable a collaborative development environment.<br />
<br />
For course related questions, please send an e-mail to Sonia Pujol, Ph.D. (spujol at bwh.harvard.edu).<br />
<br />
== Software Installation ==<br />
The [http://www.na-mic.org/Wiki/index.php/Slicer3:Downloads download instructions] will guide you through the installation of the Slicer3 software appropriate to your platform. <br />
<br />
==Level 1: Getting Started==<br />
<br />
The Slicer3 course for users introduces the basics of loading, visualizing and interacting with data in 3D.<br />
<br />
'''Tutorial:''' [[Media:Slicer3Training_LoadingAndVisualization.ppt| Data Loading and Visualization in Slicer3 ]] '''- Dataset:''' [http://www.na-mic.org/Wiki/index.php/Image:SlicerSampleVisualization.tar.gz SlicerSampleVisualization.tar.gz]<br />
<br />
==Level 2: Developer Training==<br />
<br />
The Slicer3 course for developers teaches how to plug an external executable to Slicer3. <br />
This tutorial is intended for engineers who want to to integrate external programs with Slicer3 using the new Execution Model, and leverage the visualization, data integration and processing capabilities that are available in the Slicer3 environment.<br />
<br />
'''Tutorial:''' [[media:Slicer3CourseForDevelopers SPujol.ppt|Slicer3 Course for Developers]] '''- Dataset:''' [[Media:HelloWorld.zip|HelloWorld.zip]]<br />
<br />
==Module Tutorials==<br />
<br />
===EMSegment Template Builder===<br />
'''Tutorial:''' [[Media:EMSegTutorial-AHM2008.ppt|PowerPoint Slides]] '''- Dataset:''' [[Media:EMSegTutorial-AHM2008.zip|EMSegTutorial-AHM2008.zip]]<br />
<br />
<br /> Back to [[Training:Main|Training:Main]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Engineering:TCON_2008&diff=23775Engineering:TCON 20082008-04-10T20:00:45Z<p>Davisb: /* 2008-04-10 */</p>
<hr />
<div>Back to [[TCON:Main|TCON:Main]]<br />
__NOTOC__<br />
== Slicer 3 Dartboard ==<br />
Link to the Slicer 3 Dartboard [http://dart.na-mic.org/Slicer3/Dashboard/ here]<br />
<br />
==2008-04-10==<br />
<br />
Attendees: Jim, Steve, Tina, Alex, Nicole, Brad, Dan Marcus,<br />
<br />
*[[2008_Annual_Scientific_Report]]<br />
**Target amount of text: <br />
***look in last years (guidelines for preparation)<br />
***no firm length requirement<br />
<br />
*Training Session NC<br />
**April 14<br />
**whole day workshop---users & developers<br />
**afternoon session---module developers<br />
**need official set of training material?<br />
<br />
*Registration Activities<br />
**recap of discussion on Friday <br />
**moving forward Brad & Jim looking at integrating new ITK code<br />
<br />
*XNat & Groupwise Registration<br />
**XNat group will write simple command line tool for downloading data given a catalog file<br />
**We should write use cases for bookkeeping---keeping track of what segs go with what images<br />
**See remoteIO page off Slicer3 developers page<br />
<br />
==2008-04-03==<br />
<br />
Jim, Curt, Tina, Nicole, Wendy, Steve, Brad, Xiaodong, Vince, Ron, Nathan<br />
<br />
Agenda<br />
* discussion of xcede web services and mBIRN<br />
* [[2008_Engineering_review_at_Utah:FollowUp]]<br />
* New! [[Slicer3:DTMRI |glyphs on slices movie!]]<br />
** made using wink from http://www.debugmode.com/wink/<br />
** add something like the following to your wiki page after uploading the .swf file to the wiki<br />
<pre><flash>file=dti_glyphs.swf|width=800|height=600|quality=best|loop=true|play=true</flash></pre><br />
* CMake 2.6 release candidates have been cut with .rpm and .deb output targets!<br />
** Will will work with Katie on this<br />
* Jim is going to visit Kitware to talk about BSpline registration<br />
<br />
==2008-03-27==<br />
Attendees: Steve, Will, Xiaodong, Nathan, Katie, Wendy, Tina, Nicole, Marco, Sebastien<br />
* Nathan will discuss presentation of fluid mechanics projects.<br />
* Update from Core 1 + Core 2 [[2008_Engineering_review_at_Utah | meetings in Utah]] earlier this week.<br />
* [[Slicer3:Chain_CLMs | Discussion of Module Chaining]] (Marco and All)<br />
** Requested by Core 1 to systematize common use case<br />
** Need several steps in an analysis process to act like a single command<br />
** Would like something akin to the EMSegment workflow wizard, but as command line module rather than built-in module<br />
<br />
Highlights:<br />
<br />
Nathan's overview: discussing visualization options for his fluid velocity vector fields for tractography algorithm. Steve mentions a few options: <br />
* A LDDMM module in Slicer2 that does animated vector field visualization (work done in collaboration with Johns Hopkins: Anthony Kolasny, Mike Miller, et al.). <br />
* Another option would be to try using ParaView as a way to flesh out specifics, and then build a more custom tool for tractography later. Will will point Nathan to documentation for file formats, data formats, etc. or help with any questions, and Nathan will try this out.<br />
<br />
Discussion of these topics at the engineering review in Utah:<br />
<br />
* chaining modules together<br />
* grid wizard (Marco) for grid and batch computing<br />
* Bspline registration<br />
* setting up repositories for collecting slicer modules (as technology transition mechanism)<br />
* how this will fit into the slicer build process<br />
* diffusion weighted imaging, shape analysis, and segmentation<br />
* dicom to nrrd converter...<br />
<br />
Milestones were set for April-end, Project week, and AHM.<br />
<br />
Module chaining discussion (see link above):<br />
<br />
* Java version as first goal -- eventually C++ implementation. <br />
* Discussion about module discovery process and how will chained modules be packaged: (c++ stub programs? or <br />
or discovery find chain-descriptor xml files? shell scripts? (cross-platform issues)...)<br />
* Goal: By project week in June we would like to be able to chain modules developed by Core 1.<br />
<br />
Sebastien's update on module building: Wiki will be updated today with status. (link)<br />
<br />
==2008-03-20==<br />
Attendees: Tina, Jim, Will, Wendy, Xiaodong, Nathan, Martin, Marco<br />
* [[2008_Annual_Scientific_Report|Progress Report]] - read over the assignments. We will look for progress from June 1, 2007 to May 30, 2008.<br />
* June 23-27 is the summer project week. We will make first pass on projects in late April.<br />
* Module discussion: Martin wanted to understand the state of module creation and usage within Slicer. Sebastien is working on modules that are built against an installed module. Terry is working on built-in modules for Slicer. Jim is working on modules using CMake in the NTRIC repository.<br />
* Nathan- write a command line, Slicer module that is a wrapper to a web service. Nathan thinks he can get this done prior to the June AHM. We referred to Jim's presentation at the Utah SLC Core 1/Core 2 meeting.<br />
* We will talk about grid wizard next week at SLC<br />
<br />
<br />
==2008-03-13==<br />
Attendees: Jim, Nicole, Dan, Xiaodong, Vince, Sebastian, Alex, Curt, Steve, Will, Terry<br />
* Update on [[Slicer3:Loadable_Modules |Loadable Modules]] project (Terry) and [[Slicer3:Build/Modules | CMake updates for module builds]] (Sebastien)<br />
* [[2008_Engineering_review_at_Utah | Engineering trip to Utah]]<br />
* We are starting to use Categories to bin our pages. [[SuggestedCategories]] - suggestions?<br />
<br />
==2008-03-06==<br />
Attendees: Steve, Jim, Katie, Nicole, Tina, Xiaodong, Marco, Ron<br />
<br />
Highlights:<br />
*Slicer page on wikipedia - http://en.wikipedia.org/wiki/3DSlicer. All engineering core members should visit this page and edit as needed. ASAP.<br />
*dicom to nrrd converter in progress. Xiaodong working on it and expecting to complete in a few weeks.<br />
* [[2008_Engineering_review_at_Utah|March 24-26 Meeting in Utah]]<br />
<br />
==2008-02-28==<br />
<br />
* Attendees: Jim, Steve, Wendy, Katie, Tina, Jeff, and Marco (Grid Wizard Guy)<br />
* Discussion on time series analysis (viewer, scene markup). Initial viewer will be a general tool for comparing images.<br />
* Avalanche of new features in [http://gridwizard.org/gwe/index.html grid wizard and GSlicer3]<br />
** Proxy around Command Line Modules<br />
** Extends command line with specifications for ranges of values as well as specify remote resources (data) that need to be transferred to/from the grid.<br />
** Uses Velocity for parameter template engine<br />
** Grid selection and authentication still being refined for Slicer<br />
** Could be extended to other grid types (LSF, etc.)<br />
** Lots of information on the website. Instructions for installation. A bit daunting for non-grid people. Some of us will have to work through the instructions step by step to evaluate.<br />
<br />
==2008-02-21==<br />
<br />
* Attendees: Xiaodong, Jim, Katie, Nicole, Will, Steve, Nathan, Tina, Ron, Padma, Marco<br />
<br />
- Nathan brought us up to date on fluid mechanics tractography<br />
<br />
- Padma Sundaram: SCIrun environment supports EEG processing<br />
<br />
- Marco is releasing Grid Wizard alpha version<br />
<br />
- Nathan brought up the helical digital phantom web service. Currently the thinking is that it can be accessed through a web service. We suggested that Nathan write a wrapper, consistent with Slicer's execution module, to invoke the web service. However, since it is not available in source form, NAMIC cannot accept it as part of the NAMIC Kit proper. We can guide Nathan in the execution of this module.<br />
<br />
==2008-02-14==<br />
* Attendees: Xiaodong, Katie, Will, Sebastien, Steve, Mike, Wendy, Haiyi, Dan, Curt, Tina <br />
<br />
=== Other NA-MIC Projects ===<br />
<br />
16 - CPack (Katie): Slicer3 compiles and packs using the new C-tools with some bug fixes. Using CMake to select desired modules, using something similar to cygwin. Official Slicer3 snapshot tagged. Different Tcl/Tk versions are currently used for different platform. This need to be addressed.<br />
<br />
17 - Slicer GUI Style Guide and Cookbook {Wendy}: This will be a long term effort. During the programming week, the design and implementation details were discussed. The Cookbook will be launched from Slicer, act like KWWidget tour. <br />
<br />
18 - Volume rendering (Steve): UI is fairly stable.<br />
<br />
19 - Volume rendering using Cuda (Steve): <br />
<br />
20 - 3D W Widgets and Picking (Will): found a list of candidates of widgets for Slicer. A few bug fixes for VTK.<br />
<br />
21 - XNAT Integration (Dan): Requirements were gathered for a XNAT application that organizes files and caches files from XNAT repositories. Some XML format issues have been addressed. <br />
<br />
22 - KWWidgets Roadmap (Sebastien): Gathered requirements. Been working down the list of the feature requirements.<br />
<br />
=== External Collaboration ===<br />
<br />
1 - Astronomical coordinate system support [Harvard IIC] (Mike): Astronomical datasets are quite different from medical dataset. Wendy helped with re-centering data. Made progress in converting between coordinate systems (Cartesian to Spherical).<br />
<br />
2 - New Meshing Techniques into NA-MIC [Univ. of Iowa]<br />
<br />
3 - Meshing Workflow into Slicer [Univ. of Iowa] (Curt): Will be integrated into Slicer soon. Command line program using VTK. <br />
<br />
4 - Evaluating NA-MIC Tools for Small Animal Imaging Workflows [NCI] (Curt): <br />
<br />
5 - IGSTK-Slicer [Georgetown] (Haiyi): Successful tracking data using IGSTK.<br />
<br />
6 - Japanese Intelligent Surgical Instrument Project [AIST]<br />
<br />
7 - GoFigure:High-Level Microscopy Image analysis Application and Algorithms [CalTech-Harvard Medical School] <br />
<br />
8 - Doing microscopy image analysis with Slicer3 [The Ohio State University] <br />
<br />
9 - fMRI Analysis with Slicer 3 [The Ohio State University]<br />
<br />
10 - Resampling DTIs with Slicer 3 [BWH]<br />
<br />
11 - Analyzing fMRI and concurrent EEG with Slicer and SCIRun [BWH] <br />
<br />
12 - Bayesian hierarchical models for fMRI variance components analysis [BWH]<br />
<br />
==2008-02-07==<br />
* Attendees: Ron, Will, Steve, Wendy, Nicole, David G, Mark S., Casey, Sebastien, Curt, Luca<br />
<br />
* Look at [http://www.vtk.org/Wiki/VTK_Widget_Examples upcoming VTK 3D widgets]<br />
* Review of projects from SLC AHM 2008 http://wiki.na-mic.org/Wiki/index.php/2008_Winter_Project_Week<br />
<br />
===DBPs===<br />
<br />
1 - Stochastic Tractography in Schizophrenia (need to be invited to follow-up TCon) <br />
<br />
2 - Cortical thickness analysis - testing EM segmenter to their data. They estimated parameters and tested during the week. The goal now is to compare ITK-MS and EM segment module to see how these two tools compare for cortical thickness. They are reviewing the tools using the same patient data. <br />
<br />
3 - (Mark Scully) Legion segmentation using EM segmenter and other options - worked with Brad using 2 channels of data. Flare as 3rd channel caused problems. Desired to have T1/T2/Flair together as three channel dataset. Marcel is going to deliver his segmentation algorithm software to them to compare results. <br />
<br />
4 - Robotic Prostate Interventions - (David Gobbi) Working on transrectal biopsy module for Slicer. They had a previous module for transcranial biopsies. One of the most exciting developments was a new prototol "open IGT-Link" which will replace navitrack inside Slicer. Image transfer is working over this protocol. A simulator is being developed for the robot. A few VTK bugs may have been discovered during this process, but it isn't on the top priority list right now. <br />
<br />
5 - Prostate Cancer - Wrote new ITK filter that has been submitted to the Sandbox. They are looking at spherical wavelets for shape segmentation. The wiki page will be updated soon.<br />
<br />
=== Other NA-MIC Projects ===<br />
<br />
<br />
1 - Groupwise Registration - (Casey) New Bspline registration method is being developed here. It has been used for another project by Casey (#6). Page needs to be updated. <br />
<br />
2 - (Need to be invited to follow-up TCon)<br />
<br />
3 - (Need to be invited to follow-up TCon)) <br />
<br />
4 - (Need to be invited to follow-up TCon). Page needs to be updated<br />
<br />
5 - Incorporating DTI tools into NAMIC toolkit - They are gathering a dataset that has both structural and DTI data in agreement. Previous dataset was missing part of cortex. UNCDB2 dataset has full coverage of the brain. Resolution is a bit lower, but full coverage is an advantage. Page is close to up to data. Just submitted a paper to ISBI 2008 and working on MICCAI paper, as well. <br />
<br />
* NITRIC is g-forge and would be a good place for automated build process for Slicer modules. This could make it easier to configure Slicer in client labs without need to build from source. This is still being developed by the NA-MIC core team. There is an entry on the collaboration section of the NA-MIC website. Also www.slicer.org/Documentation link. <br />
<br />
6 - (Casey) Worked with Serdar using groupwise registration tool. They are currently evaluating results of this study. More images will be added. <br />
<br />
7 - (John Melanakos) Spent last week working with collaborators on the MICCAI paper. Project page is well filled. <br />
<br />
8 - (Need to be invited to follow-up TCon)<br />
<br />
9 - (Need to be invited to follow-up TCon)<br />
<br />
10 - MRML scenes for execution model. Some of the issues Brad was having have been resolved. Alex is making adjustments to MRML library as needed for the EM segmentation model. <br />
<br />
11 - (Curt) Unstructured Grids in Slicer - Finite Element modeling process was originally in a standalone VTK application. The first Slicer module integration did not use MRML based storage. We are now creating subclasses of Model and Unstructured grid data for storage and display in Slicer. Some minor issues need to be worked out, but the MRML extensions for UnstructuredGrid datatypes are working. <br />
<br />
12 - Python (Luca) MatPlotLib plots are close to happening within Slicer. Steve believes it is 80% complete. Python command line modules are working now. Multiple arguments had to be worked by Luca. He has developed Python-based CLI modules. The event broker is discussed here because it affects the interaction with Python, because a Mutex lock has to be placed on the MRML scene. Dan has been helping with metamodules - a single Python module which calls other mothers (hierarchical execution, recipes, etc.). <br />
<br />
* Ron asked about using this scripting technique for the ModelMaker. Some of the parameter setting, etc. could be set in the top module. Nicole will look at this. Kilian said that he wanted to call the "modelmaker" from another module. <br />
<br />
* A need was identified for new wiki pages: (1) scripted modules, (2) metamodules, (2) python scripted modules<br />
<br />
13 - (Luca) Transform hardening - Sometimes images are not XYZ alligned. How will command line modules treat an object if it is the child of a transform. The module needs to be able to apply xforms to data (after hierarchy is flattened) to get xformed data. Jim and Steve talked through this lately becomes of the transforms access two-directions (from parents / to parents, etc.) They are looking at how to change the model. <br />
<br />
14 - (Steve) MRML support for out-of-core processing - Steve put a link to a new page. Dan, Jim, Wendy, Steve, etc. working through NAC renewal grant (5 years). Multiresolution and asynchronous data are likely targets for this effort, but it will be a long-term effort. <br />
<br />
15 - Event Broker discussion - Steve has made process on this, but this wiki page is older. See the event broker page. (look at link under Objective). New term "observation" : completely introspectable. A full dependency between objects is implemented. When a subject issues a "modified" event, Delete events are maintained. Complete "relationship" management of the interaction between objects. This helps by allowing asynchronous event processing. MRML has been converted to use the event broker with asynchronous events managed by the Slicer GUI (async events invoked after GUI events are done). This hasn't broken anything so far, but should improve scalability. Dot logfile format can be generated for inter-object dependencies. This can be used to help provide "who called who" traces. Some special magic is done in MRML Display nodes. They set "observation nodes"<br />
<br />
=== Next Week ===<br />
Continue through project review. Request missing project members to attend. Review wiki pages.<br />
<br />
==2008-01-31==<br />
Attendees: Jim, Steve, Stephen, Wendy, Xiaodong, Nicole, Katie, Ron<br />
* Project week follow-up<br />
** Half of tcon on Feb 7<br />
** Half of tcon on Feb 14<br />
* Registration<br />
** Viola-Wells optimizations need to be enabled<br />
** Stephen needs to check-in and publish recent changes<br />
** Stephen needs to update the wiki<br />
** Luis continues to make optimizations (main focus is memory reduction)<br />
* BatchMake<br />
** Grid Wizard - meeting on Monday<br />
** Integration with Slicer delivered via getbuildtest2<br />
* New webpages<br />
** http://slicer.org<br />
** Uses wiki-to-web<br />
** Feel free to edit/improve<br />
* Slicer-specific wiki<br />
** Migrating appropriate info from Na-mic to slicer<br />
** Hold off on adding to Slicer-wiki until notified<br />
*** Continue using Na-mic wiki<br />
* New Nitrc project<br />
** Jim Miller is leading<br />
** "Slicer3 plug-in examples" project<br />
** http://nitrc.org - search for slicer3<br />
*** Includes demo/stub for ITK filtering data, etc.<br />
** Collection associated with an ITK course being taught<br />
** Requires CVS version of ITK<br />
** Works with Slicer build and Slicer install<br />
** Steve P is the liaison with NITRC<br />
* Slicer tutorial at UNC, April 14th<br />
** Working with UNC's BRIC (http://www.bric.unc.edu)<br />
** Sonja, Randy, Martin, Stephen<br />
* User-level Slicer training - Feb 20 at BWH<br />
** 1249 Boyleston<br />
** Release version of Slicer3 <br />
<br />
==2008-01-24==<br />
Attendees: Jim, Steve, Wendy, Xiaodong, Nicole, Katie, Alex, Luis, Ron, Will<br />
* Project week follow-up (Next week?)<br />
** Will will send email invitations for first half of projects for next week's tcon<br />
* Loadable modules<br />
** Alex and Terry are rearranging Slicer3.cxx to support loadable modules<br />
** Separate branch for built-in module discovery process<br />
** Sebastien is working on build issues for modules whose code is outside Slicer3<br />
* GenerateCLP - Thanks Hans for changes to support building modules<br />
** Hans is running a class this semester where the students will build Slicer CLI modules.<br />
** Jim is working on an ExampleModule for people to use as a template for building modules outside of Slicer3. Perhaps NITRC.<br />
* XML library<br />
** What to do with libaries that are too big to include in the source directory?<br />
* AHM 2009, Jan 5-9, 2009<br />
* Summer Project Week, Jun 23-27, 2008<br />
* New server architecture for wiki, svn, publication database<br />
<br />
==2008-01-17==<br />
Attendees: Jim, Katie, Sebastien, Stephen, Luis, Steve, Wendy, Will<br />
<br />
* Luis and Bill Hoffman are making progress in making ITK installation relocatable. This is needed to finish the work on building plugins from an installation.<br />
* What's in VTK 5.2?<br />
** Infovis - Tables, Graphs, Views, IO<br />
** Refinements to WWidgets. Client/Server connections within the widgets. Event translation. New widgets (text, caption, affine, checkerboard, rectilinear wipe, annotation, key frame, contour, measurement, point/placer, plot)<br />
** Build now? Or wait until 5.2 released?<br />
** Repository freeze in March<br />
** Release on April 1, 2008<br />
* ITK release<br />
** Patches to ITK 3.4<br />
*** Nine component/six component tensor conversion in IO has been patched to ITK 3.4<br />
** 1/19-2/1 moving contributions on Insight Journal for ITK 3.6<br />
** Move items from Review directory to main tree (QuadMesh, TransformIO) for ITK 3.6<br />
** Freeze repository 2/29 for ITK 3.6<br />
** Slicer3 will need to build against the Review directory.<br />
* CMake release<br />
** Version 2.6 on the horizon - release candidate in 3 weeks.<br />
* Tcl/Tk 8.5<br />
** Sebastien has a Windows build<br />
** Steve will try it out<br />
** Wait to switch to 8.5 until we have a good reason<br />
* Loadable modules<br />
** Sebastien - working on CMake issues on building modules as loadable modules<br />
** Terry - working on loading modules and reworking Slicer3.cxx<br />
* [[Slicer3:EventBroker | Event Broker]]<br />
* DWI DICOM as part of the Load Volume. Xiaodong is working on it.<br />
* ITKFactories directory in build and installs to hold ImageIO plugin libraries. Should increase the speed of executable plugins on the Mac.<br />
* OpenIGTLink<br />
** Protocol on the wiki (message format)<br />
** Put code in Sandbox, SourceForge, NITRC, Google Code???<br />
* Will schedule a time to go over the Project Week results<br />
<br />
==2008-01-10==<br />
No tcon due to AHM<br />
<br />
==2008-01-03==<br />
* Attendees: Jim, Steve, Will, Brad Davis<br />
* Topics:<br />
** Jim and Will talked about leading the Monday and Friday sessions, and who would do what.<br />
** We are going to send out reminders to the project leads to ensure that their project descriptions are up to date<br />
** We discussed the software process project to make sure that we have a chance to address the Slicer build process, dashboards, etc.<br />
** We decided not to hold the project wrap-up presentation at AHM; we will do that later at subsequent TCons. (We decided that we needed the time to actually work. We are concerned that we are starting to see too many break-outs and not enough time to work.)<br />
** We keenly missed Tina and hope that she and her family are doing well.</div>Davisbhttps://www.na-mic.org/w/index.php?title=Engineering:TCON_2008&diff=23774Engineering:TCON 20082008-04-10T19:54:07Z<p>Davisb: /* 2008-04-10 */</p>
<hr />
<div>Back to [[TCON:Main|TCON:Main]]<br />
__NOTOC__<br />
== Slicer 3 Dartboard ==<br />
Link to the Slicer 3 Dartboard [http://dart.na-mic.org/Slicer3/Dashboard/ here]<br />
<br />
==2008-04-10==<br />
<br />
Attendees: Jim, Steve, Tina, Alex, Nicole, Brad, Dan Marcus,<br />
<br />
*[[2008_Annual_Scientific_Report]]<br />
**Target amount of text: <br />
***look in last years (guidelines for preparation)<br />
***no firm length requirement<br />
<br />
*Training Session NC<br />
**April 14<br />
**whole day workshop---users & developers<br />
**afternoon session---module developers<br />
**need official set of training material?<br />
<br />
*Registration Activities<br />
**recap of discussion on Friday <br />
**moving forward Brad & Jim looking at integrating new ITK code<br />
<br />
*XNat & Groupwise Registration<br />
**XNat group will write simple command line tool for downloading data given a catalog file<br />
**We should write use cases for bookkeeping---keeping track of what segs go with what images<br />
<br />
==2008-04-03==<br />
<br />
Jim, Curt, Tina, Nicole, Wendy, Steve, Brad, Xiaodong, Vince, Ron, Nathan<br />
<br />
Agenda<br />
* discussion of xcede web services and mBIRN<br />
* [[2008_Engineering_review_at_Utah:FollowUp]]<br />
* New! [[Slicer3:DTMRI |glyphs on slices movie!]]<br />
** made using wink from http://www.debugmode.com/wink/<br />
** add something like the following to your wiki page after uploading the .swf file to the wiki<br />
<pre><flash>file=dti_glyphs.swf|width=800|height=600|quality=best|loop=true|play=true</flash></pre><br />
* CMake 2.6 release candidates have been cut with .rpm and .deb output targets!<br />
** Will will work with Katie on this<br />
* Jim is going to visit Kitware to talk about BSpline registration<br />
<br />
==2008-03-27==<br />
Attendees: Steve, Will, Xiaodong, Nathan, Katie, Wendy, Tina, Nicole, Marco, Sebastien<br />
* Nathan will discuss presentation of fluid mechanics projects.<br />
* Update from Core 1 + Core 2 [[2008_Engineering_review_at_Utah | meetings in Utah]] earlier this week.<br />
* [[Slicer3:Chain_CLMs | Discussion of Module Chaining]] (Marco and All)<br />
** Requested by Core 1 to systematize common use case<br />
** Need several steps in an analysis process to act like a single command<br />
** Would like something akin to the EMSegment workflow wizard, but as command line module rather than built-in module<br />
<br />
Highlights:<br />
<br />
Nathan's overview: discussing visualization options for his fluid velocity vector fields for tractography algorithm. Steve mentions a few options: <br />
* A LDDMM module in Slicer2 that does animated vector field visualization (work done in collaboration with Johns Hopkins: Anthony Kolasny, Mike Miller, et al.). <br />
* Another option would be to try using ParaView as a way to flesh out specifics, and then build a more custom tool for tractography later. Will will point Nathan to documentation for file formats, data formats, etc. or help with any questions, and Nathan will try this out.<br />
<br />
Discussion of these topics at the engineering review in Utah:<br />
<br />
* chaining modules together<br />
* grid wizard (Marco) for grid and batch computing<br />
* Bspline registration<br />
* setting up repositories for collecting slicer modules (as technology transition mechanism)<br />
* how this will fit into the slicer build process<br />
* diffusion weighted imaging, shape analysis, and segmentation<br />
* dicom to nrrd converter...<br />
<br />
Milestones were set for April-end, Project week, and AHM.<br />
<br />
Module chaining discussion (see link above):<br />
<br />
* Java version as first goal -- eventually C++ implementation. <br />
* Discussion about module discovery process and how will chained modules be packaged: (c++ stub programs? or <br />
or discovery find chain-descriptor xml files? shell scripts? (cross-platform issues)...)<br />
* Goal: By project week in June we would like to be able to chain modules developed by Core 1.<br />
<br />
Sebastien's update on module building: Wiki will be updated today with status. (link)<br />
<br />
==2008-03-20==<br />
Attendees: Tina, Jim, Will, Wendy, Xiaodong, Nathan, Martin, Marco<br />
* [[2008_Annual_Scientific_Report|Progress Report]] - read over the assignments. We will look for progress from June 1, 2007 to May 30, 2008.<br />
* June 23-27 is the summer project week. We will make first pass on projects in late April.<br />
* Module discussion: Martin wanted to understand the state of module creation and usage within Slicer. Sebastien is working on modules that are built against an installed module. Terry is working on built-in modules for Slicer. Jim is working on modules using CMake in the NTRIC repository.<br />
* Nathan- write a command line, Slicer module that is a wrapper to a web service. Nathan thinks he can get this done prior to the June AHM. We referred to Jim's presentation at the Utah SLC Core 1/Core 2 meeting.<br />
* We will talk about grid wizard next week at SLC<br />
<br />
<br />
==2008-03-13==<br />
Attendees: Jim, Nicole, Dan, Xiaodong, Vince, Sebastian, Alex, Curt, Steve, Will, Terry<br />
* Update on [[Slicer3:Loadable_Modules |Loadable Modules]] project (Terry) and [[Slicer3:Build/Modules | CMake updates for module builds]] (Sebastien)<br />
* [[2008_Engineering_review_at_Utah | Engineering trip to Utah]]<br />
* We are starting to use Categories to bin our pages. [[SuggestedCategories]] - suggestions?<br />
<br />
==2008-03-06==<br />
Attendees: Steve, Jim, Katie, Nicole, Tina, Xiaodong, Marco, Ron<br />
<br />
Highlights:<br />
*Slicer page on wikipedia - http://en.wikipedia.org/wiki/3DSlicer. All engineering core members should visit this page and edit as needed. ASAP.<br />
*dicom to nrrd converter in progress. Xiaodong working on it and expecting to complete in a few weeks.<br />
* [[2008_Engineering_review_at_Utah|March 24-26 Meeting in Utah]]<br />
<br />
==2008-02-28==<br />
<br />
* Attendees: Jim, Steve, Wendy, Katie, Tina, Jeff, and Marco (Grid Wizard Guy)<br />
* Discussion on time series analysis (viewer, scene markup). Initial viewer will be a general tool for comparing images.<br />
* Avalanche of new features in [http://gridwizard.org/gwe/index.html grid wizard and GSlicer3]<br />
** Proxy around Command Line Modules<br />
** Extends command line with specifications for ranges of values as well as specify remote resources (data) that need to be transferred to/from the grid.<br />
** Uses Velocity for parameter template engine<br />
** Grid selection and authentication still being refined for Slicer<br />
** Could be extended to other grid types (LSF, etc.)<br />
** Lots of information on the website. Instructions for installation. A bit daunting for non-grid people. Some of us will have to work through the instructions step by step to evaluate.<br />
<br />
==2008-02-21==<br />
<br />
* Attendees: Xiaodong, Jim, Katie, Nicole, Will, Steve, Nathan, Tina, Ron, Padma, Marco<br />
<br />
- Nathan brought us up to date on fluid mechanics tractography<br />
<br />
- Padma Sundaram: SCIrun environment supports EEG processing<br />
<br />
- Marco is releasing Grid Wizard alpha version<br />
<br />
- Nathan brought up the helical digital phantom web service. Currently the thinking is that it can be accessed through a web service. We suggested that Nathan write a wrapper, consistent with Slicer's execution module, to invoke the web service. However, since it is not available in source form, NAMIC cannot accept it as part of the NAMIC Kit proper. We can guide Nathan in the execution of this module.<br />
<br />
==2008-02-14==<br />
* Attendees: Xiaodong, Katie, Will, Sebastien, Steve, Mike, Wendy, Haiyi, Dan, Curt, Tina <br />
<br />
=== Other NA-MIC Projects ===<br />
<br />
16 - CPack (Katie): Slicer3 compiles and packs using the new C-tools with some bug fixes. Using CMake to select desired modules, using something similar to cygwin. Official Slicer3 snapshot tagged. Different Tcl/Tk versions are currently used for different platform. This need to be addressed.<br />
<br />
17 - Slicer GUI Style Guide and Cookbook {Wendy}: This will be a long term effort. During the programming week, the design and implementation details were discussed. The Cookbook will be launched from Slicer, act like KWWidget tour. <br />
<br />
18 - Volume rendering (Steve): UI is fairly stable.<br />
<br />
19 - Volume rendering using Cuda (Steve): <br />
<br />
20 - 3D W Widgets and Picking (Will): found a list of candidates of widgets for Slicer. A few bug fixes for VTK.<br />
<br />
21 - XNAT Integration (Dan): Requirements were gathered for a XNAT application that organizes files and caches files from XNAT repositories. Some XML format issues have been addressed. <br />
<br />
22 - KWWidgets Roadmap (Sebastien): Gathered requirements. Been working down the list of the feature requirements.<br />
<br />
=== External Collaboration ===<br />
<br />
1 - Astronomical coordinate system support [Harvard IIC] (Mike): Astronomical datasets are quite different from medical dataset. Wendy helped with re-centering data. Made progress in converting between coordinate systems (Cartesian to Spherical).<br />
<br />
2 - New Meshing Techniques into NA-MIC [Univ. of Iowa]<br />
<br />
3 - Meshing Workflow into Slicer [Univ. of Iowa] (Curt): Will be integrated into Slicer soon. Command line program using VTK. <br />
<br />
4 - Evaluating NA-MIC Tools for Small Animal Imaging Workflows [NCI] (Curt): <br />
<br />
5 - IGSTK-Slicer [Georgetown] (Haiyi): Successful tracking data using IGSTK.<br />
<br />
6 - Japanese Intelligent Surgical Instrument Project [AIST]<br />
<br />
7 - GoFigure:High-Level Microscopy Image analysis Application and Algorithms [CalTech-Harvard Medical School] <br />
<br />
8 - Doing microscopy image analysis with Slicer3 [The Ohio State University] <br />
<br />
9 - fMRI Analysis with Slicer 3 [The Ohio State University]<br />
<br />
10 - Resampling DTIs with Slicer 3 [BWH]<br />
<br />
11 - Analyzing fMRI and concurrent EEG with Slicer and SCIRun [BWH] <br />
<br />
12 - Bayesian hierarchical models for fMRI variance components analysis [BWH]<br />
<br />
==2008-02-07==<br />
* Attendees: Ron, Will, Steve, Wendy, Nicole, David G, Mark S., Casey, Sebastien, Curt, Luca<br />
<br />
* Look at [http://www.vtk.org/Wiki/VTK_Widget_Examples upcoming VTK 3D widgets]<br />
* Review of projects from SLC AHM 2008 http://wiki.na-mic.org/Wiki/index.php/2008_Winter_Project_Week<br />
<br />
===DBPs===<br />
<br />
1 - Stochastic Tractography in Schizophrenia (need to be invited to follow-up TCon) <br />
<br />
2 - Cortical thickness analysis - testing EM segmenter to their data. They estimated parameters and tested during the week. The goal now is to compare ITK-MS and EM segment module to see how these two tools compare for cortical thickness. They are reviewing the tools using the same patient data. <br />
<br />
3 - (Mark Scully) Legion segmentation using EM segmenter and other options - worked with Brad using 2 channels of data. Flare as 3rd channel caused problems. Desired to have T1/T2/Flair together as three channel dataset. Marcel is going to deliver his segmentation algorithm software to them to compare results. <br />
<br />
4 - Robotic Prostate Interventions - (David Gobbi) Working on transrectal biopsy module for Slicer. They had a previous module for transcranial biopsies. One of the most exciting developments was a new prototol "open IGT-Link" which will replace navitrack inside Slicer. Image transfer is working over this protocol. A simulator is being developed for the robot. A few VTK bugs may have been discovered during this process, but it isn't on the top priority list right now. <br />
<br />
5 - Prostate Cancer - Wrote new ITK filter that has been submitted to the Sandbox. They are looking at spherical wavelets for shape segmentation. The wiki page will be updated soon.<br />
<br />
=== Other NA-MIC Projects ===<br />
<br />
<br />
1 - Groupwise Registration - (Casey) New Bspline registration method is being developed here. It has been used for another project by Casey (#6). Page needs to be updated. <br />
<br />
2 - (Need to be invited to follow-up TCon)<br />
<br />
3 - (Need to be invited to follow-up TCon)) <br />
<br />
4 - (Need to be invited to follow-up TCon). Page needs to be updated<br />
<br />
5 - Incorporating DTI tools into NAMIC toolkit - They are gathering a dataset that has both structural and DTI data in agreement. Previous dataset was missing part of cortex. UNCDB2 dataset has full coverage of the brain. Resolution is a bit lower, but full coverage is an advantage. Page is close to up to data. Just submitted a paper to ISBI 2008 and working on MICCAI paper, as well. <br />
<br />
* NITRIC is g-forge and would be a good place for automated build process for Slicer modules. This could make it easier to configure Slicer in client labs without need to build from source. This is still being developed by the NA-MIC core team. There is an entry on the collaboration section of the NA-MIC website. Also www.slicer.org/Documentation link. <br />
<br />
6 - (Casey) Worked with Serdar using groupwise registration tool. They are currently evaluating results of this study. More images will be added. <br />
<br />
7 - (John Melanakos) Spent last week working with collaborators on the MICCAI paper. Project page is well filled. <br />
<br />
8 - (Need to be invited to follow-up TCon)<br />
<br />
9 - (Need to be invited to follow-up TCon)<br />
<br />
10 - MRML scenes for execution model. Some of the issues Brad was having have been resolved. Alex is making adjustments to MRML library as needed for the EM segmentation model. <br />
<br />
11 - (Curt) Unstructured Grids in Slicer - Finite Element modeling process was originally in a standalone VTK application. The first Slicer module integration did not use MRML based storage. We are now creating subclasses of Model and Unstructured grid data for storage and display in Slicer. Some minor issues need to be worked out, but the MRML extensions for UnstructuredGrid datatypes are working. <br />
<br />
12 - Python (Luca) MatPlotLib plots are close to happening within Slicer. Steve believes it is 80% complete. Python command line modules are working now. Multiple arguments had to be worked by Luca. He has developed Python-based CLI modules. The event broker is discussed here because it affects the interaction with Python, because a Mutex lock has to be placed on the MRML scene. Dan has been helping with metamodules - a single Python module which calls other mothers (hierarchical execution, recipes, etc.). <br />
<br />
* Ron asked about using this scripting technique for the ModelMaker. Some of the parameter setting, etc. could be set in the top module. Nicole will look at this. Kilian said that he wanted to call the "modelmaker" from another module. <br />
<br />
* A need was identified for new wiki pages: (1) scripted modules, (2) metamodules, (2) python scripted modules<br />
<br />
13 - (Luca) Transform hardening - Sometimes images are not XYZ alligned. How will command line modules treat an object if it is the child of a transform. The module needs to be able to apply xforms to data (after hierarchy is flattened) to get xformed data. Jim and Steve talked through this lately becomes of the transforms access two-directions (from parents / to parents, etc.) They are looking at how to change the model. <br />
<br />
14 - (Steve) MRML support for out-of-core processing - Steve put a link to a new page. Dan, Jim, Wendy, Steve, etc. working through NAC renewal grant (5 years). Multiresolution and asynchronous data are likely targets for this effort, but it will be a long-term effort. <br />
<br />
15 - Event Broker discussion - Steve has made process on this, but this wiki page is older. See the event broker page. (look at link under Objective). New term "observation" : completely introspectable. A full dependency between objects is implemented. When a subject issues a "modified" event, Delete events are maintained. Complete "relationship" management of the interaction between objects. This helps by allowing asynchronous event processing. MRML has been converted to use the event broker with asynchronous events managed by the Slicer GUI (async events invoked after GUI events are done). This hasn't broken anything so far, but should improve scalability. Dot logfile format can be generated for inter-object dependencies. This can be used to help provide "who called who" traces. Some special magic is done in MRML Display nodes. They set "observation nodes"<br />
<br />
=== Next Week ===<br />
Continue through project review. Request missing project members to attend. Review wiki pages.<br />
<br />
==2008-01-31==<br />
Attendees: Jim, Steve, Stephen, Wendy, Xiaodong, Nicole, Katie, Ron<br />
* Project week follow-up<br />
** Half of tcon on Feb 7<br />
** Half of tcon on Feb 14<br />
* Registration<br />
** Viola-Wells optimizations need to be enabled<br />
** Stephen needs to check-in and publish recent changes<br />
** Stephen needs to update the wiki<br />
** Luis continues to make optimizations (main focus is memory reduction)<br />
* BatchMake<br />
** Grid Wizard - meeting on Monday<br />
** Integration with Slicer delivered via getbuildtest2<br />
* New webpages<br />
** http://slicer.org<br />
** Uses wiki-to-web<br />
** Feel free to edit/improve<br />
* Slicer-specific wiki<br />
** Migrating appropriate info from Na-mic to slicer<br />
** Hold off on adding to Slicer-wiki until notified<br />
*** Continue using Na-mic wiki<br />
* New Nitrc project<br />
** Jim Miller is leading<br />
** "Slicer3 plug-in examples" project<br />
** http://nitrc.org - search for slicer3<br />
*** Includes demo/stub for ITK filtering data, etc.<br />
** Collection associated with an ITK course being taught<br />
** Requires CVS version of ITK<br />
** Works with Slicer build and Slicer install<br />
** Steve P is the liaison with NITRC<br />
* Slicer tutorial at UNC, April 14th<br />
** Working with UNC's BRIC (http://www.bric.unc.edu)<br />
** Sonja, Randy, Martin, Stephen<br />
* User-level Slicer training - Feb 20 at BWH<br />
** 1249 Boyleston<br />
** Release version of Slicer3 <br />
<br />
==2008-01-24==<br />
Attendees: Jim, Steve, Wendy, Xiaodong, Nicole, Katie, Alex, Luis, Ron, Will<br />
* Project week follow-up (Next week?)<br />
** Will will send email invitations for first half of projects for next week's tcon<br />
* Loadable modules<br />
** Alex and Terry are rearranging Slicer3.cxx to support loadable modules<br />
** Separate branch for built-in module discovery process<br />
** Sebastien is working on build issues for modules whose code is outside Slicer3<br />
* GenerateCLP - Thanks Hans for changes to support building modules<br />
** Hans is running a class this semester where the students will build Slicer CLI modules.<br />
** Jim is working on an ExampleModule for people to use as a template for building modules outside of Slicer3. Perhaps NITRC.<br />
* XML library<br />
** What to do with libaries that are too big to include in the source directory?<br />
* AHM 2009, Jan 5-9, 2009<br />
* Summer Project Week, Jun 23-27, 2008<br />
* New server architecture for wiki, svn, publication database<br />
<br />
==2008-01-17==<br />
Attendees: Jim, Katie, Sebastien, Stephen, Luis, Steve, Wendy, Will<br />
<br />
* Luis and Bill Hoffman are making progress in making ITK installation relocatable. This is needed to finish the work on building plugins from an installation.<br />
* What's in VTK 5.2?<br />
** Infovis - Tables, Graphs, Views, IO<br />
** Refinements to WWidgets. Client/Server connections within the widgets. Event translation. New widgets (text, caption, affine, checkerboard, rectilinear wipe, annotation, key frame, contour, measurement, point/placer, plot)<br />
** Build now? Or wait until 5.2 released?<br />
** Repository freeze in March<br />
** Release on April 1, 2008<br />
* ITK release<br />
** Patches to ITK 3.4<br />
*** Nine component/six component tensor conversion in IO has been patched to ITK 3.4<br />
** 1/19-2/1 moving contributions on Insight Journal for ITK 3.6<br />
** Move items from Review directory to main tree (QuadMesh, TransformIO) for ITK 3.6<br />
** Freeze repository 2/29 for ITK 3.6<br />
** Slicer3 will need to build against the Review directory.<br />
* CMake release<br />
** Version 2.6 on the horizon - release candidate in 3 weeks.<br />
* Tcl/Tk 8.5<br />
** Sebastien has a Windows build<br />
** Steve will try it out<br />
** Wait to switch to 8.5 until we have a good reason<br />
* Loadable modules<br />
** Sebastien - working on CMake issues on building modules as loadable modules<br />
** Terry - working on loading modules and reworking Slicer3.cxx<br />
* [[Slicer3:EventBroker | Event Broker]]<br />
* DWI DICOM as part of the Load Volume. Xiaodong is working on it.<br />
* ITKFactories directory in build and installs to hold ImageIO plugin libraries. Should increase the speed of executable plugins on the Mac.<br />
* OpenIGTLink<br />
** Protocol on the wiki (message format)<br />
** Put code in Sandbox, SourceForge, NITRC, Google Code???<br />
* Will schedule a time to go over the Project Week results<br />
<br />
==2008-01-10==<br />
No tcon due to AHM<br />
<br />
==2008-01-03==<br />
* Attendees: Jim, Steve, Will, Brad Davis<br />
* Topics:<br />
** Jim and Will talked about leading the Monday and Friday sessions, and who would do what.<br />
** We are going to send out reminders to the project leads to ensure that their project descriptions are up to date<br />
** We discussed the software process project to make sure that we have a chance to address the Slicer build process, dashboards, etc.<br />
** We decided not to hold the project wrap-up presentation at AHM; we will do that later at subsequent TCons. (We decided that we needed the time to actually work. We are concerned that we are starting to see too many break-outs and not enough time to work.)<br />
** We keenly missed Tina and hope that she and her family are doing well.</div>Davisbhttps://www.na-mic.org/w/index.php?title=Engineering:TCON_2008&diff=23771Engineering:TCON 20082008-04-10T19:27:04Z<p>Davisb: /* 2008-04-10 */</p>
<hr />
<div>Back to [[TCON:Main|TCON:Main]]<br />
__NOTOC__<br />
== Slicer 3 Dartboard ==<br />
Link to the Slicer 3 Dartboard [http://dart.na-mic.org/Slicer3/Dashboard/ here]<br />
<br />
==2008-04-10==<br />
<br />
Attendees: Jim, Steve, Tina, Alex, Nicole, Brad, Dan Marcus,<br />
<br />
*[[2008_Annual_Scientific_Report]]<br />
**Target amount of text: <br />
***look in last years (guidelines for preparation)<br />
***no firm length requirement<br />
<br />
*Training Session NC<br />
**April 14<br />
**whole day workshop---users & developers<br />
**afternoon session---module developers<br />
**need official set of training material?<br />
<br />
*Registration Activities<br />
**recap of discussion on Friday <br />
**moving forward Brad & Jim looking at integrating new ITK code<br />
<br />
*XNat Groupwise Registration<br />
<br />
==2008-04-03==<br />
<br />
Jim, Curt, Tina, Nicole, Wendy, Steve, Brad, Xiaodong, Vince, Ron, Nathan<br />
<br />
Agenda<br />
* discussion of xcede web services and mBIRN<br />
* [[2008_Engineering_review_at_Utah:FollowUp]]<br />
* New! [[Slicer3:DTMRI |glyphs on slices movie!]]<br />
** made using wink from http://www.debugmode.com/wink/<br />
** add something like the following to your wiki page after uploading the .swf file to the wiki<br />
<pre><flash>file=dti_glyphs.swf|width=800|height=600|quality=best|loop=true|play=true</flash></pre><br />
* CMake 2.6 release candidates have been cut with .rpm and .deb output targets!<br />
** Will will work with Katie on this<br />
* Jim is going to visit Kitware to talk about BSpline registration<br />
<br />
==2008-03-27==<br />
Attendees: Steve, Will, Xiaodong, Nathan, Katie, Wendy, Tina, Nicole, Marco, Sebastien<br />
* Nathan will discuss presentation of fluid mechanics projects.<br />
* Update from Core 1 + Core 2 [[2008_Engineering_review_at_Utah | meetings in Utah]] earlier this week.<br />
* [[Slicer3:Chain_CLMs | Discussion of Module Chaining]] (Marco and All)<br />
** Requested by Core 1 to systematize common use case<br />
** Need several steps in an analysis process to act like a single command<br />
** Would like something akin to the EMSegment workflow wizard, but as command line module rather than built-in module<br />
<br />
Highlights:<br />
<br />
Nathan's overview: discussing visualization options for his fluid velocity vector fields for tractography algorithm. Steve mentions a few options: <br />
* A LDDMM module in Slicer2 that does animated vector field visualization (work done in collaboration with Johns Hopkins: Anthony Kolasny, Mike Miller, et al.). <br />
* Another option would be to try using ParaView as a way to flesh out specifics, and then build a more custom tool for tractography later. Will will point Nathan to documentation for file formats, data formats, etc. or help with any questions, and Nathan will try this out.<br />
<br />
Discussion of these topics at the engineering review in Utah:<br />
<br />
* chaining modules together<br />
* grid wizard (Marco) for grid and batch computing<br />
* Bspline registration<br />
* setting up repositories for collecting slicer modules (as technology transition mechanism)<br />
* how this will fit into the slicer build process<br />
* diffusion weighted imaging, shape analysis, and segmentation<br />
* dicom to nrrd converter...<br />
<br />
Milestones were set for April-end, Project week, and AHM.<br />
<br />
Module chaining discussion (see link above):<br />
<br />
* Java version as first goal -- eventually C++ implementation. <br />
* Discussion about module discovery process and how will chained modules be packaged: (c++ stub programs? or <br />
or discovery find chain-descriptor xml files? shell scripts? (cross-platform issues)...)<br />
* Goal: By project week in June we would like to be able to chain modules developed by Core 1.<br />
<br />
Sebastien's update on module building: Wiki will be updated today with status. (link)<br />
<br />
==2008-03-20==<br />
Attendees: Tina, Jim, Will, Wendy, Xiaodong, Nathan, Martin, Marco<br />
* [[2008_Annual_Scientific_Report|Progress Report]] - read over the assignments. We will look for progress from June 1, 2007 to May 30, 2008.<br />
* June 23-27 is the summer project week. We will make first pass on projects in late April.<br />
* Module discussion: Martin wanted to understand the state of module creation and usage within Slicer. Sebastien is working on modules that are built against an installed module. Terry is working on built-in modules for Slicer. Jim is working on modules using CMake in the NTRIC repository.<br />
* Nathan- write a command line, Slicer module that is a wrapper to a web service. Nathan thinks he can get this done prior to the June AHM. We referred to Jim's presentation at the Utah SLC Core 1/Core 2 meeting.<br />
* We will talk about grid wizard next week at SLC<br />
<br />
<br />
==2008-03-13==<br />
Attendees: Jim, Nicole, Dan, Xiaodong, Vince, Sebastian, Alex, Curt, Steve, Will, Terry<br />
* Update on [[Slicer3:Loadable_Modules |Loadable Modules]] project (Terry) and [[Slicer3:Build/Modules | CMake updates for module builds]] (Sebastien)<br />
* [[2008_Engineering_review_at_Utah | Engineering trip to Utah]]<br />
* We are starting to use Categories to bin our pages. [[SuggestedCategories]] - suggestions?<br />
<br />
==2008-03-06==<br />
Attendees: Steve, Jim, Katie, Nicole, Tina, Xiaodong, Marco, Ron<br />
<br />
Highlights:<br />
*Slicer page on wikipedia - http://en.wikipedia.org/wiki/3DSlicer. All engineering core members should visit this page and edit as needed. ASAP.<br />
*dicom to nrrd converter in progress. Xiaodong working on it and expecting to complete in a few weeks.<br />
* [[2008_Engineering_review_at_Utah|March 24-26 Meeting in Utah]]<br />
<br />
==2008-02-28==<br />
<br />
* Attendees: Jim, Steve, Wendy, Katie, Tina, Jeff, and Marco (Grid Wizard Guy)<br />
* Discussion on time series analysis (viewer, scene markup). Initial viewer will be a general tool for comparing images.<br />
* Avalanche of new features in [http://gridwizard.org/gwe/index.html grid wizard and GSlicer3]<br />
** Proxy around Command Line Modules<br />
** Extends command line with specifications for ranges of values as well as specify remote resources (data) that need to be transferred to/from the grid.<br />
** Uses Velocity for parameter template engine<br />
** Grid selection and authentication still being refined for Slicer<br />
** Could be extended to other grid types (LSF, etc.)<br />
** Lots of information on the website. Instructions for installation. A bit daunting for non-grid people. Some of us will have to work through the instructions step by step to evaluate.<br />
<br />
==2008-02-21==<br />
<br />
* Attendees: Xiaodong, Jim, Katie, Nicole, Will, Steve, Nathan, Tina, Ron, Padma, Marco<br />
<br />
- Nathan brought us up to date on fluid mechanics tractography<br />
<br />
- Padma Sundaram: SCIrun environment supports EEG processing<br />
<br />
- Marco is releasing Grid Wizard alpha version<br />
<br />
- Nathan brought up the helical digital phantom web service. Currently the thinking is that it can be accessed through a web service. We suggested that Nathan write a wrapper, consistent with Slicer's execution module, to invoke the web service. However, since it is not available in source form, NAMIC cannot accept it as part of the NAMIC Kit proper. We can guide Nathan in the execution of this module.<br />
<br />
==2008-02-14==<br />
* Attendees: Xiaodong, Katie, Will, Sebastien, Steve, Mike, Wendy, Haiyi, Dan, Curt, Tina <br />
<br />
=== Other NA-MIC Projects ===<br />
<br />
16 - CPack (Katie): Slicer3 compiles and packs using the new C-tools with some bug fixes. Using CMake to select desired modules, using something similar to cygwin. Official Slicer3 snapshot tagged. Different Tcl/Tk versions are currently used for different platform. This need to be addressed.<br />
<br />
17 - Slicer GUI Style Guide and Cookbook {Wendy}: This will be a long term effort. During the programming week, the design and implementation details were discussed. The Cookbook will be launched from Slicer, act like KWWidget tour. <br />
<br />
18 - Volume rendering (Steve): UI is fairly stable.<br />
<br />
19 - Volume rendering using Cuda (Steve): <br />
<br />
20 - 3D W Widgets and Picking (Will): found a list of candidates of widgets for Slicer. A few bug fixes for VTK.<br />
<br />
21 - XNAT Integration (Dan): Requirements were gathered for a XNAT application that organizes files and caches files from XNAT repositories. Some XML format issues have been addressed. <br />
<br />
22 - KWWidgets Roadmap (Sebastien): Gathered requirements. Been working down the list of the feature requirements.<br />
<br />
=== External Collaboration ===<br />
<br />
1 - Astronomical coordinate system support [Harvard IIC] (Mike): Astronomical datasets are quite different from medical dataset. Wendy helped with re-centering data. Made progress in converting between coordinate systems (Cartesian to Spherical).<br />
<br />
2 - New Meshing Techniques into NA-MIC [Univ. of Iowa]<br />
<br />
3 - Meshing Workflow into Slicer [Univ. of Iowa] (Curt): Will be integrated into Slicer soon. Command line program using VTK. <br />
<br />
4 - Evaluating NA-MIC Tools for Small Animal Imaging Workflows [NCI] (Curt): <br />
<br />
5 - IGSTK-Slicer [Georgetown] (Haiyi): Successful tracking data using IGSTK.<br />
<br />
6 - Japanese Intelligent Surgical Instrument Project [AIST]<br />
<br />
7 - GoFigure:High-Level Microscopy Image analysis Application and Algorithms [CalTech-Harvard Medical School] <br />
<br />
8 - Doing microscopy image analysis with Slicer3 [The Ohio State University] <br />
<br />
9 - fMRI Analysis with Slicer 3 [The Ohio State University]<br />
<br />
10 - Resampling DTIs with Slicer 3 [BWH]<br />
<br />
11 - Analyzing fMRI and concurrent EEG with Slicer and SCIRun [BWH] <br />
<br />
12 - Bayesian hierarchical models for fMRI variance components analysis [BWH]<br />
<br />
==2008-02-07==<br />
* Attendees: Ron, Will, Steve, Wendy, Nicole, David G, Mark S., Casey, Sebastien, Curt, Luca<br />
<br />
* Look at [http://www.vtk.org/Wiki/VTK_Widget_Examples upcoming VTK 3D widgets]<br />
* Review of projects from SLC AHM 2008 http://wiki.na-mic.org/Wiki/index.php/2008_Winter_Project_Week<br />
<br />
===DBPs===<br />
<br />
1 - Stochastic Tractography in Schizophrenia (need to be invited to follow-up TCon) <br />
<br />
2 - Cortical thickness analysis - testing EM segmenter to their data. They estimated parameters and tested during the week. The goal now is to compare ITK-MS and EM segment module to see how these two tools compare for cortical thickness. They are reviewing the tools using the same patient data. <br />
<br />
3 - (Mark Scully) Legion segmentation using EM segmenter and other options - worked with Brad using 2 channels of data. Flare as 3rd channel caused problems. Desired to have T1/T2/Flair together as three channel dataset. Marcel is going to deliver his segmentation algorithm software to them to compare results. <br />
<br />
4 - Robotic Prostate Interventions - (David Gobbi) Working on transrectal biopsy module for Slicer. They had a previous module for transcranial biopsies. One of the most exciting developments was a new prototol "open IGT-Link" which will replace navitrack inside Slicer. Image transfer is working over this protocol. A simulator is being developed for the robot. A few VTK bugs may have been discovered during this process, but it isn't on the top priority list right now. <br />
<br />
5 - Prostate Cancer - Wrote new ITK filter that has been submitted to the Sandbox. They are looking at spherical wavelets for shape segmentation. The wiki page will be updated soon.<br />
<br />
=== Other NA-MIC Projects ===<br />
<br />
<br />
1 - Groupwise Registration - (Casey) New Bspline registration method is being developed here. It has been used for another project by Casey (#6). Page needs to be updated. <br />
<br />
2 - (Need to be invited to follow-up TCon)<br />
<br />
3 - (Need to be invited to follow-up TCon)) <br />
<br />
4 - (Need to be invited to follow-up TCon). Page needs to be updated<br />
<br />
5 - Incorporating DTI tools into NAMIC toolkit - They are gathering a dataset that has both structural and DTI data in agreement. Previous dataset was missing part of cortex. UNCDB2 dataset has full coverage of the brain. Resolution is a bit lower, but full coverage is an advantage. Page is close to up to data. Just submitted a paper to ISBI 2008 and working on MICCAI paper, as well. <br />
<br />
* NITRIC is g-forge and would be a good place for automated build process for Slicer modules. This could make it easier to configure Slicer in client labs without need to build from source. This is still being developed by the NA-MIC core team. There is an entry on the collaboration section of the NA-MIC website. Also www.slicer.org/Documentation link. <br />
<br />
6 - (Casey) Worked with Serdar using groupwise registration tool. They are currently evaluating results of this study. More images will be added. <br />
<br />
7 - (John Melanakos) Spent last week working with collaborators on the MICCAI paper. Project page is well filled. <br />
<br />
8 - (Need to be invited to follow-up TCon)<br />
<br />
9 - (Need to be invited to follow-up TCon)<br />
<br />
10 - MRML scenes for execution model. Some of the issues Brad was having have been resolved. Alex is making adjustments to MRML library as needed for the EM segmentation model. <br />
<br />
11 - (Curt) Unstructured Grids in Slicer - Finite Element modeling process was originally in a standalone VTK application. The first Slicer module integration did not use MRML based storage. We are now creating subclasses of Model and Unstructured grid data for storage and display in Slicer. Some minor issues need to be worked out, but the MRML extensions for UnstructuredGrid datatypes are working. <br />
<br />
12 - Python (Luca) MatPlotLib plots are close to happening within Slicer. Steve believes it is 80% complete. Python command line modules are working now. Multiple arguments had to be worked by Luca. He has developed Python-based CLI modules. The event broker is discussed here because it affects the interaction with Python, because a Mutex lock has to be placed on the MRML scene. Dan has been helping with metamodules - a single Python module which calls other mothers (hierarchical execution, recipes, etc.). <br />
<br />
* Ron asked about using this scripting technique for the ModelMaker. Some of the parameter setting, etc. could be set in the top module. Nicole will look at this. Kilian said that he wanted to call the "modelmaker" from another module. <br />
<br />
* A need was identified for new wiki pages: (1) scripted modules, (2) metamodules, (2) python scripted modules<br />
<br />
13 - (Luca) Transform hardening - Sometimes images are not XYZ alligned. How will command line modules treat an object if it is the child of a transform. The module needs to be able to apply xforms to data (after hierarchy is flattened) to get xformed data. Jim and Steve talked through this lately becomes of the transforms access two-directions (from parents / to parents, etc.) They are looking at how to change the model. <br />
<br />
14 - (Steve) MRML support for out-of-core processing - Steve put a link to a new page. Dan, Jim, Wendy, Steve, etc. working through NAC renewal grant (5 years). Multiresolution and asynchronous data are likely targets for this effort, but it will be a long-term effort. <br />
<br />
15 - Event Broker discussion - Steve has made process on this, but this wiki page is older. See the event broker page. (look at link under Objective). New term "observation" : completely introspectable. A full dependency between objects is implemented. When a subject issues a "modified" event, Delete events are maintained. Complete "relationship" management of the interaction between objects. This helps by allowing asynchronous event processing. MRML has been converted to use the event broker with asynchronous events managed by the Slicer GUI (async events invoked after GUI events are done). This hasn't broken anything so far, but should improve scalability. Dot logfile format can be generated for inter-object dependencies. This can be used to help provide "who called who" traces. Some special magic is done in MRML Display nodes. They set "observation nodes"<br />
<br />
=== Next Week ===<br />
Continue through project review. Request missing project members to attend. Review wiki pages.<br />
<br />
==2008-01-31==<br />
Attendees: Jim, Steve, Stephen, Wendy, Xiaodong, Nicole, Katie, Ron<br />
* Project week follow-up<br />
** Half of tcon on Feb 7<br />
** Half of tcon on Feb 14<br />
* Registration<br />
** Viola-Wells optimizations need to be enabled<br />
** Stephen needs to check-in and publish recent changes<br />
** Stephen needs to update the wiki<br />
** Luis continues to make optimizations (main focus is memory reduction)<br />
* BatchMake<br />
** Grid Wizard - meeting on Monday<br />
** Integration with Slicer delivered via getbuildtest2<br />
* New webpages<br />
** http://slicer.org<br />
** Uses wiki-to-web<br />
** Feel free to edit/improve<br />
* Slicer-specific wiki<br />
** Migrating appropriate info from Na-mic to slicer<br />
** Hold off on adding to Slicer-wiki until notified<br />
*** Continue using Na-mic wiki<br />
* New Nitrc project<br />
** Jim Miller is leading<br />
** "Slicer3 plug-in examples" project<br />
** http://nitrc.org - search for slicer3<br />
*** Includes demo/stub for ITK filtering data, etc.<br />
** Collection associated with an ITK course being taught<br />
** Requires CVS version of ITK<br />
** Works with Slicer build and Slicer install<br />
** Steve P is the liaison with NITRC<br />
* Slicer tutorial at UNC, April 14th<br />
** Working with UNC's BRIC (http://www.bric.unc.edu)<br />
** Sonja, Randy, Martin, Stephen<br />
* User-level Slicer training - Feb 20 at BWH<br />
** 1249 Boyleston<br />
** Release version of Slicer3 <br />
<br />
==2008-01-24==<br />
Attendees: Jim, Steve, Wendy, Xiaodong, Nicole, Katie, Alex, Luis, Ron, Will<br />
* Project week follow-up (Next week?)<br />
** Will will send email invitations for first half of projects for next week's tcon<br />
* Loadable modules<br />
** Alex and Terry are rearranging Slicer3.cxx to support loadable modules<br />
** Separate branch for built-in module discovery process<br />
** Sebastien is working on build issues for modules whose code is outside Slicer3<br />
* GenerateCLP - Thanks Hans for changes to support building modules<br />
** Hans is running a class this semester where the students will build Slicer CLI modules.<br />
** Jim is working on an ExampleModule for people to use as a template for building modules outside of Slicer3. Perhaps NITRC.<br />
* XML library<br />
** What to do with libaries that are too big to include in the source directory?<br />
* AHM 2009, Jan 5-9, 2009<br />
* Summer Project Week, Jun 23-27, 2008<br />
* New server architecture for wiki, svn, publication database<br />
<br />
==2008-01-17==<br />
Attendees: Jim, Katie, Sebastien, Stephen, Luis, Steve, Wendy, Will<br />
<br />
* Luis and Bill Hoffman are making progress in making ITK installation relocatable. This is needed to finish the work on building plugins from an installation.<br />
* What's in VTK 5.2?<br />
** Infovis - Tables, Graphs, Views, IO<br />
** Refinements to WWidgets. Client/Server connections within the widgets. Event translation. New widgets (text, caption, affine, checkerboard, rectilinear wipe, annotation, key frame, contour, measurement, point/placer, plot)<br />
** Build now? Or wait until 5.2 released?<br />
** Repository freeze in March<br />
** Release on April 1, 2008<br />
* ITK release<br />
** Patches to ITK 3.4<br />
*** Nine component/six component tensor conversion in IO has been patched to ITK 3.4<br />
** 1/19-2/1 moving contributions on Insight Journal for ITK 3.6<br />
** Move items from Review directory to main tree (QuadMesh, TransformIO) for ITK 3.6<br />
** Freeze repository 2/29 for ITK 3.6<br />
** Slicer3 will need to build against the Review directory.<br />
* CMake release<br />
** Version 2.6 on the horizon - release candidate in 3 weeks.<br />
* Tcl/Tk 8.5<br />
** Sebastien has a Windows build<br />
** Steve will try it out<br />
** Wait to switch to 8.5 until we have a good reason<br />
* Loadable modules<br />
** Sebastien - working on CMake issues on building modules as loadable modules<br />
** Terry - working on loading modules and reworking Slicer3.cxx<br />
* [[Slicer3:EventBroker | Event Broker]]<br />
* DWI DICOM as part of the Load Volume. Xiaodong is working on it.<br />
* ITKFactories directory in build and installs to hold ImageIO plugin libraries. Should increase the speed of executable plugins on the Mac.<br />
* OpenIGTLink<br />
** Protocol on the wiki (message format)<br />
** Put code in Sandbox, SourceForge, NITRC, Google Code???<br />
* Will schedule a time to go over the Project Week results<br />
<br />
==2008-01-10==<br />
No tcon due to AHM<br />
<br />
==2008-01-03==<br />
* Attendees: Jim, Steve, Will, Brad Davis<br />
* Topics:<br />
** Jim and Will talked about leading the Monday and Friday sessions, and who would do what.<br />
** We are going to send out reminders to the project leads to ensure that their project descriptions are up to date<br />
** We discussed the software process project to make sure that we have a chance to address the Slicer build process, dashboards, etc.<br />
** We decided not to hold the project wrap-up presentation at AHM; we will do that later at subsequent TCons. (We decided that we needed the time to actually work. We are concerned that we are starting to see too many break-outs and not enough time to work.)<br />
** We keenly missed Tina and hope that she and her family are doing well.</div>Davisbhttps://www.na-mic.org/w/index.php?title=Engineering:TCON_2008&diff=23769Engineering:TCON 20082008-04-10T19:17:23Z<p>Davisb: /* 2008-04-10 */</p>
<hr />
<div>Back to [[TCON:Main|TCON:Main]]<br />
__NOTOC__<br />
== Slicer 3 Dartboard ==<br />
Link to the Slicer 3 Dartboard [http://dart.na-mic.org/Slicer3/Dashboard/ here]<br />
<br />
==2008-04-10==<br />
<br />
Attendees: Jim, Steve, Tina, Alex, Nicole, Brad, Dan Marcus,<br />
<br />
*[[2008_Annual_Scientific_Report]]<br />
**Target amount of text: <br />
***look in last years (guidelines for preparation)<br />
***no firm length requirement<br />
<br />
*Training Session NC<br />
**April 14<br />
**whole day workshop---users & developers<br />
**afternoon session---module developers<br />
**need official set of training material?<br />
<br />
*Registration Activities<br />
<br />
*XNat Groupwise Registration<br />
<br />
==2008-04-03==<br />
<br />
Jim, Curt, Tina, Nicole, Wendy, Steve, Brad, Xiaodong, Vince, Ron, Nathan<br />
<br />
Agenda<br />
* discussion of xcede web services and mBIRN<br />
* [[2008_Engineering_review_at_Utah:FollowUp]]<br />
* New! [[Slicer3:DTMRI |glyphs on slices movie!]]<br />
** made using wink from http://www.debugmode.com/wink/<br />
** add something like the following to your wiki page after uploading the .swf file to the wiki<br />
<pre><flash>file=dti_glyphs.swf|width=800|height=600|quality=best|loop=true|play=true</flash></pre><br />
* CMake 2.6 release candidates have been cut with .rpm and .deb output targets!<br />
** Will will work with Katie on this<br />
* Jim is going to visit Kitware to talk about BSpline registration<br />
<br />
==2008-03-27==<br />
Attendees: Steve, Will, Xiaodong, Nathan, Katie, Wendy, Tina, Nicole, Marco, Sebastien<br />
* Nathan will discuss presentation of fluid mechanics projects.<br />
* Update from Core 1 + Core 2 [[2008_Engineering_review_at_Utah | meetings in Utah]] earlier this week.<br />
* [[Slicer3:Chain_CLMs | Discussion of Module Chaining]] (Marco and All)<br />
** Requested by Core 1 to systematize common use case<br />
** Need several steps in an analysis process to act like a single command<br />
** Would like something akin to the EMSegment workflow wizard, but as command line module rather than built-in module<br />
<br />
Highlights:<br />
<br />
Nathan's overview: discussing visualization options for his fluid velocity vector fields for tractography algorithm. Steve mentions a few options: <br />
* A LDDMM module in Slicer2 that does animated vector field visualization (work done in collaboration with Johns Hopkins: Anthony Kolasny, Mike Miller, et al.). <br />
* Another option would be to try using ParaView as a way to flesh out specifics, and then build a more custom tool for tractography later. Will will point Nathan to documentation for file formats, data formats, etc. or help with any questions, and Nathan will try this out.<br />
<br />
Discussion of these topics at the engineering review in Utah:<br />
<br />
* chaining modules together<br />
* grid wizard (Marco) for grid and batch computing<br />
* Bspline registration<br />
* setting up repositories for collecting slicer modules (as technology transition mechanism)<br />
* how this will fit into the slicer build process<br />
* diffusion weighted imaging, shape analysis, and segmentation<br />
* dicom to nrrd converter...<br />
<br />
Milestones were set for April-end, Project week, and AHM.<br />
<br />
Module chaining discussion (see link above):<br />
<br />
* Java version as first goal -- eventually C++ implementation. <br />
* Discussion about module discovery process and how will chained modules be packaged: (c++ stub programs? or <br />
or discovery find chain-descriptor xml files? shell scripts? (cross-platform issues)...)<br />
* Goal: By project week in June we would like to be able to chain modules developed by Core 1.<br />
<br />
Sebastien's update on module building: Wiki will be updated today with status. (link)<br />
<br />
==2008-03-20==<br />
Attendees: Tina, Jim, Will, Wendy, Xiaodong, Nathan, Martin, Marco<br />
* [[2008_Annual_Scientific_Report|Progress Report]] - read over the assignments. We will look for progress from June 1, 2007 to May 30, 2008.<br />
* June 23-27 is the summer project week. We will make first pass on projects in late April.<br />
* Module discussion: Martin wanted to understand the state of module creation and usage within Slicer. Sebastien is working on modules that are built against an installed module. Terry is working on built-in modules for Slicer. Jim is working on modules using CMake in the NTRIC repository.<br />
* Nathan- write a command line, Slicer module that is a wrapper to a web service. Nathan thinks he can get this done prior to the June AHM. We referred to Jim's presentation at the Utah SLC Core 1/Core 2 meeting.<br />
* We will talk about grid wizard next week at SLC<br />
<br />
<br />
==2008-03-13==<br />
Attendees: Jim, Nicole, Dan, Xiaodong, Vince, Sebastian, Alex, Curt, Steve, Will, Terry<br />
* Update on [[Slicer3:Loadable_Modules |Loadable Modules]] project (Terry) and [[Slicer3:Build/Modules | CMake updates for module builds]] (Sebastien)<br />
* [[2008_Engineering_review_at_Utah | Engineering trip to Utah]]<br />
* We are starting to use Categories to bin our pages. [[SuggestedCategories]] - suggestions?<br />
<br />
==2008-03-06==<br />
Attendees: Steve, Jim, Katie, Nicole, Tina, Xiaodong, Marco, Ron<br />
<br />
Highlights:<br />
*Slicer page on wikipedia - http://en.wikipedia.org/wiki/3DSlicer. All engineering core members should visit this page and edit as needed. ASAP.<br />
*dicom to nrrd converter in progress. Xiaodong working on it and expecting to complete in a few weeks.<br />
* [[2008_Engineering_review_at_Utah|March 24-26 Meeting in Utah]]<br />
<br />
==2008-02-28==<br />
<br />
* Attendees: Jim, Steve, Wendy, Katie, Tina, Jeff, and Marco (Grid Wizard Guy)<br />
* Discussion on time series analysis (viewer, scene markup). Initial viewer will be a general tool for comparing images.<br />
* Avalanche of new features in [http://gridwizard.org/gwe/index.html grid wizard and GSlicer3]<br />
** Proxy around Command Line Modules<br />
** Extends command line with specifications for ranges of values as well as specify remote resources (data) that need to be transferred to/from the grid.<br />
** Uses Velocity for parameter template engine<br />
** Grid selection and authentication still being refined for Slicer<br />
** Could be extended to other grid types (LSF, etc.)<br />
** Lots of information on the website. Instructions for installation. A bit daunting for non-grid people. Some of us will have to work through the instructions step by step to evaluate.<br />
<br />
==2008-02-21==<br />
<br />
* Attendees: Xiaodong, Jim, Katie, Nicole, Will, Steve, Nathan, Tina, Ron, Padma, Marco<br />
<br />
- Nathan brought us up to date on fluid mechanics tractography<br />
<br />
- Padma Sundaram: SCIrun environment supports EEG processing<br />
<br />
- Marco is releasing Grid Wizard alpha version<br />
<br />
- Nathan brought up the helical digital phantom web service. Currently the thinking is that it can be accessed through a web service. We suggested that Nathan write a wrapper, consistent with Slicer's execution module, to invoke the web service. However, since it is not available in source form, NAMIC cannot accept it as part of the NAMIC Kit proper. We can guide Nathan in the execution of this module.<br />
<br />
==2008-02-14==<br />
* Attendees: Xiaodong, Katie, Will, Sebastien, Steve, Mike, Wendy, Haiyi, Dan, Curt, Tina <br />
<br />
=== Other NA-MIC Projects ===<br />
<br />
16 - CPack (Katie): Slicer3 compiles and packs using the new C-tools with some bug fixes. Using CMake to select desired modules, using something similar to cygwin. Official Slicer3 snapshot tagged. Different Tcl/Tk versions are currently used for different platform. This need to be addressed.<br />
<br />
17 - Slicer GUI Style Guide and Cookbook {Wendy}: This will be a long term effort. During the programming week, the design and implementation details were discussed. The Cookbook will be launched from Slicer, act like KWWidget tour. <br />
<br />
18 - Volume rendering (Steve): UI is fairly stable.<br />
<br />
19 - Volume rendering using Cuda (Steve): <br />
<br />
20 - 3D W Widgets and Picking (Will): found a list of candidates of widgets for Slicer. A few bug fixes for VTK.<br />
<br />
21 - XNAT Integration (Dan): Requirements were gathered for a XNAT application that organizes files and caches files from XNAT repositories. Some XML format issues have been addressed. <br />
<br />
22 - KWWidgets Roadmap (Sebastien): Gathered requirements. Been working down the list of the feature requirements.<br />
<br />
=== External Collaboration ===<br />
<br />
1 - Astronomical coordinate system support [Harvard IIC] (Mike): Astronomical datasets are quite different from medical dataset. Wendy helped with re-centering data. Made progress in converting between coordinate systems (Cartesian to Spherical).<br />
<br />
2 - New Meshing Techniques into NA-MIC [Univ. of Iowa]<br />
<br />
3 - Meshing Workflow into Slicer [Univ. of Iowa] (Curt): Will be integrated into Slicer soon. Command line program using VTK. <br />
<br />
4 - Evaluating NA-MIC Tools for Small Animal Imaging Workflows [NCI] (Curt): <br />
<br />
5 - IGSTK-Slicer [Georgetown] (Haiyi): Successful tracking data using IGSTK.<br />
<br />
6 - Japanese Intelligent Surgical Instrument Project [AIST]<br />
<br />
7 - GoFigure:High-Level Microscopy Image analysis Application and Algorithms [CalTech-Harvard Medical School] <br />
<br />
8 - Doing microscopy image analysis with Slicer3 [The Ohio State University] <br />
<br />
9 - fMRI Analysis with Slicer 3 [The Ohio State University]<br />
<br />
10 - Resampling DTIs with Slicer 3 [BWH]<br />
<br />
11 - Analyzing fMRI and concurrent EEG with Slicer and SCIRun [BWH] <br />
<br />
12 - Bayesian hierarchical models for fMRI variance components analysis [BWH]<br />
<br />
==2008-02-07==<br />
* Attendees: Ron, Will, Steve, Wendy, Nicole, David G, Mark S., Casey, Sebastien, Curt, Luca<br />
<br />
* Look at [http://www.vtk.org/Wiki/VTK_Widget_Examples upcoming VTK 3D widgets]<br />
* Review of projects from SLC AHM 2008 http://wiki.na-mic.org/Wiki/index.php/2008_Winter_Project_Week<br />
<br />
===DBPs===<br />
<br />
1 - Stochastic Tractography in Schizophrenia (need to be invited to follow-up TCon) <br />
<br />
2 - Cortical thickness analysis - testing EM segmenter to their data. They estimated parameters and tested during the week. The goal now is to compare ITK-MS and EM segment module to see how these two tools compare for cortical thickness. They are reviewing the tools using the same patient data. <br />
<br />
3 - (Mark Scully) Legion segmentation using EM segmenter and other options - worked with Brad using 2 channels of data. Flare as 3rd channel caused problems. Desired to have T1/T2/Flair together as three channel dataset. Marcel is going to deliver his segmentation algorithm software to them to compare results. <br />
<br />
4 - Robotic Prostate Interventions - (David Gobbi) Working on transrectal biopsy module for Slicer. They had a previous module for transcranial biopsies. One of the most exciting developments was a new prototol "open IGT-Link" which will replace navitrack inside Slicer. Image transfer is working over this protocol. A simulator is being developed for the robot. A few VTK bugs may have been discovered during this process, but it isn't on the top priority list right now. <br />
<br />
5 - Prostate Cancer - Wrote new ITK filter that has been submitted to the Sandbox. They are looking at spherical wavelets for shape segmentation. The wiki page will be updated soon.<br />
<br />
=== Other NA-MIC Projects ===<br />
<br />
<br />
1 - Groupwise Registration - (Casey) New Bspline registration method is being developed here. It has been used for another project by Casey (#6). Page needs to be updated. <br />
<br />
2 - (Need to be invited to follow-up TCon)<br />
<br />
3 - (Need to be invited to follow-up TCon)) <br />
<br />
4 - (Need to be invited to follow-up TCon). Page needs to be updated<br />
<br />
5 - Incorporating DTI tools into NAMIC toolkit - They are gathering a dataset that has both structural and DTI data in agreement. Previous dataset was missing part of cortex. UNCDB2 dataset has full coverage of the brain. Resolution is a bit lower, but full coverage is an advantage. Page is close to up to data. Just submitted a paper to ISBI 2008 and working on MICCAI paper, as well. <br />
<br />
* NITRIC is g-forge and would be a good place for automated build process for Slicer modules. This could make it easier to configure Slicer in client labs without need to build from source. This is still being developed by the NA-MIC core team. There is an entry on the collaboration section of the NA-MIC website. Also www.slicer.org/Documentation link. <br />
<br />
6 - (Casey) Worked with Serdar using groupwise registration tool. They are currently evaluating results of this study. More images will be added. <br />
<br />
7 - (John Melanakos) Spent last week working with collaborators on the MICCAI paper. Project page is well filled. <br />
<br />
8 - (Need to be invited to follow-up TCon)<br />
<br />
9 - (Need to be invited to follow-up TCon)<br />
<br />
10 - MRML scenes for execution model. Some of the issues Brad was having have been resolved. Alex is making adjustments to MRML library as needed for the EM segmentation model. <br />
<br />
11 - (Curt) Unstructured Grids in Slicer - Finite Element modeling process was originally in a standalone VTK application. The first Slicer module integration did not use MRML based storage. We are now creating subclasses of Model and Unstructured grid data for storage and display in Slicer. Some minor issues need to be worked out, but the MRML extensions for UnstructuredGrid datatypes are working. <br />
<br />
12 - Python (Luca) MatPlotLib plots are close to happening within Slicer. Steve believes it is 80% complete. Python command line modules are working now. Multiple arguments had to be worked by Luca. He has developed Python-based CLI modules. The event broker is discussed here because it affects the interaction with Python, because a Mutex lock has to be placed on the MRML scene. Dan has been helping with metamodules - a single Python module which calls other mothers (hierarchical execution, recipes, etc.). <br />
<br />
* Ron asked about using this scripting technique for the ModelMaker. Some of the parameter setting, etc. could be set in the top module. Nicole will look at this. Kilian said that he wanted to call the "modelmaker" from another module. <br />
<br />
* A need was identified for new wiki pages: (1) scripted modules, (2) metamodules, (2) python scripted modules<br />
<br />
13 - (Luca) Transform hardening - Sometimes images are not XYZ alligned. How will command line modules treat an object if it is the child of a transform. The module needs to be able to apply xforms to data (after hierarchy is flattened) to get xformed data. Jim and Steve talked through this lately becomes of the transforms access two-directions (from parents / to parents, etc.) They are looking at how to change the model. <br />
<br />
14 - (Steve) MRML support for out-of-core processing - Steve put a link to a new page. Dan, Jim, Wendy, Steve, etc. working through NAC renewal grant (5 years). Multiresolution and asynchronous data are likely targets for this effort, but it will be a long-term effort. <br />
<br />
15 - Event Broker discussion - Steve has made process on this, but this wiki page is older. See the event broker page. (look at link under Objective). New term "observation" : completely introspectable. A full dependency between objects is implemented. When a subject issues a "modified" event, Delete events are maintained. Complete "relationship" management of the interaction between objects. This helps by allowing asynchronous event processing. MRML has been converted to use the event broker with asynchronous events managed by the Slicer GUI (async events invoked after GUI events are done). This hasn't broken anything so far, but should improve scalability. Dot logfile format can be generated for inter-object dependencies. This can be used to help provide "who called who" traces. Some special magic is done in MRML Display nodes. They set "observation nodes"<br />
<br />
=== Next Week ===<br />
Continue through project review. Request missing project members to attend. Review wiki pages.<br />
<br />
==2008-01-31==<br />
Attendees: Jim, Steve, Stephen, Wendy, Xiaodong, Nicole, Katie, Ron<br />
* Project week follow-up<br />
** Half of tcon on Feb 7<br />
** Half of tcon on Feb 14<br />
* Registration<br />
** Viola-Wells optimizations need to be enabled<br />
** Stephen needs to check-in and publish recent changes<br />
** Stephen needs to update the wiki<br />
** Luis continues to make optimizations (main focus is memory reduction)<br />
* BatchMake<br />
** Grid Wizard - meeting on Monday<br />
** Integration with Slicer delivered via getbuildtest2<br />
* New webpages<br />
** http://slicer.org<br />
** Uses wiki-to-web<br />
** Feel free to edit/improve<br />
* Slicer-specific wiki<br />
** Migrating appropriate info from Na-mic to slicer<br />
** Hold off on adding to Slicer-wiki until notified<br />
*** Continue using Na-mic wiki<br />
* New Nitrc project<br />
** Jim Miller is leading<br />
** "Slicer3 plug-in examples" project<br />
** http://nitrc.org - search for slicer3<br />
*** Includes demo/stub for ITK filtering data, etc.<br />
** Collection associated with an ITK course being taught<br />
** Requires CVS version of ITK<br />
** Works with Slicer build and Slicer install<br />
** Steve P is the liaison with NITRC<br />
* Slicer tutorial at UNC, April 14th<br />
** Working with UNC's BRIC (http://www.bric.unc.edu)<br />
** Sonja, Randy, Martin, Stephen<br />
* User-level Slicer training - Feb 20 at BWH<br />
** 1249 Boyleston<br />
** Release version of Slicer3 <br />
<br />
==2008-01-24==<br />
Attendees: Jim, Steve, Wendy, Xiaodong, Nicole, Katie, Alex, Luis, Ron, Will<br />
* Project week follow-up (Next week?)<br />
** Will will send email invitations for first half of projects for next week's tcon<br />
* Loadable modules<br />
** Alex and Terry are rearranging Slicer3.cxx to support loadable modules<br />
** Separate branch for built-in module discovery process<br />
** Sebastien is working on build issues for modules whose code is outside Slicer3<br />
* GenerateCLP - Thanks Hans for changes to support building modules<br />
** Hans is running a class this semester where the students will build Slicer CLI modules.<br />
** Jim is working on an ExampleModule for people to use as a template for building modules outside of Slicer3. Perhaps NITRC.<br />
* XML library<br />
** What to do with libaries that are too big to include in the source directory?<br />
* AHM 2009, Jan 5-9, 2009<br />
* Summer Project Week, Jun 23-27, 2008<br />
* New server architecture for wiki, svn, publication database<br />
<br />
==2008-01-17==<br />
Attendees: Jim, Katie, Sebastien, Stephen, Luis, Steve, Wendy, Will<br />
<br />
* Luis and Bill Hoffman are making progress in making ITK installation relocatable. This is needed to finish the work on building plugins from an installation.<br />
* What's in VTK 5.2?<br />
** Infovis - Tables, Graphs, Views, IO<br />
** Refinements to WWidgets. Client/Server connections within the widgets. Event translation. New widgets (text, caption, affine, checkerboard, rectilinear wipe, annotation, key frame, contour, measurement, point/placer, plot)<br />
** Build now? Or wait until 5.2 released?<br />
** Repository freeze in March<br />
** Release on April 1, 2008<br />
* ITK release<br />
** Patches to ITK 3.4<br />
*** Nine component/six component tensor conversion in IO has been patched to ITK 3.4<br />
** 1/19-2/1 moving contributions on Insight Journal for ITK 3.6<br />
** Move items from Review directory to main tree (QuadMesh, TransformIO) for ITK 3.6<br />
** Freeze repository 2/29 for ITK 3.6<br />
** Slicer3 will need to build against the Review directory.<br />
* CMake release<br />
** Version 2.6 on the horizon - release candidate in 3 weeks.<br />
* Tcl/Tk 8.5<br />
** Sebastien has a Windows build<br />
** Steve will try it out<br />
** Wait to switch to 8.5 until we have a good reason<br />
* Loadable modules<br />
** Sebastien - working on CMake issues on building modules as loadable modules<br />
** Terry - working on loading modules and reworking Slicer3.cxx<br />
* [[Slicer3:EventBroker | Event Broker]]<br />
* DWI DICOM as part of the Load Volume. Xiaodong is working on it.<br />
* ITKFactories directory in build and installs to hold ImageIO plugin libraries. Should increase the speed of executable plugins on the Mac.<br />
* OpenIGTLink<br />
** Protocol on the wiki (message format)<br />
** Put code in Sandbox, SourceForge, NITRC, Google Code???<br />
* Will schedule a time to go over the Project Week results<br />
<br />
==2008-01-10==<br />
No tcon due to AHM<br />
<br />
==2008-01-03==<br />
* Attendees: Jim, Steve, Will, Brad Davis<br />
* Topics:<br />
** Jim and Will talked about leading the Monday and Friday sessions, and who would do what.<br />
** We are going to send out reminders to the project leads to ensure that their project descriptions are up to date<br />
** We discussed the software process project to make sure that we have a chance to address the Slicer build process, dashboards, etc.<br />
** We decided not to hold the project wrap-up presentation at AHM; we will do that later at subsequent TCons. (We decided that we needed the time to actually work. We are concerned that we are starting to see too many break-outs and not enough time to work.)<br />
** We keenly missed Tina and hope that she and her family are doing well.</div>Davisbhttps://www.na-mic.org/w/index.php?title=Engineering:TCON_2008&diff=23768Engineering:TCON 20082008-04-10T19:16:27Z<p>Davisb: /* 2008-04-10 */</p>
<hr />
<div>Back to [[TCON:Main|TCON:Main]]<br />
__NOTOC__<br />
== Slicer 3 Dartboard ==<br />
Link to the Slicer 3 Dartboard [http://dart.na-mic.org/Slicer3/Dashboard/ here]<br />
<br />
==2008-04-10==<br />
<br />
Attendees: Jim, Steve, Tina, Alex, Nicole, Brad, Dan Marcus,<br />
<br />
*[[2008_Annual_Scientific_Report]]<br />
**Target amount of text: <br />
***look in last years (guidelines for preparation)<br />
***no firm length requirement<br />
<br />
*Training Session NC<br />
**April 14<br />
**whole day workshop---users & developers<br />
**afternoon session---module developers<br />
**need official set of training material?<br />
<br />
Registration Activities<br />
<br />
XNat Groupwise Registration<br />
<br />
==2008-04-03==<br />
<br />
Jim, Curt, Tina, Nicole, Wendy, Steve, Brad, Xiaodong, Vince, Ron, Nathan<br />
<br />
Agenda<br />
* discussion of xcede web services and mBIRN<br />
* [[2008_Engineering_review_at_Utah:FollowUp]]<br />
* New! [[Slicer3:DTMRI |glyphs on slices movie!]]<br />
** made using wink from http://www.debugmode.com/wink/<br />
** add something like the following to your wiki page after uploading the .swf file to the wiki<br />
<pre><flash>file=dti_glyphs.swf|width=800|height=600|quality=best|loop=true|play=true</flash></pre><br />
* CMake 2.6 release candidates have been cut with .rpm and .deb output targets!<br />
** Will will work with Katie on this<br />
* Jim is going to visit Kitware to talk about BSpline registration<br />
<br />
==2008-03-27==<br />
Attendees: Steve, Will, Xiaodong, Nathan, Katie, Wendy, Tina, Nicole, Marco, Sebastien<br />
* Nathan will discuss presentation of fluid mechanics projects.<br />
* Update from Core 1 + Core 2 [[2008_Engineering_review_at_Utah | meetings in Utah]] earlier this week.<br />
* [[Slicer3:Chain_CLMs | Discussion of Module Chaining]] (Marco and All)<br />
** Requested by Core 1 to systematize common use case<br />
** Need several steps in an analysis process to act like a single command<br />
** Would like something akin to the EMSegment workflow wizard, but as command line module rather than built-in module<br />
<br />
Highlights:<br />
<br />
Nathan's overview: discussing visualization options for his fluid velocity vector fields for tractography algorithm. Steve mentions a few options: <br />
* A LDDMM module in Slicer2 that does animated vector field visualization (work done in collaboration with Johns Hopkins: Anthony Kolasny, Mike Miller, et al.). <br />
* Another option would be to try using ParaView as a way to flesh out specifics, and then build a more custom tool for tractography later. Will will point Nathan to documentation for file formats, data formats, etc. or help with any questions, and Nathan will try this out.<br />
<br />
Discussion of these topics at the engineering review in Utah:<br />
<br />
* chaining modules together<br />
* grid wizard (Marco) for grid and batch computing<br />
* Bspline registration<br />
* setting up repositories for collecting slicer modules (as technology transition mechanism)<br />
* how this will fit into the slicer build process<br />
* diffusion weighted imaging, shape analysis, and segmentation<br />
* dicom to nrrd converter...<br />
<br />
Milestones were set for April-end, Project week, and AHM.<br />
<br />
Module chaining discussion (see link above):<br />
<br />
* Java version as first goal -- eventually C++ implementation. <br />
* Discussion about module discovery process and how will chained modules be packaged: (c++ stub programs? or <br />
or discovery find chain-descriptor xml files? shell scripts? (cross-platform issues)...)<br />
* Goal: By project week in June we would like to be able to chain modules developed by Core 1.<br />
<br />
Sebastien's update on module building: Wiki will be updated today with status. (link)<br />
<br />
==2008-03-20==<br />
Attendees: Tina, Jim, Will, Wendy, Xiaodong, Nathan, Martin, Marco<br />
* [[2008_Annual_Scientific_Report|Progress Report]] - read over the assignments. We will look for progress from June 1, 2007 to May 30, 2008.<br />
* June 23-27 is the summer project week. We will make first pass on projects in late April.<br />
* Module discussion: Martin wanted to understand the state of module creation and usage within Slicer. Sebastien is working on modules that are built against an installed module. Terry is working on built-in modules for Slicer. Jim is working on modules using CMake in the NTRIC repository.<br />
* Nathan- write a command line, Slicer module that is a wrapper to a web service. Nathan thinks he can get this done prior to the June AHM. We referred to Jim's presentation at the Utah SLC Core 1/Core 2 meeting.<br />
* We will talk about grid wizard next week at SLC<br />
<br />
<br />
==2008-03-13==<br />
Attendees: Jim, Nicole, Dan, Xiaodong, Vince, Sebastian, Alex, Curt, Steve, Will, Terry<br />
* Update on [[Slicer3:Loadable_Modules |Loadable Modules]] project (Terry) and [[Slicer3:Build/Modules | CMake updates for module builds]] (Sebastien)<br />
* [[2008_Engineering_review_at_Utah | Engineering trip to Utah]]<br />
* We are starting to use Categories to bin our pages. [[SuggestedCategories]] - suggestions?<br />
<br />
==2008-03-06==<br />
Attendees: Steve, Jim, Katie, Nicole, Tina, Xiaodong, Marco, Ron<br />
<br />
Highlights:<br />
*Slicer page on wikipedia - http://en.wikipedia.org/wiki/3DSlicer. All engineering core members should visit this page and edit as needed. ASAP.<br />
*dicom to nrrd converter in progress. Xiaodong working on it and expecting to complete in a few weeks.<br />
* [[2008_Engineering_review_at_Utah|March 24-26 Meeting in Utah]]<br />
<br />
==2008-02-28==<br />
<br />
* Attendees: Jim, Steve, Wendy, Katie, Tina, Jeff, and Marco (Grid Wizard Guy)<br />
* Discussion on time series analysis (viewer, scene markup). Initial viewer will be a general tool for comparing images.<br />
* Avalanche of new features in [http://gridwizard.org/gwe/index.html grid wizard and GSlicer3]<br />
** Proxy around Command Line Modules<br />
** Extends command line with specifications for ranges of values as well as specify remote resources (data) that need to be transferred to/from the grid.<br />
** Uses Velocity for parameter template engine<br />
** Grid selection and authentication still being refined for Slicer<br />
** Could be extended to other grid types (LSF, etc.)<br />
** Lots of information on the website. Instructions for installation. A bit daunting for non-grid people. Some of us will have to work through the instructions step by step to evaluate.<br />
<br />
==2008-02-21==<br />
<br />
* Attendees: Xiaodong, Jim, Katie, Nicole, Will, Steve, Nathan, Tina, Ron, Padma, Marco<br />
<br />
- Nathan brought us up to date on fluid mechanics tractography<br />
<br />
- Padma Sundaram: SCIrun environment supports EEG processing<br />
<br />
- Marco is releasing Grid Wizard alpha version<br />
<br />
- Nathan brought up the helical digital phantom web service. Currently the thinking is that it can be accessed through a web service. We suggested that Nathan write a wrapper, consistent with Slicer's execution module, to invoke the web service. However, since it is not available in source form, NAMIC cannot accept it as part of the NAMIC Kit proper. We can guide Nathan in the execution of this module.<br />
<br />
==2008-02-14==<br />
* Attendees: Xiaodong, Katie, Will, Sebastien, Steve, Mike, Wendy, Haiyi, Dan, Curt, Tina <br />
<br />
=== Other NA-MIC Projects ===<br />
<br />
16 - CPack (Katie): Slicer3 compiles and packs using the new C-tools with some bug fixes. Using CMake to select desired modules, using something similar to cygwin. Official Slicer3 snapshot tagged. Different Tcl/Tk versions are currently used for different platform. This need to be addressed.<br />
<br />
17 - Slicer GUI Style Guide and Cookbook {Wendy}: This will be a long term effort. During the programming week, the design and implementation details were discussed. The Cookbook will be launched from Slicer, act like KWWidget tour. <br />
<br />
18 - Volume rendering (Steve): UI is fairly stable.<br />
<br />
19 - Volume rendering using Cuda (Steve): <br />
<br />
20 - 3D W Widgets and Picking (Will): found a list of candidates of widgets for Slicer. A few bug fixes for VTK.<br />
<br />
21 - XNAT Integration (Dan): Requirements were gathered for a XNAT application that organizes files and caches files from XNAT repositories. Some XML format issues have been addressed. <br />
<br />
22 - KWWidgets Roadmap (Sebastien): Gathered requirements. Been working down the list of the feature requirements.<br />
<br />
=== External Collaboration ===<br />
<br />
1 - Astronomical coordinate system support [Harvard IIC] (Mike): Astronomical datasets are quite different from medical dataset. Wendy helped with re-centering data. Made progress in converting between coordinate systems (Cartesian to Spherical).<br />
<br />
2 - New Meshing Techniques into NA-MIC [Univ. of Iowa]<br />
<br />
3 - Meshing Workflow into Slicer [Univ. of Iowa] (Curt): Will be integrated into Slicer soon. Command line program using VTK. <br />
<br />
4 - Evaluating NA-MIC Tools for Small Animal Imaging Workflows [NCI] (Curt): <br />
<br />
5 - IGSTK-Slicer [Georgetown] (Haiyi): Successful tracking data using IGSTK.<br />
<br />
6 - Japanese Intelligent Surgical Instrument Project [AIST]<br />
<br />
7 - GoFigure:High-Level Microscopy Image analysis Application and Algorithms [CalTech-Harvard Medical School] <br />
<br />
8 - Doing microscopy image analysis with Slicer3 [The Ohio State University] <br />
<br />
9 - fMRI Analysis with Slicer 3 [The Ohio State University]<br />
<br />
10 - Resampling DTIs with Slicer 3 [BWH]<br />
<br />
11 - Analyzing fMRI and concurrent EEG with Slicer and SCIRun [BWH] <br />
<br />
12 - Bayesian hierarchical models for fMRI variance components analysis [BWH]<br />
<br />
==2008-02-07==<br />
* Attendees: Ron, Will, Steve, Wendy, Nicole, David G, Mark S., Casey, Sebastien, Curt, Luca<br />
<br />
* Look at [http://www.vtk.org/Wiki/VTK_Widget_Examples upcoming VTK 3D widgets]<br />
* Review of projects from SLC AHM 2008 http://wiki.na-mic.org/Wiki/index.php/2008_Winter_Project_Week<br />
<br />
===DBPs===<br />
<br />
1 - Stochastic Tractography in Schizophrenia (need to be invited to follow-up TCon) <br />
<br />
2 - Cortical thickness analysis - testing EM segmenter to their data. They estimated parameters and tested during the week. The goal now is to compare ITK-MS and EM segment module to see how these two tools compare for cortical thickness. They are reviewing the tools using the same patient data. <br />
<br />
3 - (Mark Scully) Legion segmentation using EM segmenter and other options - worked with Brad using 2 channels of data. Flare as 3rd channel caused problems. Desired to have T1/T2/Flair together as three channel dataset. Marcel is going to deliver his segmentation algorithm software to them to compare results. <br />
<br />
4 - Robotic Prostate Interventions - (David Gobbi) Working on transrectal biopsy module for Slicer. They had a previous module for transcranial biopsies. One of the most exciting developments was a new prototol "open IGT-Link" which will replace navitrack inside Slicer. Image transfer is working over this protocol. A simulator is being developed for the robot. A few VTK bugs may have been discovered during this process, but it isn't on the top priority list right now. <br />
<br />
5 - Prostate Cancer - Wrote new ITK filter that has been submitted to the Sandbox. They are looking at spherical wavelets for shape segmentation. The wiki page will be updated soon.<br />
<br />
=== Other NA-MIC Projects ===<br />
<br />
<br />
1 - Groupwise Registration - (Casey) New Bspline registration method is being developed here. It has been used for another project by Casey (#6). Page needs to be updated. <br />
<br />
2 - (Need to be invited to follow-up TCon)<br />
<br />
3 - (Need to be invited to follow-up TCon)) <br />
<br />
4 - (Need to be invited to follow-up TCon). Page needs to be updated<br />
<br />
5 - Incorporating DTI tools into NAMIC toolkit - They are gathering a dataset that has both structural and DTI data in agreement. Previous dataset was missing part of cortex. UNCDB2 dataset has full coverage of the brain. Resolution is a bit lower, but full coverage is an advantage. Page is close to up to data. Just submitted a paper to ISBI 2008 and working on MICCAI paper, as well. <br />
<br />
* NITRIC is g-forge and would be a good place for automated build process for Slicer modules. This could make it easier to configure Slicer in client labs without need to build from source. This is still being developed by the NA-MIC core team. There is an entry on the collaboration section of the NA-MIC website. Also www.slicer.org/Documentation link. <br />
<br />
6 - (Casey) Worked with Serdar using groupwise registration tool. They are currently evaluating results of this study. More images will be added. <br />
<br />
7 - (John Melanakos) Spent last week working with collaborators on the MICCAI paper. Project page is well filled. <br />
<br />
8 - (Need to be invited to follow-up TCon)<br />
<br />
9 - (Need to be invited to follow-up TCon)<br />
<br />
10 - MRML scenes for execution model. Some of the issues Brad was having have been resolved. Alex is making adjustments to MRML library as needed for the EM segmentation model. <br />
<br />
11 - (Curt) Unstructured Grids in Slicer - Finite Element modeling process was originally in a standalone VTK application. The first Slicer module integration did not use MRML based storage. We are now creating subclasses of Model and Unstructured grid data for storage and display in Slicer. Some minor issues need to be worked out, but the MRML extensions for UnstructuredGrid datatypes are working. <br />
<br />
12 - Python (Luca) MatPlotLib plots are close to happening within Slicer. Steve believes it is 80% complete. Python command line modules are working now. Multiple arguments had to be worked by Luca. He has developed Python-based CLI modules. The event broker is discussed here because it affects the interaction with Python, because a Mutex lock has to be placed on the MRML scene. Dan has been helping with metamodules - a single Python module which calls other mothers (hierarchical execution, recipes, etc.). <br />
<br />
* Ron asked about using this scripting technique for the ModelMaker. Some of the parameter setting, etc. could be set in the top module. Nicole will look at this. Kilian said that he wanted to call the "modelmaker" from another module. <br />
<br />
* A need was identified for new wiki pages: (1) scripted modules, (2) metamodules, (2) python scripted modules<br />
<br />
13 - (Luca) Transform hardening - Sometimes images are not XYZ alligned. How will command line modules treat an object if it is the child of a transform. The module needs to be able to apply xforms to data (after hierarchy is flattened) to get xformed data. Jim and Steve talked through this lately becomes of the transforms access two-directions (from parents / to parents, etc.) They are looking at how to change the model. <br />
<br />
14 - (Steve) MRML support for out-of-core processing - Steve put a link to a new page. Dan, Jim, Wendy, Steve, etc. working through NAC renewal grant (5 years). Multiresolution and asynchronous data are likely targets for this effort, but it will be a long-term effort. <br />
<br />
15 - Event Broker discussion - Steve has made process on this, but this wiki page is older. See the event broker page. (look at link under Objective). New term "observation" : completely introspectable. A full dependency between objects is implemented. When a subject issues a "modified" event, Delete events are maintained. Complete "relationship" management of the interaction between objects. This helps by allowing asynchronous event processing. MRML has been converted to use the event broker with asynchronous events managed by the Slicer GUI (async events invoked after GUI events are done). This hasn't broken anything so far, but should improve scalability. Dot logfile format can be generated for inter-object dependencies. This can be used to help provide "who called who" traces. Some special magic is done in MRML Display nodes. They set "observation nodes"<br />
<br />
=== Next Week ===<br />
Continue through project review. Request missing project members to attend. Review wiki pages.<br />
<br />
==2008-01-31==<br />
Attendees: Jim, Steve, Stephen, Wendy, Xiaodong, Nicole, Katie, Ron<br />
* Project week follow-up<br />
** Half of tcon on Feb 7<br />
** Half of tcon on Feb 14<br />
* Registration<br />
** Viola-Wells optimizations need to be enabled<br />
** Stephen needs to check-in and publish recent changes<br />
** Stephen needs to update the wiki<br />
** Luis continues to make optimizations (main focus is memory reduction)<br />
* BatchMake<br />
** Grid Wizard - meeting on Monday<br />
** Integration with Slicer delivered via getbuildtest2<br />
* New webpages<br />
** http://slicer.org<br />
** Uses wiki-to-web<br />
** Feel free to edit/improve<br />
* Slicer-specific wiki<br />
** Migrating appropriate info from Na-mic to slicer<br />
** Hold off on adding to Slicer-wiki until notified<br />
*** Continue using Na-mic wiki<br />
* New Nitrc project<br />
** Jim Miller is leading<br />
** "Slicer3 plug-in examples" project<br />
** http://nitrc.org - search for slicer3<br />
*** Includes demo/stub for ITK filtering data, etc.<br />
** Collection associated with an ITK course being taught<br />
** Requires CVS version of ITK<br />
** Works with Slicer build and Slicer install<br />
** Steve P is the liaison with NITRC<br />
* Slicer tutorial at UNC, April 14th<br />
** Working with UNC's BRIC (http://www.bric.unc.edu)<br />
** Sonja, Randy, Martin, Stephen<br />
* User-level Slicer training - Feb 20 at BWH<br />
** 1249 Boyleston<br />
** Release version of Slicer3 <br />
<br />
==2008-01-24==<br />
Attendees: Jim, Steve, Wendy, Xiaodong, Nicole, Katie, Alex, Luis, Ron, Will<br />
* Project week follow-up (Next week?)<br />
** Will will send email invitations for first half of projects for next week's tcon<br />
* Loadable modules<br />
** Alex and Terry are rearranging Slicer3.cxx to support loadable modules<br />
** Separate branch for built-in module discovery process<br />
** Sebastien is working on build issues for modules whose code is outside Slicer3<br />
* GenerateCLP - Thanks Hans for changes to support building modules<br />
** Hans is running a class this semester where the students will build Slicer CLI modules.<br />
** Jim is working on an ExampleModule for people to use as a template for building modules outside of Slicer3. Perhaps NITRC.<br />
* XML library<br />
** What to do with libaries that are too big to include in the source directory?<br />
* AHM 2009, Jan 5-9, 2009<br />
* Summer Project Week, Jun 23-27, 2008<br />
* New server architecture for wiki, svn, publication database<br />
<br />
==2008-01-17==<br />
Attendees: Jim, Katie, Sebastien, Stephen, Luis, Steve, Wendy, Will<br />
<br />
* Luis and Bill Hoffman are making progress in making ITK installation relocatable. This is needed to finish the work on building plugins from an installation.<br />
* What's in VTK 5.2?<br />
** Infovis - Tables, Graphs, Views, IO<br />
** Refinements to WWidgets. Client/Server connections within the widgets. Event translation. New widgets (text, caption, affine, checkerboard, rectilinear wipe, annotation, key frame, contour, measurement, point/placer, plot)<br />
** Build now? Or wait until 5.2 released?<br />
** Repository freeze in March<br />
** Release on April 1, 2008<br />
* ITK release<br />
** Patches to ITK 3.4<br />
*** Nine component/six component tensor conversion in IO has been patched to ITK 3.4<br />
** 1/19-2/1 moving contributions on Insight Journal for ITK 3.6<br />
** Move items from Review directory to main tree (QuadMesh, TransformIO) for ITK 3.6<br />
** Freeze repository 2/29 for ITK 3.6<br />
** Slicer3 will need to build against the Review directory.<br />
* CMake release<br />
** Version 2.6 on the horizon - release candidate in 3 weeks.<br />
* Tcl/Tk 8.5<br />
** Sebastien has a Windows build<br />
** Steve will try it out<br />
** Wait to switch to 8.5 until we have a good reason<br />
* Loadable modules<br />
** Sebastien - working on CMake issues on building modules as loadable modules<br />
** Terry - working on loading modules and reworking Slicer3.cxx<br />
* [[Slicer3:EventBroker | Event Broker]]<br />
* DWI DICOM as part of the Load Volume. Xiaodong is working on it.<br />
* ITKFactories directory in build and installs to hold ImageIO plugin libraries. Should increase the speed of executable plugins on the Mac.<br />
* OpenIGTLink<br />
** Protocol on the wiki (message format)<br />
** Put code in Sandbox, SourceForge, NITRC, Google Code???<br />
* Will schedule a time to go over the Project Week results<br />
<br />
==2008-01-10==<br />
No tcon due to AHM<br />
<br />
==2008-01-03==<br />
* Attendees: Jim, Steve, Will, Brad Davis<br />
* Topics:<br />
** Jim and Will talked about leading the Monday and Friday sessions, and who would do what.<br />
** We are going to send out reminders to the project leads to ensure that their project descriptions are up to date<br />
** We discussed the software process project to make sure that we have a chance to address the Slicer build process, dashboards, etc.<br />
** We decided not to hold the project wrap-up presentation at AHM; we will do that later at subsequent TCons. (We decided that we needed the time to actually work. We are concerned that we are starting to see too many break-outs and not enough time to work.)<br />
** We keenly missed Tina and hope that she and her family are doing well.</div>Davisbhttps://www.na-mic.org/w/index.php?title=Engineering:TCON_2008&diff=23766Engineering:TCON 20082008-04-10T19:15:36Z<p>Davisb: /* 2008-04-10 */</p>
<hr />
<div>Back to [[TCON:Main|TCON:Main]]<br />
__NOTOC__<br />
== Slicer 3 Dartboard ==<br />
Link to the Slicer 3 Dartboard [http://dart.na-mic.org/Slicer3/Dashboard/ here]<br />
<br />
==2008-04-10==<br />
<br />
Attendees: Jim, Steve, Tina, Alex, Nicole, Brad, Dan Marcus,<br />
<br />
*[[2008_Annual_Scientific_Report]]<br />
**Target amount of text: <br />
***look in last years (guidelines for preparation)<br />
***no firm length requirement<br />
<br />
Training Session NC<br />
April 14<br />
whole day workshop---users & developers<br />
afternoon session---module developers<br />
<br />
Registration Activities<br />
<br />
XNat Groupwise Registration<br />
<br />
==2008-04-03==<br />
<br />
Jim, Curt, Tina, Nicole, Wendy, Steve, Brad, Xiaodong, Vince, Ron, Nathan<br />
<br />
Agenda<br />
* discussion of xcede web services and mBIRN<br />
* [[2008_Engineering_review_at_Utah:FollowUp]]<br />
* New! [[Slicer3:DTMRI |glyphs on slices movie!]]<br />
** made using wink from http://www.debugmode.com/wink/<br />
** add something like the following to your wiki page after uploading the .swf file to the wiki<br />
<pre><flash>file=dti_glyphs.swf|width=800|height=600|quality=best|loop=true|play=true</flash></pre><br />
* CMake 2.6 release candidates have been cut with .rpm and .deb output targets!<br />
** Will will work with Katie on this<br />
* Jim is going to visit Kitware to talk about BSpline registration<br />
<br />
==2008-03-27==<br />
Attendees: Steve, Will, Xiaodong, Nathan, Katie, Wendy, Tina, Nicole, Marco, Sebastien<br />
* Nathan will discuss presentation of fluid mechanics projects.<br />
* Update from Core 1 + Core 2 [[2008_Engineering_review_at_Utah | meetings in Utah]] earlier this week.<br />
* [[Slicer3:Chain_CLMs | Discussion of Module Chaining]] (Marco and All)<br />
** Requested by Core 1 to systematize common use case<br />
** Need several steps in an analysis process to act like a single command<br />
** Would like something akin to the EMSegment workflow wizard, but as command line module rather than built-in module<br />
<br />
Highlights:<br />
<br />
Nathan's overview: discussing visualization options for his fluid velocity vector fields for tractography algorithm. Steve mentions a few options: <br />
* A LDDMM module in Slicer2 that does animated vector field visualization (work done in collaboration with Johns Hopkins: Anthony Kolasny, Mike Miller, et al.). <br />
* Another option would be to try using ParaView as a way to flesh out specifics, and then build a more custom tool for tractography later. Will will point Nathan to documentation for file formats, data formats, etc. or help with any questions, and Nathan will try this out.<br />
<br />
Discussion of these topics at the engineering review in Utah:<br />
<br />
* chaining modules together<br />
* grid wizard (Marco) for grid and batch computing<br />
* Bspline registration<br />
* setting up repositories for collecting slicer modules (as technology transition mechanism)<br />
* how this will fit into the slicer build process<br />
* diffusion weighted imaging, shape analysis, and segmentation<br />
* dicom to nrrd converter...<br />
<br />
Milestones were set for April-end, Project week, and AHM.<br />
<br />
Module chaining discussion (see link above):<br />
<br />
* Java version as first goal -- eventually C++ implementation. <br />
* Discussion about module discovery process and how will chained modules be packaged: (c++ stub programs? or <br />
or discovery find chain-descriptor xml files? shell scripts? (cross-platform issues)...)<br />
* Goal: By project week in June we would like to be able to chain modules developed by Core 1.<br />
<br />
Sebastien's update on module building: Wiki will be updated today with status. (link)<br />
<br />
==2008-03-20==<br />
Attendees: Tina, Jim, Will, Wendy, Xiaodong, Nathan, Martin, Marco<br />
* [[2008_Annual_Scientific_Report|Progress Report]] - read over the assignments. We will look for progress from June 1, 2007 to May 30, 2008.<br />
* June 23-27 is the summer project week. We will make first pass on projects in late April.<br />
* Module discussion: Martin wanted to understand the state of module creation and usage within Slicer. Sebastien is working on modules that are built against an installed module. Terry is working on built-in modules for Slicer. Jim is working on modules using CMake in the NTRIC repository.<br />
* Nathan- write a command line, Slicer module that is a wrapper to a web service. Nathan thinks he can get this done prior to the June AHM. We referred to Jim's presentation at the Utah SLC Core 1/Core 2 meeting.<br />
* We will talk about grid wizard next week at SLC<br />
<br />
<br />
==2008-03-13==<br />
Attendees: Jim, Nicole, Dan, Xiaodong, Vince, Sebastian, Alex, Curt, Steve, Will, Terry<br />
* Update on [[Slicer3:Loadable_Modules |Loadable Modules]] project (Terry) and [[Slicer3:Build/Modules | CMake updates for module builds]] (Sebastien)<br />
* [[2008_Engineering_review_at_Utah | Engineering trip to Utah]]<br />
* We are starting to use Categories to bin our pages. [[SuggestedCategories]] - suggestions?<br />
<br />
==2008-03-06==<br />
Attendees: Steve, Jim, Katie, Nicole, Tina, Xiaodong, Marco, Ron<br />
<br />
Highlights:<br />
*Slicer page on wikipedia - http://en.wikipedia.org/wiki/3DSlicer. All engineering core members should visit this page and edit as needed. ASAP.<br />
*dicom to nrrd converter in progress. Xiaodong working on it and expecting to complete in a few weeks.<br />
* [[2008_Engineering_review_at_Utah|March 24-26 Meeting in Utah]]<br />
<br />
==2008-02-28==<br />
<br />
* Attendees: Jim, Steve, Wendy, Katie, Tina, Jeff, and Marco (Grid Wizard Guy)<br />
* Discussion on time series analysis (viewer, scene markup). Initial viewer will be a general tool for comparing images.<br />
* Avalanche of new features in [http://gridwizard.org/gwe/index.html grid wizard and GSlicer3]<br />
** Proxy around Command Line Modules<br />
** Extends command line with specifications for ranges of values as well as specify remote resources (data) that need to be transferred to/from the grid.<br />
** Uses Velocity for parameter template engine<br />
** Grid selection and authentication still being refined for Slicer<br />
** Could be extended to other grid types (LSF, etc.)<br />
** Lots of information on the website. Instructions for installation. A bit daunting for non-grid people. Some of us will have to work through the instructions step by step to evaluate.<br />
<br />
==2008-02-21==<br />
<br />
* Attendees: Xiaodong, Jim, Katie, Nicole, Will, Steve, Nathan, Tina, Ron, Padma, Marco<br />
<br />
- Nathan brought us up to date on fluid mechanics tractography<br />
<br />
- Padma Sundaram: SCIrun environment supports EEG processing<br />
<br />
- Marco is releasing Grid Wizard alpha version<br />
<br />
- Nathan brought up the helical digital phantom web service. Currently the thinking is that it can be accessed through a web service. We suggested that Nathan write a wrapper, consistent with Slicer's execution module, to invoke the web service. However, since it is not available in source form, NAMIC cannot accept it as part of the NAMIC Kit proper. We can guide Nathan in the execution of this module.<br />
<br />
==2008-02-14==<br />
* Attendees: Xiaodong, Katie, Will, Sebastien, Steve, Mike, Wendy, Haiyi, Dan, Curt, Tina <br />
<br />
=== Other NA-MIC Projects ===<br />
<br />
16 - CPack (Katie): Slicer3 compiles and packs using the new C-tools with some bug fixes. Using CMake to select desired modules, using something similar to cygwin. Official Slicer3 snapshot tagged. Different Tcl/Tk versions are currently used for different platform. This need to be addressed.<br />
<br />
17 - Slicer GUI Style Guide and Cookbook {Wendy}: This will be a long term effort. During the programming week, the design and implementation details were discussed. The Cookbook will be launched from Slicer, act like KWWidget tour. <br />
<br />
18 - Volume rendering (Steve): UI is fairly stable.<br />
<br />
19 - Volume rendering using Cuda (Steve): <br />
<br />
20 - 3D W Widgets and Picking (Will): found a list of candidates of widgets for Slicer. A few bug fixes for VTK.<br />
<br />
21 - XNAT Integration (Dan): Requirements were gathered for a XNAT application that organizes files and caches files from XNAT repositories. Some XML format issues have been addressed. <br />
<br />
22 - KWWidgets Roadmap (Sebastien): Gathered requirements. Been working down the list of the feature requirements.<br />
<br />
=== External Collaboration ===<br />
<br />
1 - Astronomical coordinate system support [Harvard IIC] (Mike): Astronomical datasets are quite different from medical dataset. Wendy helped with re-centering data. Made progress in converting between coordinate systems (Cartesian to Spherical).<br />
<br />
2 - New Meshing Techniques into NA-MIC [Univ. of Iowa]<br />
<br />
3 - Meshing Workflow into Slicer [Univ. of Iowa] (Curt): Will be integrated into Slicer soon. Command line program using VTK. <br />
<br />
4 - Evaluating NA-MIC Tools for Small Animal Imaging Workflows [NCI] (Curt): <br />
<br />
5 - IGSTK-Slicer [Georgetown] (Haiyi): Successful tracking data using IGSTK.<br />
<br />
6 - Japanese Intelligent Surgical Instrument Project [AIST]<br />
<br />
7 - GoFigure:High-Level Microscopy Image analysis Application and Algorithms [CalTech-Harvard Medical School] <br />
<br />
8 - Doing microscopy image analysis with Slicer3 [The Ohio State University] <br />
<br />
9 - fMRI Analysis with Slicer 3 [The Ohio State University]<br />
<br />
10 - Resampling DTIs with Slicer 3 [BWH]<br />
<br />
11 - Analyzing fMRI and concurrent EEG with Slicer and SCIRun [BWH] <br />
<br />
12 - Bayesian hierarchical models for fMRI variance components analysis [BWH]<br />
<br />
==2008-02-07==<br />
* Attendees: Ron, Will, Steve, Wendy, Nicole, David G, Mark S., Casey, Sebastien, Curt, Luca<br />
<br />
* Look at [http://www.vtk.org/Wiki/VTK_Widget_Examples upcoming VTK 3D widgets]<br />
* Review of projects from SLC AHM 2008 http://wiki.na-mic.org/Wiki/index.php/2008_Winter_Project_Week<br />
<br />
===DBPs===<br />
<br />
1 - Stochastic Tractography in Schizophrenia (need to be invited to follow-up TCon) <br />
<br />
2 - Cortical thickness analysis - testing EM segmenter to their data. They estimated parameters and tested during the week. The goal now is to compare ITK-MS and EM segment module to see how these two tools compare for cortical thickness. They are reviewing the tools using the same patient data. <br />
<br />
3 - (Mark Scully) Legion segmentation using EM segmenter and other options - worked with Brad using 2 channels of data. Flare as 3rd channel caused problems. Desired to have T1/T2/Flair together as three channel dataset. Marcel is going to deliver his segmentation algorithm software to them to compare results. <br />
<br />
4 - Robotic Prostate Interventions - (David Gobbi) Working on transrectal biopsy module for Slicer. They had a previous module for transcranial biopsies. One of the most exciting developments was a new prototol "open IGT-Link" which will replace navitrack inside Slicer. Image transfer is working over this protocol. A simulator is being developed for the robot. A few VTK bugs may have been discovered during this process, but it isn't on the top priority list right now. <br />
<br />
5 - Prostate Cancer - Wrote new ITK filter that has been submitted to the Sandbox. They are looking at spherical wavelets for shape segmentation. The wiki page will be updated soon.<br />
<br />
=== Other NA-MIC Projects ===<br />
<br />
<br />
1 - Groupwise Registration - (Casey) New Bspline registration method is being developed here. It has been used for another project by Casey (#6). Page needs to be updated. <br />
<br />
2 - (Need to be invited to follow-up TCon)<br />
<br />
3 - (Need to be invited to follow-up TCon)) <br />
<br />
4 - (Need to be invited to follow-up TCon). Page needs to be updated<br />
<br />
5 - Incorporating DTI tools into NAMIC toolkit - They are gathering a dataset that has both structural and DTI data in agreement. Previous dataset was missing part of cortex. UNCDB2 dataset has full coverage of the brain. Resolution is a bit lower, but full coverage is an advantage. Page is close to up to data. Just submitted a paper to ISBI 2008 and working on MICCAI paper, as well. <br />
<br />
* NITRIC is g-forge and would be a good place for automated build process for Slicer modules. This could make it easier to configure Slicer in client labs without need to build from source. This is still being developed by the NA-MIC core team. There is an entry on the collaboration section of the NA-MIC website. Also www.slicer.org/Documentation link. <br />
<br />
6 - (Casey) Worked with Serdar using groupwise registration tool. They are currently evaluating results of this study. More images will be added. <br />
<br />
7 - (John Melanakos) Spent last week working with collaborators on the MICCAI paper. Project page is well filled. <br />
<br />
8 - (Need to be invited to follow-up TCon)<br />
<br />
9 - (Need to be invited to follow-up TCon)<br />
<br />
10 - MRML scenes for execution model. Some of the issues Brad was having have been resolved. Alex is making adjustments to MRML library as needed for the EM segmentation model. <br />
<br />
11 - (Curt) Unstructured Grids in Slicer - Finite Element modeling process was originally in a standalone VTK application. The first Slicer module integration did not use MRML based storage. We are now creating subclasses of Model and Unstructured grid data for storage and display in Slicer. Some minor issues need to be worked out, but the MRML extensions for UnstructuredGrid datatypes are working. <br />
<br />
12 - Python (Luca) MatPlotLib plots are close to happening within Slicer. Steve believes it is 80% complete. Python command line modules are working now. Multiple arguments had to be worked by Luca. He has developed Python-based CLI modules. The event broker is discussed here because it affects the interaction with Python, because a Mutex lock has to be placed on the MRML scene. Dan has been helping with metamodules - a single Python module which calls other mothers (hierarchical execution, recipes, etc.). <br />
<br />
* Ron asked about using this scripting technique for the ModelMaker. Some of the parameter setting, etc. could be set in the top module. Nicole will look at this. Kilian said that he wanted to call the "modelmaker" from another module. <br />
<br />
* A need was identified for new wiki pages: (1) scripted modules, (2) metamodules, (2) python scripted modules<br />
<br />
13 - (Luca) Transform hardening - Sometimes images are not XYZ alligned. How will command line modules treat an object if it is the child of a transform. The module needs to be able to apply xforms to data (after hierarchy is flattened) to get xformed data. Jim and Steve talked through this lately becomes of the transforms access two-directions (from parents / to parents, etc.) They are looking at how to change the model. <br />
<br />
14 - (Steve) MRML support for out-of-core processing - Steve put a link to a new page. Dan, Jim, Wendy, Steve, etc. working through NAC renewal grant (5 years). Multiresolution and asynchronous data are likely targets for this effort, but it will be a long-term effort. <br />
<br />
15 - Event Broker discussion - Steve has made process on this, but this wiki page is older. See the event broker page. (look at link under Objective). New term "observation" : completely introspectable. A full dependency between objects is implemented. When a subject issues a "modified" event, Delete events are maintained. Complete "relationship" management of the interaction between objects. This helps by allowing asynchronous event processing. MRML has been converted to use the event broker with asynchronous events managed by the Slicer GUI (async events invoked after GUI events are done). This hasn't broken anything so far, but should improve scalability. Dot logfile format can be generated for inter-object dependencies. This can be used to help provide "who called who" traces. Some special magic is done in MRML Display nodes. They set "observation nodes"<br />
<br />
=== Next Week ===<br />
Continue through project review. Request missing project members to attend. Review wiki pages.<br />
<br />
==2008-01-31==<br />
Attendees: Jim, Steve, Stephen, Wendy, Xiaodong, Nicole, Katie, Ron<br />
* Project week follow-up<br />
** Half of tcon on Feb 7<br />
** Half of tcon on Feb 14<br />
* Registration<br />
** Viola-Wells optimizations need to be enabled<br />
** Stephen needs to check-in and publish recent changes<br />
** Stephen needs to update the wiki<br />
** Luis continues to make optimizations (main focus is memory reduction)<br />
* BatchMake<br />
** Grid Wizard - meeting on Monday<br />
** Integration with Slicer delivered via getbuildtest2<br />
* New webpages<br />
** http://slicer.org<br />
** Uses wiki-to-web<br />
** Feel free to edit/improve<br />
* Slicer-specific wiki<br />
** Migrating appropriate info from Na-mic to slicer<br />
** Hold off on adding to Slicer-wiki until notified<br />
*** Continue using Na-mic wiki<br />
* New Nitrc project<br />
** Jim Miller is leading<br />
** "Slicer3 plug-in examples" project<br />
** http://nitrc.org - search for slicer3<br />
*** Includes demo/stub for ITK filtering data, etc.<br />
** Collection associated with an ITK course being taught<br />
** Requires CVS version of ITK<br />
** Works with Slicer build and Slicer install<br />
** Steve P is the liaison with NITRC<br />
* Slicer tutorial at UNC, April 14th<br />
** Working with UNC's BRIC (http://www.bric.unc.edu)<br />
** Sonja, Randy, Martin, Stephen<br />
* User-level Slicer training - Feb 20 at BWH<br />
** 1249 Boyleston<br />
** Release version of Slicer3 <br />
<br />
==2008-01-24==<br />
Attendees: Jim, Steve, Wendy, Xiaodong, Nicole, Katie, Alex, Luis, Ron, Will<br />
* Project week follow-up (Next week?)<br />
** Will will send email invitations for first half of projects for next week's tcon<br />
* Loadable modules<br />
** Alex and Terry are rearranging Slicer3.cxx to support loadable modules<br />
** Separate branch for built-in module discovery process<br />
** Sebastien is working on build issues for modules whose code is outside Slicer3<br />
* GenerateCLP - Thanks Hans for changes to support building modules<br />
** Hans is running a class this semester where the students will build Slicer CLI modules.<br />
** Jim is working on an ExampleModule for people to use as a template for building modules outside of Slicer3. Perhaps NITRC.<br />
* XML library<br />
** What to do with libaries that are too big to include in the source directory?<br />
* AHM 2009, Jan 5-9, 2009<br />
* Summer Project Week, Jun 23-27, 2008<br />
* New server architecture for wiki, svn, publication database<br />
<br />
==2008-01-17==<br />
Attendees: Jim, Katie, Sebastien, Stephen, Luis, Steve, Wendy, Will<br />
<br />
* Luis and Bill Hoffman are making progress in making ITK installation relocatable. This is needed to finish the work on building plugins from an installation.<br />
* What's in VTK 5.2?<br />
** Infovis - Tables, Graphs, Views, IO<br />
** Refinements to WWidgets. Client/Server connections within the widgets. Event translation. New widgets (text, caption, affine, checkerboard, rectilinear wipe, annotation, key frame, contour, measurement, point/placer, plot)<br />
** Build now? Or wait until 5.2 released?<br />
** Repository freeze in March<br />
** Release on April 1, 2008<br />
* ITK release<br />
** Patches to ITK 3.4<br />
*** Nine component/six component tensor conversion in IO has been patched to ITK 3.4<br />
** 1/19-2/1 moving contributions on Insight Journal for ITK 3.6<br />
** Move items from Review directory to main tree (QuadMesh, TransformIO) for ITK 3.6<br />
** Freeze repository 2/29 for ITK 3.6<br />
** Slicer3 will need to build against the Review directory.<br />
* CMake release<br />
** Version 2.6 on the horizon - release candidate in 3 weeks.<br />
* Tcl/Tk 8.5<br />
** Sebastien has a Windows build<br />
** Steve will try it out<br />
** Wait to switch to 8.5 until we have a good reason<br />
* Loadable modules<br />
** Sebastien - working on CMake issues on building modules as loadable modules<br />
** Terry - working on loading modules and reworking Slicer3.cxx<br />
* [[Slicer3:EventBroker | Event Broker]]<br />
* DWI DICOM as part of the Load Volume. Xiaodong is working on it.<br />
* ITKFactories directory in build and installs to hold ImageIO plugin libraries. Should increase the speed of executable plugins on the Mac.<br />
* OpenIGTLink<br />
** Protocol on the wiki (message format)<br />
** Put code in Sandbox, SourceForge, NITRC, Google Code???<br />
* Will schedule a time to go over the Project Week results<br />
<br />
==2008-01-10==<br />
No tcon due to AHM<br />
<br />
==2008-01-03==<br />
* Attendees: Jim, Steve, Will, Brad Davis<br />
* Topics:<br />
** Jim and Will talked about leading the Monday and Friday sessions, and who would do what.<br />
** We are going to send out reminders to the project leads to ensure that their project descriptions are up to date<br />
** We discussed the software process project to make sure that we have a chance to address the Slicer build process, dashboards, etc.<br />
** We decided not to hold the project wrap-up presentation at AHM; we will do that later at subsequent TCons. (We decided that we needed the time to actually work. We are concerned that we are starting to see too many break-outs and not enough time to work.)<br />
** We keenly missed Tina and hope that she and her family are doing well.</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=21229Slicer3:EM2008-01-11T16:34:59Z<p>Davisb: /* Future Work */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Major categories:<br />
<br />
*Bug fixing<br />
*Ease of use<br />
**User support<br />
**Tutorials/Help/Documentation<br />
**Template Library<br />
*Improved functionality<br />
**GUI changes<br />
**Algorithmic & preprocessing improvements<br />
<br />
====Brad====<br />
*Major bug fixes (Brad)<br />
*User support bug fixes & clarifications (Brad)<br />
*Choose to do or redo or not do preprocessing<br />
*Move EMSegment under segmentation<br />
*Make Kilian happy with registration<br />
**affine atlas registration (most important) <br />
**maxwell demons registration (symmetric)<br />
**improved memory and speed for bsplines<br />
*Name associated with input channel<br />
**make gui/logic changes <br />
*Name associated with structures<br />
**gui / logic changes<br />
*Input channel smoothing filter <br />
*Propogate parameters inherit from siblings or parent<br />
*Class overview with tree (Brad ask Sebastien)<br />
*Generate surface models (auto generate after run, Brad)<br />
*Wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
<br />
====Kilian & Others====<br />
*Core functionality and algorithm fixes (Kilian)]<br />
*Template library (Katarina, Sonja)<br />
**current WM/GM/CSF<br />
**Kilian's TMI atlas paper~12: ask Ron (Martha's data)<br />
**Hand<br />
**Cells<br />
**skull stripping (Katarina)<br />
**link to list on wiki page<br />
*Step-by-step tutorial (Sonja)<br />
*Name associated with structures<br />
**establish naming and colormap conventions<br />
*Change log-normal to normal<br />
*Automatic sampling for intensity distros<br />
**load in sample map<br />
*Intensity distribution widget<br />
*Volume computation<br />
*Help text (Sonja, Kilian)<br />
**Registration parameters, etc<br />
**assign target image (order of images is important)<br />
**papers to read<br />
<br />
====Other/All====<br />
*Merge EMSegment w/ UNC pipeline<br />
*User support (first line of defense, Brad, Kilian)<br />
*Immediate visual feedback (postdoc from Isreal)<br />
**when adjusting intensity distrubtions<br />
**when change weights---impact on segmentation<br />
*Rules for wizard transitions---for user support, etc.<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
*Run the executable to see the documentation<br />
$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
*Run the segmentation algorithm on your data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
*Run the segmentation algorithm using an atlas that is aligned to your image data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
<br />
Note that the order of the target and atlas volumes is important---use the order above for the tutorial dataset. Use an order that matches the mrml parameters file if you design a different parameter set.<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=21228Slicer3:EM2008-01-11T16:33:54Z<p>Davisb: /* Future Work */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Major categories:<br />
*Bug fixing<br />
*User support<br />
*Tutorials/Help/Documentation<br />
*Template Library<br />
*GUI changes<br />
*Algorithmic & preprocessing modifications<br />
<br />
====Brad====<br />
*Major bug fixes (Brad)<br />
*User support bug fixes & clarifications (Brad)<br />
*Choose to do or redo or not do preprocessing<br />
*Move EMSegment under segmentation<br />
*Make Kilian happy with registration<br />
**affine atlas registration (most important) <br />
**maxwell demons registration (symmetric)<br />
**improved memory and speed for bsplines<br />
*Name associated with input channel<br />
**make gui/logic changes <br />
*Name associated with structures<br />
**gui / logic changes<br />
*Input channel smoothing filter <br />
*Propogate parameters inherit from siblings or parent<br />
*Class overview with tree (Brad ask Sebastien)<br />
*Generate surface models (auto generate after run, Brad)<br />
*Wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
<br />
====Kilian & Others====<br />
*Core functionality and algorithm fixes (Kilian)]<br />
*Template library (Katarina, Sonja)<br />
**current WM/GM/CSF<br />
**Kilian's TMI atlas paper~12: ask Ron (Martha's data)<br />
**Hand<br />
**Cells<br />
**skull stripping (Katarina)<br />
**link to list on wiki page<br />
*Step-by-step tutorial (Sonja)<br />
*Name associated with structures<br />
**establish naming and colormap conventions<br />
*Change log-normal to normal<br />
*Automatic sampling for intensity distros<br />
**load in sample map<br />
*Intensity distribution widget<br />
*Volume computation<br />
*Help text (Sonja, Kilian)<br />
**Registration parameters, etc<br />
**assign target image (order of images is important)<br />
**papers to read<br />
<br />
====Other/All====<br />
*Merge EMSegment w/ UNC pipeline<br />
*User support (first line of defense, Brad, Kilian)<br />
*Immediate visual feedback (postdoc from Isreal)<br />
**when adjusting intensity distrubtions<br />
**when change weights---impact on segmentation<br />
*Rules for wizard transitions---for user support, etc.<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
*Run the executable to see the documentation<br />
$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
*Run the segmentation algorithm on your data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
*Run the segmentation algorithm using an atlas that is aligned to your image data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
<br />
Note that the order of the target and atlas volumes is important---use the order above for the tutorial dataset. Use an order that matches the mrml parameters file if you design a different parameter set.<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=21225Slicer3:EM2008-01-11T16:31:43Z<p>Davisb: /* Other/All */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
====Brad====<br />
*Major bug fixes (Brad)<br />
*User support bug fixes & clarifications (Brad)<br />
*Choose to do or redo or not do preprocessing<br />
*Move EMSegment under segmentation<br />
*Make Kilian happy with registration<br />
**affine atlas registration (most important) <br />
**maxwell demons registration (symmetric)<br />
**improved memory and speed for bsplines<br />
*Name associated with input channel<br />
**make gui/logic changes <br />
*Name associated with structures<br />
**gui / logic changes<br />
*Input channel smoothing filter <br />
*Propogate parameters inherit from siblings or parent<br />
*Class overview with tree (Brad ask Sebastien)<br />
*Generate surface models (auto generate after run, Brad)<br />
*Wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
<br />
====Kilian & Others====<br />
*Core functionality and algorithm fixes (Kilian)]<br />
*Template library (Katarina, Sonja)<br />
**current WM/GM/CSF<br />
**Kilian's TMI atlas paper~12: ask Ron (Martha's data)<br />
**Hand<br />
**Cells<br />
**skull stripping (Katarina)<br />
**link to list on wiki page<br />
*Step-by-step tutorial (Sonja)<br />
*Name associated with structures<br />
**establish naming and colormap conventions<br />
*Change log-normal to normal<br />
*Automatic sampling for intensity distros<br />
**load in sample map<br />
*Intensity distribution widget<br />
*Volume computation<br />
*Help text (Sonja, Kilian)<br />
**Registration parameters, etc<br />
**assign target image (order of images is important)<br />
**papers to read<br />
<br />
====Other/All====<br />
*Merge EMSegment w/ UNC pipeline<br />
*User support (first line of defense, Brad, Kilian)<br />
*Immediate visual feedback (postdoc from Isreal)<br />
**when adjusting intensity distrubtions<br />
**when change weights---impact on segmentation<br />
*Rules for wizard transitions---for user support, etc.<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
*Run the executable to see the documentation<br />
$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
*Run the segmentation algorithm on your data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
*Run the segmentation algorithm using an atlas that is aligned to your image data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
<br />
Note that the order of the target and atlas volumes is important---use the order above for the tutorial dataset. Use an order that matches the mrml parameters file if you design a different parameter set.<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=21224Slicer3:EM2008-01-11T16:31:21Z<p>Davisb: /* Kilian & Others */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
====Brad====<br />
*Major bug fixes (Brad)<br />
*User support bug fixes & clarifications (Brad)<br />
*Choose to do or redo or not do preprocessing<br />
*Move EMSegment under segmentation<br />
*Make Kilian happy with registration<br />
**affine atlas registration (most important) <br />
**maxwell demons registration (symmetric)<br />
**improved memory and speed for bsplines<br />
*Name associated with input channel<br />
**make gui/logic changes <br />
*Name associated with structures<br />
**gui / logic changes<br />
*Input channel smoothing filter <br />
*Propogate parameters inherit from siblings or parent<br />
*Class overview with tree (Brad ask Sebastien)<br />
*Generate surface models (auto generate after run, Brad)<br />
*Wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
<br />
====Kilian & Others====<br />
*Core functionality and algorithm fixes (Kilian)]<br />
*Template library (Katarina, Sonja)<br />
**current WM/GM/CSF<br />
**Kilian's TMI atlas paper~12: ask Ron (Martha's data)<br />
**Hand<br />
**Cells<br />
**skull stripping (Katarina)<br />
**link to list on wiki page<br />
*Step-by-step tutorial (Sonja)<br />
*Name associated with structures<br />
**establish naming and colormap conventions<br />
*Change log-normal to normal<br />
*Automatic sampling for intensity distros<br />
**load in sample map<br />
*Intensity distribution widget<br />
*Volume computation<br />
*Help text (Sonja, Kilian)<br />
**Registration parameters, etc<br />
**assign target image (order of images is important)<br />
**papers to read<br />
<br />
====Other/All====<br />
Merge EMSegment w/ UNC pipeline<br />
User support (first line of defense, Brad, Kilian)<br />
Immediate visual feedback (postdoc from Isreal)<br />
*when adjusting intensity distrubtions<br />
*when change weights---impact on segmentation<br />
Rules for wizard transitions---for user support, etc.<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
*Run the executable to see the documentation<br />
$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
*Run the segmentation algorithm on your data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
*Run the segmentation algorithm using an atlas that is aligned to your image data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
<br />
Note that the order of the target and atlas volumes is important---use the order above for the tutorial dataset. Use an order that matches the mrml parameters file if you design a different parameter set.<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=21223Slicer3:EM2008-01-11T16:30:42Z<p>Davisb: /* Brad */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
====Brad====<br />
*Major bug fixes (Brad)<br />
*User support bug fixes & clarifications (Brad)<br />
*Choose to do or redo or not do preprocessing<br />
*Move EMSegment under segmentation<br />
*Make Kilian happy with registration<br />
**affine atlas registration (most important) <br />
**maxwell demons registration (symmetric)<br />
**improved memory and speed for bsplines<br />
*Name associated with input channel<br />
**make gui/logic changes <br />
*Name associated with structures<br />
**gui / logic changes<br />
*Input channel smoothing filter <br />
*Propogate parameters inherit from siblings or parent<br />
*Class overview with tree (Brad ask Sebastien)<br />
*Generate surface models (auto generate after run, Brad)<br />
*Wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
<br />
====Kilian & Others====<br />
Core functionality and algorithm fixes (Kilian)]<br />
Template library (Katarina, Sonja)<br />
*current WM/GM/CSF<br />
*Kilian's TMI atlas paper~12: ask Ron (Martha's data)<br />
*Hand<br />
*Cells<br />
*skull stripping (Katarina)<br />
*link to list on wiki page<br />
Step-by-step tutorial (Sonja)<br />
Name associated with structures<br />
*establish naming and colormap conventions<br />
Change log-normal to normal<br />
Automatic sampling for intensity distros<br />
*load in sample map<br />
Intensity distribution widget<br />
Volume computation<br />
Help text (Sonja, Kilian)<br />
*Registration parameters, etc<br />
*assign target image (order of images is important)<br />
*papers to read<br />
<br />
====Other/All====<br />
Merge EMSegment w/ UNC pipeline<br />
User support (first line of defense, Brad, Kilian)<br />
Immediate visual feedback (postdoc from Isreal)<br />
*when adjusting intensity distrubtions<br />
*when change weights---impact on segmentation<br />
Rules for wizard transitions---for user support, etc.<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
*Run the executable to see the documentation<br />
$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
*Run the segmentation algorithm on your data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
*Run the segmentation algorithm using an atlas that is aligned to your image data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
<br />
Note that the order of the target and atlas volumes is important---use the order above for the tutorial dataset. Use an order that matches the mrml parameters file if you design a different parameter set.<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=21222Slicer3:EM2008-01-11T16:30:04Z<p>Davisb: /* Future Work */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
====Brad====<br />
Major bug fixes (Brad)<br />
User support bug fixes & clarifications (Brad)<br />
Choose to do or redo or not do preprocessing<br />
Move EMSegment under segmentation<br />
Make Kilian happy with registration<br />
*affine atlas registration (most important) <br />
*maxwell demons registration (symmetric)<br />
*improved memory and speed for bsplines<br />
Name associated with input channel<br />
*make gui/logic changes <br />
Name associated with structures<br />
*gui / logic changes<br />
Input channel smoothing filter <br />
Propogate parameters inherit from siblings or parent<br />
Class overview with tree (Brad ask Sebastien)<br />
Generate surface models (auto generate after run, Brad)<br />
Wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
<br />
====Kilian & Others====<br />
Core functionality and algorithm fixes (Kilian)]<br />
Template library (Katarina, Sonja)<br />
*current WM/GM/CSF<br />
*Kilian's TMI atlas paper~12: ask Ron (Martha's data)<br />
*Hand<br />
*Cells<br />
*skull stripping (Katarina)<br />
*link to list on wiki page<br />
Step-by-step tutorial (Sonja)<br />
Name associated with structures<br />
*establish naming and colormap conventions<br />
Change log-normal to normal<br />
Automatic sampling for intensity distros<br />
*load in sample map<br />
Intensity distribution widget<br />
Volume computation<br />
Help text (Sonja, Kilian)<br />
*Registration parameters, etc<br />
*assign target image (order of images is important)<br />
*papers to read<br />
<br />
====Other/All====<br />
Merge EMSegment w/ UNC pipeline<br />
User support (first line of defense, Brad, Kilian)<br />
Immediate visual feedback (postdoc from Isreal)<br />
*when adjusting intensity distrubtions<br />
*when change weights---impact on segmentation<br />
Rules for wizard transitions---for user support, etc.<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
*Run the executable to see the documentation<br />
$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
*Run the segmentation algorithm on your data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
*Run the segmentation algorithm using an atlas that is aligned to your image data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
<br />
Note that the order of the target and atlas volumes is important---use the order above for the tutorial dataset. Use an order that matches the mrml parameters file if you design a different parameter set.<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=21221Slicer3:EM2008-01-11T16:29:25Z<p>Davisb: /* Future Work */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
====Brad====<br />
Major bug fixes (Brad)<br />
User support bug fixes / clarifications (Brad)<br />
Choose to do/redo preprocessing<br />
Move EMSegment under segmentation<br />
Make Kilian happy with registration<br />
*affine atlas registration (most important) <br />
*maxwell demons registration (symmetric)<br />
*improved memory and speed for bsplines<br />
Name associated with input channel<br />
*make gui/logic changes <br />
Name associated with structures<br />
*gui / logic changes<br />
Input channel smoothing filter <br />
Propogate parameters inherit from siblings or parent<br />
Class overview with tree (Brad ask Sebastien)<br />
Generate surface models (auto generate after run, Brad)<br />
Wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
<br />
====Kilian & Others====<br />
Core functionality and algorithm fixes (Kilian)]<br />
Template library (Katarina, Sonja)<br />
*current WM/GM/CSF<br />
*Kilian's TMI atlas paper~12: ask Ron (Martha's data)<br />
*Hand<br />
*Cells<br />
*skull stripping (Katarina)<br />
*link to list on wiki page<br />
Step-by-step tutorial (Sonja)<br />
Name associated with structures<br />
*establish naming and colormap conventions<br />
Change log-normal to normal<br />
Automatic sampling for intensity distros<br />
*load in sample map<br />
Intensity distribution widget<br />
Volume computation<br />
Help text (Sonja, Kilian)<br />
*Registration parameters, etc<br />
*assign target image (order of images is important)<br />
*papers to read<br />
<br />
====Other/All====<br />
Merge EMSegment w/ UNC pipeline<br />
User support (first line of defense, Brad, Kilian)<br />
Immediate visual feedback (postdoc from Isreal)<br />
*when adjusting intensity distrubtions<br />
*when change weights---impact on segmentation<br />
Rules for wizard transitions---for user support, etc.<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
*Run the executable to see the documentation<br />
$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
*Run the segmentation algorithm on your data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
*Run the segmentation algorithm using an atlas that is aligned to your image data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
<br />
Note that the order of the target and atlas volumes is important---use the order above for the tutorial dataset. Use an order that matches the mrml parameters file if you design a different parameter set.<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=21220Slicer3:EM2008-01-11T16:28:40Z<p>Davisb: /* Future Work */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Brad<br />
===================================================<br />
Major bug fixes (Brad)<br />
User support bug fixes / clarifications (Brad)<br />
Choose to do/redo preprocessing<br />
Move EMSegment under segmentation<br />
Make Kilian happy with registration<br />
*affine atlas registration (most important) <br />
*maxwell demons registration (symmetric)<br />
*improved memory and speed for bsplines<br />
Name associated with input channel<br />
*make gui/logic changes <br />
Name associated with structures<br />
*gui / logic changes<br />
Input channel smoothing filter <br />
Propogate parameters inherit from siblings or parent<br />
Class overview with tree (Brad ask Sebastien)<br />
Generate surface models (auto generate after run, Brad)<br />
Wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
<br />
Kilian & Others<br />
===================================================<br />
Core functionality and algorithm fixes (Kilian)]<br />
Template library (Katarina, Sonja)<br />
*current WM/GM/CSF<br />
*Kilian's TMI atlas paper~12: ask Ron (Martha's data)<br />
*Hand<br />
*Cells<br />
*skull stripping (Katarina)<br />
*link to list on wiki page<br />
Step-by-step tutorial (Sonja)<br />
Name associated with structures<br />
*establish naming and colormap conventions<br />
Change log-normal to normal<br />
Automatic sampling for intensity distros<br />
*load in sample map<br />
Intensity distribution widget<br />
Volume computation<br />
Help text (Sonja, Kilian)<br />
*Registration parameters, etc<br />
*assign target image (order of images is important)<br />
*papers to read<br />
<br />
Other/All<br />
==================================================<br />
Merge EMSegment w/ UNC pipeline<br />
User support (first line of defense, Brad, Kilian)<br />
Immediate visual feedback (postdoc from Isreal)<br />
*when adjusting intensity distrubtions<br />
*when change weights---impact on segmentation<br />
Rules for wizard transitions---for user support, etc.<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
*Run the executable to see the documentation<br />
$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
*Run the segmentation algorithm on your data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
*Run the segmentation algorithm using an atlas that is aligned to your image data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
<br />
Note that the order of the target and atlas volumes is important---use the order above for the tutorial dataset. Use an order that matches the mrml parameters file if you design a different parameter set.<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=20872Slicer3:EM2008-01-08T18:48:28Z<p>Davisb: /* What Can Go Wrong? */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Prioritized future work for EMSegment Module:<br />
<br />
Documentation & Outreach:<br />
*(+1) template library---parameters sets that others can use (Kilian)<br />
**distribution of information/data/templates<br />
**link to wiki/web page for data/templates<br />
*(-1) expand user tutorial (later)<br />
<br />
New Features:<br />
*(+1) class overview widget (Brad)<br />
*(+1) intensity distribution widget (Brad)<br />
*(+1) change log-normal to normal (Slicer community)<br />
*(+1) generate surface models (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*( 0) controlled vocabulary<br />
**color---label from controlled set---need specification & use cases<br />
*( 0) rules for wizard transitions<br />
*( 0) volume computation<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*(-1) tissue labels carry through to other Slicer3 modules<br />
*(-1) PCA interface<br />
*(-1) CIM interface<br />
<br />
Updates to current code:<br />
<br />
Usability:<br />
*(+1) rename buttons with more intuitive names: (Kilian & Brad)<br />
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
*(+1) progress bar (threading?) (Brad)<br />
<br />
Engineering:<br />
*( 0) expand updating based on MRML events<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
*Run the executable to see the documentation<br />
$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
*Run the segmentation algorithm on your data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
*Run the segmentation algorithm using an atlas that is aligned to your image data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
<br />
Note that the order of the target and atlas volumes is important---use the order above for the tutorial dataset. Use an order that matches the mrml parameters file if you design a different parameter set.<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=20871Slicer3:EM2008-01-08T18:48:00Z<p>Davisb: /* Example */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Prioritized future work for EMSegment Module:<br />
<br />
Documentation & Outreach:<br />
*(+1) template library---parameters sets that others can use (Kilian)<br />
**distribution of information/data/templates<br />
**link to wiki/web page for data/templates<br />
*(-1) expand user tutorial (later)<br />
<br />
New Features:<br />
*(+1) class overview widget (Brad)<br />
*(+1) intensity distribution widget (Brad)<br />
*(+1) change log-normal to normal (Slicer community)<br />
*(+1) generate surface models (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*( 0) controlled vocabulary<br />
**color---label from controlled set---need specification & use cases<br />
*( 0) rules for wizard transitions<br />
*( 0) volume computation<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*(-1) tissue labels carry through to other Slicer3 modules<br />
*(-1) PCA interface<br />
*(-1) CIM interface<br />
<br />
Updates to current code:<br />
<br />
Usability:<br />
*(+1) rename buttons with more intuitive names: (Kilian & Brad)<br />
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
*(+1) progress bar (threading?) (Brad)<br />
<br />
Engineering:<br />
*( 0) expand updating based on MRML events<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
*Run the executable to see the documentation<br />
$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
*Run the segmentation algorithm on your data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
*Run the segmentation algorithm using an atlas that is aligned to your image data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
<br />
Note that the order of the target and atlas volumes is important---use the order above for the tutorial dataset. Use an order that matches the mrml parameters file if you design a different parameter set.<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
*Are the images aligned?<br />
**The target images must be aligned with the atlas. You should visually check that your target image is aligned with $EMSegmentTutorial/Data/VolumeData/atlas_t1.mhd.<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=20870Slicer3:EM2008-01-08T18:47:16Z<p>Davisb: /* Example */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Prioritized future work for EMSegment Module:<br />
<br />
Documentation & Outreach:<br />
*(+1) template library---parameters sets that others can use (Kilian)<br />
**distribution of information/data/templates<br />
**link to wiki/web page for data/templates<br />
*(-1) expand user tutorial (later)<br />
<br />
New Features:<br />
*(+1) class overview widget (Brad)<br />
*(+1) intensity distribution widget (Brad)<br />
*(+1) change log-normal to normal (Slicer community)<br />
*(+1) generate surface models (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*( 0) controlled vocabulary<br />
**color---label from controlled set---need specification & use cases<br />
*( 0) rules for wizard transitions<br />
*( 0) volume computation<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*(-1) tissue labels carry through to other Slicer3 modules<br />
*(-1) PCA interface<br />
*(-1) CIM interface<br />
<br />
Updates to current code:<br />
<br />
Usability:<br />
*(+1) rename buttons with more intuitive names: (Kilian & Brad)<br />
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
*(+1) progress bar (threading?) (Brad)<br />
<br />
Engineering:<br />
*( 0) expand updating based on MRML events<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
#Run the executable to see the documentation<br />
$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
#Run the segmentation algorithm on your data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
#Run the segmentation algorithm using an atlas that is aligned to your image data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
##Note that the order of the atlas volumes is important---use the order above for the tutorial dataset<br />
###use an order that matches the mrml parameters file if you design a different parameter set<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
*Are the images aligned?<br />
**The target images must be aligned with the atlas. You should visually check that your target image is aligned with $EMSegmentTutorial/Data/VolumeData/atlas_t1.mhd.<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=20869Slicer3:EM2008-01-08T18:46:58Z<p>Davisb: /* Example */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Prioritized future work for EMSegment Module:<br />
<br />
Documentation & Outreach:<br />
*(+1) template library---parameters sets that others can use (Kilian)<br />
**distribution of information/data/templates<br />
**link to wiki/web page for data/templates<br />
*(-1) expand user tutorial (later)<br />
<br />
New Features:<br />
*(+1) class overview widget (Brad)<br />
*(+1) intensity distribution widget (Brad)<br />
*(+1) change log-normal to normal (Slicer community)<br />
*(+1) generate surface models (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*( 0) controlled vocabulary<br />
**color---label from controlled set---need specification & use cases<br />
*( 0) rules for wizard transitions<br />
*( 0) volume computation<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*(-1) tissue labels carry through to other Slicer3 modules<br />
*(-1) PCA interface<br />
*(-1) CIM interface<br />
<br />
Updates to current code:<br />
<br />
Usability:<br />
*(+1) rename buttons with more intuitive names: (Kilian & Brad)<br />
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
*(+1) progress bar (threading?) (Brad)<br />
<br />
Engineering:<br />
*( 0) expand updating based on MRML events<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
#Run the executable to see the documentation<br />
$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
#Run the segmentation algorithm on your data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
<br />
#Run the segmentation algorithm using an atlas that is aligned to your image data<br />
$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
##Note that the order of the atlas volumes is important---use the order above for the tutorial dataset<br />
###use an order that matches the mrml parameters file if you design a different parameter set<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
*Are the images aligned?<br />
**The target images must be aligned with the atlas. You should visually check that your target image is aligned with $EMSegmentTutorial/Data/VolumeData/atlas_t1.mhd.<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=20868Slicer3:EM2008-01-08T18:46:20Z<p>Davisb: /* Example */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Prioritized future work for EMSegment Module:<br />
<br />
Documentation & Outreach:<br />
*(+1) template library---parameters sets that others can use (Kilian)<br />
**distribution of information/data/templates<br />
**link to wiki/web page for data/templates<br />
*(-1) expand user tutorial (later)<br />
<br />
New Features:<br />
*(+1) class overview widget (Brad)<br />
*(+1) intensity distribution widget (Brad)<br />
*(+1) change log-normal to normal (Slicer community)<br />
*(+1) generate surface models (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*( 0) controlled vocabulary<br />
**color---label from controlled set---need specification & use cases<br />
*( 0) rules for wizard transitions<br />
*( 0) volume computation<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*(-1) tissue labels carry through to other Slicer3 modules<br />
*(-1) PCA interface<br />
*(-1) CIM interface<br />
<br />
Updates to current code:<br />
<br />
Usability:<br />
*(+1) rename buttons with more intuitive names: (Kilian & Brad)<br />
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
*(+1) progress bar (threading?) (Brad)<br />
<br />
Engineering:<br />
*( 0) expand updating based on MRML events<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
The EMSegment tutorial data set demonstrates the use of the use of the command line interface. You can download it below. Here are some basic examples:<br />
<br />
#Run the executable to see the documentation<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
#Run the segmentation algorithm on your data<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
<br />
#Run the segmentation algorithm using an atlas that is aligned to your image data<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
##Note that the order of the atlas volumes is important---use the order above for the tutorial dataset<br />
###use an order that matches the mrml parameters file if you design a different parameter set<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
*Are the images aligned?<br />
**The target images must be aligned with the atlas. You should visually check that your target image is aligned with $EMSegmentTutorial/Data/VolumeData/atlas_t1.mhd.<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=20867Slicer3:EM2008-01-08T18:43:32Z<p>Davisb: /* Interface */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Prioritized future work for EMSegment Module:<br />
<br />
Documentation & Outreach:<br />
*(+1) template library---parameters sets that others can use (Kilian)<br />
**distribution of information/data/templates<br />
**link to wiki/web page for data/templates<br />
*(-1) expand user tutorial (later)<br />
<br />
New Features:<br />
*(+1) class overview widget (Brad)<br />
*(+1) intensity distribution widget (Brad)<br />
*(+1) change log-normal to normal (Slicer community)<br />
*(+1) generate surface models (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*( 0) controlled vocabulary<br />
**color---label from controlled set---need specification & use cases<br />
*( 0) rules for wizard transitions<br />
*( 0) volume computation<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*(-1) tissue labels carry through to other Slicer3 modules<br />
*(-1) PCA interface<br />
*(-1) CIM interface<br />
<br />
Updates to current code:<br />
<br />
Usability:<br />
*(+1) rename buttons with more intuitive names: (Kilian & Brad)<br />
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
*(+1) progress bar (threading?) (Brad)<br />
<br />
Engineering:<br />
*( 0) expand updating based on MRML events<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; [[Slicer3:EM:CommandLineInterface | here is the current version]].<br />
<br />
==Example==<br />
<br />
In order to demonstrate the EMSgementCommandLine program, we show how to apply it to the EMSegment tutorial data.<br />
<br />
#Download and build Slicer3 (see the Slicer3 homepage).<br />
#The EMSegment command-line executable is built in the Slicer3 build directory<br />
##On Windows, you will find the executable in (depending on the build type: Debug, Release, RelWithDebInfo) $Slicer3-Build/bin/Debug/EMSegmentCommandLine.exe<br />
##On Windows, you will find the executable in $Slicer3-Build/bin/EMSegmentCommandLine <br />
#Download the EMSegment tutorial data (see below). Suppose that the tutorial data is stored in the directory $EMSegmentTutorial.<br />
#Run the executable to see the documentation<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
#Run the segmentation algorithm on the tutorial data using the tutorial parameters<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames $EMSegmentTutorial/Data/VolumeData/target_t1_normed.mhd,$EMSegmentTutorial/Data/VolumeData/target_t2_normed.mhd --verbose<br />
#Run the segmentation algorithm on your data (for now, make sure that your target images are aligned with the atlas data)<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
#Run the segmentation algorithm using an atlas that is aligned to your image data<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
##Note that the order of the atlas volumes is important---use the order above for the tutorial dataset<br />
###use an order that matches the mrml parameters file if you design a different parameter set<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
*Are the images aligned?<br />
**The target images must be aligned with the atlas. You should visually check that your target image is aligned with $EMSegmentTutorial/Data/VolumeData/atlas_t1.mhd.<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=20866Slicer3:EM2008-01-08T18:41:53Z<p>Davisb: /* Status */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*create new 2008 tutorial(Brad, Kilian)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Prioritized future work for EMSegment Module:<br />
<br />
Documentation & Outreach:<br />
*(+1) template library---parameters sets that others can use (Kilian)<br />
**distribution of information/data/templates<br />
**link to wiki/web page for data/templates<br />
*(-1) expand user tutorial (later)<br />
<br />
New Features:<br />
*(+1) class overview widget (Brad)<br />
*(+1) intensity distribution widget (Brad)<br />
*(+1) change log-normal to normal (Slicer community)<br />
*(+1) generate surface models (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*( 0) controlled vocabulary<br />
**color---label from controlled set---need specification & use cases<br />
*( 0) rules for wizard transitions<br />
*( 0) volume computation<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*(-1) tissue labels carry through to other Slicer3 modules<br />
*(-1) PCA interface<br />
*(-1) CIM interface<br />
<br />
Updates to current code:<br />
<br />
Usability:<br />
*(+1) rename buttons with more intuitive names: (Kilian & Brad)<br />
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
*(+1) progress bar (threading?) (Brad)<br />
<br />
Engineering:<br />
*( 0) expand updating based on MRML events<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; here is the current version:<br />
<br />
USAGE: /usr/local/dev/build//Slicer3-Shared-Release/bin/EMSegmentCommandLine<br />
[--processinformationaddress<br />
<std::string>] [--xml] [--echo]<br />
[--generateEmptyMRMLSceneAndQuit<br />
<std::string>] [--dontWriteResults]<br />
[--resultStandardVolumeFileName<br />
<std::string>] [--verbose]<br />
[--disableMultithreading]<br />
[--parametersMRMLNodeName<br />
<std::string>]<br />
[--targetVolumeFileNames<br />
<std::vector<std::string>>] ...<br />
[--resultVolumeFileName<br />
<std::string>] [--mrmlSceneFileName<br />
<std::string>] [--] [--version]<br />
[-h]<br />
<br />
<br />
Where:<br />
<br />
--processinformationaddress <std::string><br />
Address of a structure to store process information (progress, abort,<br />
etc.). (default: 0)<br />
<br />
--xml<br />
Produce xml description of command line arguments (default: 0)<br />
<br />
--echo<br />
Echo the command line arguments (default: 0)<br />
<br />
--generateEmptyMRMLSceneAndQuit <std::string><br />
Used for testing. Only write a scene with default mrml parameters.<br />
<br />
--dontWriteResults<br />
Used for testing. Don't actually write the resulting labelmap to<br />
disk. (default: 0)<br />
<br />
--resultStandardVolumeFileName <std::string><br />
Used for testing. Compare segmentation results to this image and<br />
return EXIT_FAILURE if they do not match.<br />
<br />
--verbose<br />
Enable verbose output. (default: 0)<br />
<br />
--disableMultithreading<br />
Disable multithreading. (default: 0)<br />
<br />
--parametersMRMLNodeName <std::string><br />
The name of the EMSegment parameters node within the active MRML<br />
scene. Leave blank for default.<br />
<br />
--targetVolumeFileNames <std::vector<std::string>> (accepted multiple<br />
times)<br />
File names of target volumes (to be segmented). The number of target<br />
images must be equal to the number of target images specified in the<br />
parameter set, and these images must be spatially aligned.<br />
<br />
--resultVolumeFileName <std::string><br />
The file name that the segmentation result volume will be written to.<br />
<br />
--mrmlSceneFileName <std::string><br />
Active MRML scene that contains EMSegment algorithm parameters.<br />
<br />
--, --ignore_rest<br />
Ignores the rest of the labeled arguments following this flag.<br />
<br />
--version<br />
Displays version information and exits.<br />
<br />
-h, --help<br />
Displays usage information and exits.<br />
<br />
<br />
Description: EMSegment command-line module description and<br />
help.<br />
<br />
Author(s): Brad Davis<br />
<br />
Acknowledgements: Many people and organizations have contributed to the<br />
funding, design, and development of the EMSegment algorithm and its<br />
various implementations.<br />
<br />
==Example==<br />
<br />
In order to demonstrate the EMSgementCommandLine program, we show how to apply it to the EMSegment tutorial data.<br />
<br />
#Download and build Slicer3 (see the Slicer3 homepage).<br />
#The EMSegment command-line executable is built in the Slicer3 build directory<br />
##On Windows, you will find the executable in (depending on the build type: Debug, Release, RelWithDebInfo) $Slicer3-Build/bin/Debug/EMSegmentCommandLine.exe<br />
##On Windows, you will find the executable in $Slicer3-Build/bin/EMSegmentCommandLine <br />
#Download the EMSegment tutorial data (see below). Suppose that the tutorial data is stored in the directory $EMSegmentTutorial.<br />
#Run the executable to see the documentation<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
#Run the segmentation algorithm on the tutorial data using the tutorial parameters<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames $EMSegmentTutorial/Data/VolumeData/target_t1_normed.mhd,$EMSegmentTutorial/Data/VolumeData/target_t2_normed.mhd --verbose<br />
#Run the segmentation algorithm on your data (for now, make sure that your target images are aligned with the atlas data)<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
#Run the segmentation algorithm using an atlas that is aligned to your image data<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
##Note that the order of the atlas volumes is important---use the order above for the tutorial dataset<br />
###use an order that matches the mrml parameters file if you design a different parameter set<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
*Are the images aligned?<br />
**The target images must be aligned with the atlas. You should visually check that your target image is aligned with $EMSegmentTutorial/Data/VolumeData/atlas_t1.mhd.<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=20865Slicer3:EM2008-01-08T18:38:30Z<p>Davisb: /* Status */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. Tutorial sessions were presented at the January 2007 and 2008 NAMIC All-Hand's meetings by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Prioritized future work for EMSegment Module:<br />
<br />
Documentation & Outreach:<br />
*(+1) template library---parameters sets that others can use (Kilian)<br />
**distribution of information/data/templates<br />
**link to wiki/web page for data/templates<br />
*( 0) expand developer documentation (some work critical)<br />
*(-1) expand user tutorial (later)<br />
<br />
New Features:<br />
*(+1) one-click segmentation of new images (Brad)<br />
*(+1) class overview widget (Brad)<br />
*(+1) intensity distribution widget (Brad)<br />
*(+1) atlas-to-image registration (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Bill<br />
*(+1) change log-normal to normal (Slicer community)<br />
*(+1) generate surface models (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*( 0) controlled vocabulary<br />
**color---label from controlled set---need specification & use cases<br />
*( 0) rules for wizard transitions<br />
*( 0) volume computation<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*(-1) tissue labels carry through to other Slicer3 modules<br />
*(-1) PCA interface<br />
*(-1) CIM interface<br />
<br />
Updates to current code:<br />
<br />
Usability:<br />
*(+1) rename buttons with more intuitive names: (Kilian & Brad)<br />
**manual, manually segment, etc.: Edit, Sample Points, Automatic<br />
**when modifying tissue class tree: add "sub-class" instead of "child node"<br />
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
*(+1) undo/redo (Brad)<br />
*(+1) progress bar (threading?) (Brad)<br />
*(+1) small gui tweaks (Kilian & Brad)<br />
<br />
Engineering:<br />
*( 0) expand updating based on MRML events<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; here is the current version:<br />
<br />
USAGE: /usr/local/dev/build//Slicer3-Shared-Release/bin/EMSegmentCommandLine<br />
[--processinformationaddress<br />
<std::string>] [--xml] [--echo]<br />
[--generateEmptyMRMLSceneAndQuit<br />
<std::string>] [--dontWriteResults]<br />
[--resultStandardVolumeFileName<br />
<std::string>] [--verbose]<br />
[--disableMultithreading]<br />
[--parametersMRMLNodeName<br />
<std::string>]<br />
[--targetVolumeFileNames<br />
<std::vector<std::string>>] ...<br />
[--resultVolumeFileName<br />
<std::string>] [--mrmlSceneFileName<br />
<std::string>] [--] [--version]<br />
[-h]<br />
<br />
<br />
Where:<br />
<br />
--processinformationaddress <std::string><br />
Address of a structure to store process information (progress, abort,<br />
etc.). (default: 0)<br />
<br />
--xml<br />
Produce xml description of command line arguments (default: 0)<br />
<br />
--echo<br />
Echo the command line arguments (default: 0)<br />
<br />
--generateEmptyMRMLSceneAndQuit <std::string><br />
Used for testing. Only write a scene with default mrml parameters.<br />
<br />
--dontWriteResults<br />
Used for testing. Don't actually write the resulting labelmap to<br />
disk. (default: 0)<br />
<br />
--resultStandardVolumeFileName <std::string><br />
Used for testing. Compare segmentation results to this image and<br />
return EXIT_FAILURE if they do not match.<br />
<br />
--verbose<br />
Enable verbose output. (default: 0)<br />
<br />
--disableMultithreading<br />
Disable multithreading. (default: 0)<br />
<br />
--parametersMRMLNodeName <std::string><br />
The name of the EMSegment parameters node within the active MRML<br />
scene. Leave blank for default.<br />
<br />
--targetVolumeFileNames <std::vector<std::string>> (accepted multiple<br />
times)<br />
File names of target volumes (to be segmented). The number of target<br />
images must be equal to the number of target images specified in the<br />
parameter set, and these images must be spatially aligned.<br />
<br />
--resultVolumeFileName <std::string><br />
The file name that the segmentation result volume will be written to.<br />
<br />
--mrmlSceneFileName <std::string><br />
Active MRML scene that contains EMSegment algorithm parameters.<br />
<br />
--, --ignore_rest<br />
Ignores the rest of the labeled arguments following this flag.<br />
<br />
--version<br />
Displays version information and exits.<br />
<br />
-h, --help<br />
Displays usage information and exits.<br />
<br />
<br />
Description: EMSegment command-line module description and<br />
help.<br />
<br />
Author(s): Brad Davis<br />
<br />
Acknowledgements: Many people and organizations have contributed to the<br />
funding, design, and development of the EMSegment algorithm and its<br />
various implementations.<br />
<br />
==Example==<br />
<br />
In order to demonstrate the EMSgementCommandLine program, we show how to apply it to the EMSegment tutorial data.<br />
<br />
#Download and build Slicer3 (see the Slicer3 homepage).<br />
#The EMSegment command-line executable is built in the Slicer3 build directory<br />
##On Windows, you will find the executable in (depending on the build type: Debug, Release, RelWithDebInfo) $Slicer3-Build/bin/Debug/EMSegmentCommandLine.exe<br />
##On Windows, you will find the executable in $Slicer3-Build/bin/EMSegmentCommandLine <br />
#Download the EMSegment tutorial data (see below). Suppose that the tutorial data is stored in the directory $EMSegmentTutorial.<br />
#Run the executable to see the documentation<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
#Run the segmentation algorithm on the tutorial data using the tutorial parameters<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames $EMSegmentTutorial/Data/VolumeData/target_t1_normed.mhd,$EMSegmentTutorial/Data/VolumeData/target_t2_normed.mhd --verbose<br />
#Run the segmentation algorithm on your data (for now, make sure that your target images are aligned with the atlas data)<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
#Run the segmentation algorithm using an atlas that is aligned to your image data<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
##Note that the order of the atlas volumes is important---use the order above for the tutorial dataset<br />
###use an order that matches the mrml parameters file if you design a different parameter set<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
*Are the images aligned?<br />
**The target images must be aligned with the atlas. You should visually check that your target image is aligned with $EMSegmentTutorial/Data/VolumeData/atlas_t1.mhd.<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=20864Slicer3:EM2008-01-08T18:37:11Z<p>Davisb: /* Steps in EMSegment Workflow */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/9 Define Parameters Set: Select parameter set or create new parameters<br />
*2/9 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/9 Assign Atlas: Assign atlases for anatomical structures<br />
*4/9 Select Target Images: Choose the set of images that will be segmented<br />
*5/9 Intensity Normalization: Normalize target images<br />
*6/9 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*7/9 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*8/9 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*9/9 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. A tutorial session was presented at the January 2007 NAMIC All-Hands meeting by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
Intensity normalization and image registration steps are under construction.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Prioritized future work for EMSegment Module:<br />
<br />
Documentation & Outreach:<br />
*(+1) template library---parameters sets that others can use (Kilian)<br />
**distribution of information/data/templates<br />
**link to wiki/web page for data/templates<br />
*( 0) expand developer documentation (some work critical)<br />
*(-1) expand user tutorial (later)<br />
<br />
New Features:<br />
*(+1) one-click segmentation of new images (Brad)<br />
*(+1) class overview widget (Brad)<br />
*(+1) intensity distribution widget (Brad)<br />
*(+1) atlas-to-image registration (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Bill<br />
*(+1) change log-normal to normal (Slicer community)<br />
*(+1) generate surface models (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*( 0) controlled vocabulary<br />
**color---label from controlled set---need specification & use cases<br />
*( 0) rules for wizard transitions<br />
*( 0) volume computation<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*(-1) tissue labels carry through to other Slicer3 modules<br />
*(-1) PCA interface<br />
*(-1) CIM interface<br />
<br />
Updates to current code:<br />
<br />
Usability:<br />
*(+1) rename buttons with more intuitive names: (Kilian & Brad)<br />
**manual, manually segment, etc.: Edit, Sample Points, Automatic<br />
**when modifying tissue class tree: add "sub-class" instead of "child node"<br />
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
*(+1) undo/redo (Brad)<br />
*(+1) progress bar (threading?) (Brad)<br />
*(+1) small gui tweaks (Kilian & Brad)<br />
<br />
Engineering:<br />
*( 0) expand updating based on MRML events<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; here is the current version:<br />
<br />
USAGE: /usr/local/dev/build//Slicer3-Shared-Release/bin/EMSegmentCommandLine<br />
[--processinformationaddress<br />
<std::string>] [--xml] [--echo]<br />
[--generateEmptyMRMLSceneAndQuit<br />
<std::string>] [--dontWriteResults]<br />
[--resultStandardVolumeFileName<br />
<std::string>] [--verbose]<br />
[--disableMultithreading]<br />
[--parametersMRMLNodeName<br />
<std::string>]<br />
[--targetVolumeFileNames<br />
<std::vector<std::string>>] ...<br />
[--resultVolumeFileName<br />
<std::string>] [--mrmlSceneFileName<br />
<std::string>] [--] [--version]<br />
[-h]<br />
<br />
<br />
Where:<br />
<br />
--processinformationaddress <std::string><br />
Address of a structure to store process information (progress, abort,<br />
etc.). (default: 0)<br />
<br />
--xml<br />
Produce xml description of command line arguments (default: 0)<br />
<br />
--echo<br />
Echo the command line arguments (default: 0)<br />
<br />
--generateEmptyMRMLSceneAndQuit <std::string><br />
Used for testing. Only write a scene with default mrml parameters.<br />
<br />
--dontWriteResults<br />
Used for testing. Don't actually write the resulting labelmap to<br />
disk. (default: 0)<br />
<br />
--resultStandardVolumeFileName <std::string><br />
Used for testing. Compare segmentation results to this image and<br />
return EXIT_FAILURE if they do not match.<br />
<br />
--verbose<br />
Enable verbose output. (default: 0)<br />
<br />
--disableMultithreading<br />
Disable multithreading. (default: 0)<br />
<br />
--parametersMRMLNodeName <std::string><br />
The name of the EMSegment parameters node within the active MRML<br />
scene. Leave blank for default.<br />
<br />
--targetVolumeFileNames <std::vector<std::string>> (accepted multiple<br />
times)<br />
File names of target volumes (to be segmented). The number of target<br />
images must be equal to the number of target images specified in the<br />
parameter set, and these images must be spatially aligned.<br />
<br />
--resultVolumeFileName <std::string><br />
The file name that the segmentation result volume will be written to.<br />
<br />
--mrmlSceneFileName <std::string><br />
Active MRML scene that contains EMSegment algorithm parameters.<br />
<br />
--, --ignore_rest<br />
Ignores the rest of the labeled arguments following this flag.<br />
<br />
--version<br />
Displays version information and exits.<br />
<br />
-h, --help<br />
Displays usage information and exits.<br />
<br />
<br />
Description: EMSegment command-line module description and<br />
help.<br />
<br />
Author(s): Brad Davis<br />
<br />
Acknowledgements: Many people and organizations have contributed to the<br />
funding, design, and development of the EMSegment algorithm and its<br />
various implementations.<br />
<br />
==Example==<br />
<br />
In order to demonstrate the EMSgementCommandLine program, we show how to apply it to the EMSegment tutorial data.<br />
<br />
#Download and build Slicer3 (see the Slicer3 homepage).<br />
#The EMSegment command-line executable is built in the Slicer3 build directory<br />
##On Windows, you will find the executable in (depending on the build type: Debug, Release, RelWithDebInfo) $Slicer3-Build/bin/Debug/EMSegmentCommandLine.exe<br />
##On Windows, you will find the executable in $Slicer3-Build/bin/EMSegmentCommandLine <br />
#Download the EMSegment tutorial data (see below). Suppose that the tutorial data is stored in the directory $EMSegmentTutorial.<br />
#Run the executable to see the documentation<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
#Run the segmentation algorithm on the tutorial data using the tutorial parameters<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames $EMSegmentTutorial/Data/VolumeData/target_t1_normed.mhd,$EMSegmentTutorial/Data/VolumeData/target_t2_normed.mhd --verbose<br />
#Run the segmentation algorithm on your data (for now, make sure that your target images are aligned with the atlas data)<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
#Run the segmentation algorithm using an atlas that is aligned to your image data<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
##Note that the order of the atlas volumes is important---use the order above for the tutorial dataset<br />
###use an order that matches the mrml parameters file if you design a different parameter set<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
*Are the images aligned?<br />
**The target images must be aligned with the atlas. You should visually check that your target image is aligned with $EMSegmentTutorial/Data/VolumeData/atlas_t1.mhd.<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=20863Slicer3:EM2008-01-08T18:34:56Z<p>Davisb: </p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer3 that integrate 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 sets. Three views or interfaces to the algorithm are available: a wizard-based module for building and editing parameter sets, a simplified "one-click" GUI module, and a command line interface for script and batch processing.<br />
<br />
As of January, 2008, working versions of all EMSegment interfaces are complete and have been checked into the Slicer3 SVN repository. <br />
Recent development effort has focused on providing simplified interfaces to the algorithm, reducing assumptions about input data, testing, and validation.<br />
The module was demonstrated at the NAMIC All-Hands meetings in Salt Lake City (2007 and 2008). A tutorial has been developed and is available from this page. <br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/8 Define Parameters Set: Select parameter set or create new parameters<br />
*2/8 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/8 Assign Atlas: Assign atlases for anatomical structures<br />
*4/8 Select Target Images: Choose the set of images that will be segmented<br />
*5/8 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*6/8 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*7/8 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*8/8 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. A tutorial session was presented at the January 2007 NAMIC All-Hands meeting by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
Intensity normalization and image registration steps are under construction.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Prioritized future work for EMSegment Module:<br />
<br />
Documentation & Outreach:<br />
*(+1) template library---parameters sets that others can use (Kilian)<br />
**distribution of information/data/templates<br />
**link to wiki/web page for data/templates<br />
*( 0) expand developer documentation (some work critical)<br />
*(-1) expand user tutorial (later)<br />
<br />
New Features:<br />
*(+1) one-click segmentation of new images (Brad)<br />
*(+1) class overview widget (Brad)<br />
*(+1) intensity distribution widget (Brad)<br />
*(+1) atlas-to-image registration (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Bill<br />
*(+1) change log-normal to normal (Slicer community)<br />
*(+1) generate surface models (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*( 0) controlled vocabulary<br />
**color---label from controlled set---need specification & use cases<br />
*( 0) rules for wizard transitions<br />
*( 0) volume computation<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*(-1) tissue labels carry through to other Slicer3 modules<br />
*(-1) PCA interface<br />
*(-1) CIM interface<br />
<br />
Updates to current code:<br />
<br />
Usability:<br />
*(+1) rename buttons with more intuitive names: (Kilian & Brad)<br />
**manual, manually segment, etc.: Edit, Sample Points, Automatic<br />
**when modifying tissue class tree: add "sub-class" instead of "child node"<br />
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
*(+1) undo/redo (Brad)<br />
*(+1) progress bar (threading?) (Brad)<br />
*(+1) small gui tweaks (Kilian & Brad)<br />
<br />
Engineering:<br />
*( 0) expand updating based on MRML events<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; here is the current version:<br />
<br />
USAGE: /usr/local/dev/build//Slicer3-Shared-Release/bin/EMSegmentCommandLine<br />
[--processinformationaddress<br />
<std::string>] [--xml] [--echo]<br />
[--generateEmptyMRMLSceneAndQuit<br />
<std::string>] [--dontWriteResults]<br />
[--resultStandardVolumeFileName<br />
<std::string>] [--verbose]<br />
[--disableMultithreading]<br />
[--parametersMRMLNodeName<br />
<std::string>]<br />
[--targetVolumeFileNames<br />
<std::vector<std::string>>] ...<br />
[--resultVolumeFileName<br />
<std::string>] [--mrmlSceneFileName<br />
<std::string>] [--] [--version]<br />
[-h]<br />
<br />
<br />
Where:<br />
<br />
--processinformationaddress <std::string><br />
Address of a structure to store process information (progress, abort,<br />
etc.). (default: 0)<br />
<br />
--xml<br />
Produce xml description of command line arguments (default: 0)<br />
<br />
--echo<br />
Echo the command line arguments (default: 0)<br />
<br />
--generateEmptyMRMLSceneAndQuit <std::string><br />
Used for testing. Only write a scene with default mrml parameters.<br />
<br />
--dontWriteResults<br />
Used for testing. Don't actually write the resulting labelmap to<br />
disk. (default: 0)<br />
<br />
--resultStandardVolumeFileName <std::string><br />
Used for testing. Compare segmentation results to this image and<br />
return EXIT_FAILURE if they do not match.<br />
<br />
--verbose<br />
Enable verbose output. (default: 0)<br />
<br />
--disableMultithreading<br />
Disable multithreading. (default: 0)<br />
<br />
--parametersMRMLNodeName <std::string><br />
The name of the EMSegment parameters node within the active MRML<br />
scene. Leave blank for default.<br />
<br />
--targetVolumeFileNames <std::vector<std::string>> (accepted multiple<br />
times)<br />
File names of target volumes (to be segmented). The number of target<br />
images must be equal to the number of target images specified in the<br />
parameter set, and these images must be spatially aligned.<br />
<br />
--resultVolumeFileName <std::string><br />
The file name that the segmentation result volume will be written to.<br />
<br />
--mrmlSceneFileName <std::string><br />
Active MRML scene that contains EMSegment algorithm parameters.<br />
<br />
--, --ignore_rest<br />
Ignores the rest of the labeled arguments following this flag.<br />
<br />
--version<br />
Displays version information and exits.<br />
<br />
-h, --help<br />
Displays usage information and exits.<br />
<br />
<br />
Description: EMSegment command-line module description and<br />
help.<br />
<br />
Author(s): Brad Davis<br />
<br />
Acknowledgements: Many people and organizations have contributed to the<br />
funding, design, and development of the EMSegment algorithm and its<br />
various implementations.<br />
<br />
==Example==<br />
<br />
In order to demonstrate the EMSgementCommandLine program, we show how to apply it to the EMSegment tutorial data.<br />
<br />
#Download and build Slicer3 (see the Slicer3 homepage).<br />
#The EMSegment command-line executable is built in the Slicer3 build directory<br />
##On Windows, you will find the executable in (depending on the build type: Debug, Release, RelWithDebInfo) $Slicer3-Build/bin/Debug/EMSegmentCommandLine.exe<br />
##On Windows, you will find the executable in $Slicer3-Build/bin/EMSegmentCommandLine <br />
#Download the EMSegment tutorial data (see below). Suppose that the tutorial data is stored in the directory $EMSegmentTutorial.<br />
#Run the executable to see the documentation<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
#Run the segmentation algorithm on the tutorial data using the tutorial parameters<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames $EMSegmentTutorial/Data/VolumeData/target_t1_normed.mhd,$EMSegmentTutorial/Data/VolumeData/target_t2_normed.mhd --verbose<br />
#Run the segmentation algorithm on your data (for now, make sure that your target images are aligned with the atlas data)<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
#Run the segmentation algorithm using an atlas that is aligned to your image data<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
##Note that the order of the atlas volumes is important---use the order above for the tutorial dataset<br />
###use an order that matches the mrml parameters file if you design a different parameter set<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
*Are the images aligned?<br />
**The target images must be aligned with the atlas. You should visually check that your target image is aligned with $EMSegmentTutorial/Data/VolumeData/atlas_t1.mhd.<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_EM_Segmenter_User_Group&diff=208592008 Winter Project Week EM Segmenter User Group2008-01-08T07:49:20Z<p>Davisb: </p>
<hr />
<div>Lead: Brad Davis (Kitware) and Kilian Pohl (BWH) <br />
<br />
=='''NEW: '''Download slides and tutorial data from the Slicer3 EMSegmenter wiki page [[Slicer3:EM]] (bottom of page)==<br />
<br />
Please join us for the Slicer3 EMSegmenter break-out session on<br />
Monday, January 7th from 4-5pm---and don't forget to bring your data!<br />
<br />
We will demonstrate the use of the EMSegmenter for the segmentation of<br />
white matter, grey matter, and CSF from pairs of T1 and T2 MR images.<br />
Topics will include:<br />
<br />
*New features such as registration, one-click interface, and batch processing<br />
*How to segment a new pair of images?<br />
*How to start adapting the parameters for new structures?<br />
*How to create and use a new atlas?<br />
<br />
'''You are encouraged to bring your own data to segment during the week.'''<br />
Don't feel limited to MR brain data---the algorithm has been adapted<br />
to a number of different anatomical structures. It will work best if<br />
you can provide a probabilistic atlas with your data (a manual<br />
segmentation of a similar image will do).<br />
<br />
Primary Objectives:<br />
<br />
*Show how to adapt the EMSegmenter Tutorial parameter set to new images<br />
*Gather user feedback for bug reports and new features<br />
*Answer questions about the EMSegmenter<br />
<br />
Specific Questions:<br />
<br />
Are there topics that you would like addressed at this session? Post them here:<br />
<br />
Back to [[AHM_2008]], [[Events]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_EM_Segmenter_User_Group&diff=208582008 Winter Project Week EM Segmenter User Group2008-01-08T07:48:46Z<p>Davisb: </p>
<hr />
<div>Lead: Brad Davis (Kitware) and Kilian Pohl (BWH) <br />
<br />
=='''NEW: '''Download slides and tutorial data from the Slicer3 EMSegmenter wiki page [[Slicer3:EM]]==<br />
<br />
Please join us for the Slicer3 EMSegmenter break-out session on<br />
Monday, January 7th from 4-5pm---and don't forget to bring your data!<br />
<br />
We will demonstrate the use of the EMSegmenter for the segmentation of<br />
white matter, grey matter, and CSF from pairs of T1 and T2 MR images.<br />
Topics will include:<br />
<br />
*New features such as registration, one-click interface, and batch processing<br />
*How to segment a new pair of images?<br />
*How to start adapting the parameters for new structures?<br />
*How to create and use a new atlas?<br />
<br />
'''You are encouraged to bring your own data to segment during the week.'''<br />
Don't feel limited to MR brain data---the algorithm has been adapted<br />
to a number of different anatomical structures. It will work best if<br />
you can provide a probabilistic atlas with your data (a manual<br />
segmentation of a similar image will do).<br />
<br />
Primary Objectives:<br />
<br />
*Show how to adapt the EMSegmenter Tutorial parameter set to new images<br />
*Gather user feedback for bug reports and new features<br />
*Answer questions about the EMSegmenter<br />
<br />
Specific Questions:<br />
<br />
Are there topics that you would like addressed at this session? Post them here:<br />
<br />
Back to [[AHM_2008]], [[Events]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=File:EMSegTutorial-AHM2008.ppt&diff=20857File:EMSegTutorial-AHM2008.ppt2008-01-08T07:45:41Z<p>Davisb: </p>
<hr />
<div></div>Davisbhttps://www.na-mic.org/w/index.php?title=File:EMSegTutorial-AHM2008.zip&diff=20856File:EMSegTutorial-AHM2008.zip2008-01-08T07:40:17Z<p>Davisb: </p>
<hr />
<div></div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=20855Slicer3:EM2008-01-08T06:09:16Z<p>Davisb: /* 2007 Tutorial */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer 3 that integrate 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 sets. Thus far, the primary focus has been on developing a wizard-based module that simplifies the configuration of the algorithm by guiding the user through a work flow. Additional interfaces to the algorithm, such as a command line executable and simplified "one-click" Slicer3 module, are planned.<br />
<br />
As of May, 2007, the core functionality of the wizard-based EMSegment module is complete and has been checked into the Slicer3 SVN repository. The module was previewed at the December 2006 NAMIC meeting in Clifton Park and demonstrated at the NAMIC All-Hands meeting in Salt Lake City. A tutorial has been developed and is available from this page. Currently, regression tests are being developed, a command line executable version of the module is under development, intensity normalization is being added, and the segmentation results will be validated during the summer 2007.<br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/8 Define Parameters Set: Select parameter set or create new parameters<br />
*2/8 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/8 Assign Atlas: Assign atlases for anatomical structures<br />
*4/8 Select Target Images: Choose the set of images that will be segmented<br />
*5/8 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*6/8 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*7/8 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*8/8 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. A tutorial session was presented at the January 2007 NAMIC All-Hands meeting by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
Intensity normalization and image registration steps are under construction.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Prioritized future work for EMSegment Module:<br />
<br />
Documentation & Outreach:<br />
*(+1) template library---parameters sets that others can use (Kilian)<br />
**distribution of information/data/templates<br />
**link to wiki/web page for data/templates<br />
*( 0) expand developer documentation (some work critical)<br />
*(-1) expand user tutorial (later)<br />
<br />
New Features:<br />
*(+1) one-click segmentation of new images (Brad)<br />
*(+1) class overview widget (Brad)<br />
*(+1) intensity distribution widget (Brad)<br />
*(+1) atlas-to-image registration (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Bill<br />
*(+1) change log-normal to normal (Slicer community)<br />
*(+1) generate surface models (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*( 0) controlled vocabulary<br />
**color---label from controlled set---need specification & use cases<br />
*( 0) rules for wizard transitions<br />
*( 0) volume computation<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*(-1) tissue labels carry through to other Slicer3 modules<br />
*(-1) PCA interface<br />
*(-1) CIM interface<br />
<br />
Updates to current code:<br />
<br />
Usability:<br />
*(+1) rename buttons with more intuitive names: (Kilian & Brad)<br />
**manual, manually segment, etc.: Edit, Sample Points, Automatic<br />
**when modifying tissue class tree: add "sub-class" instead of "child node"<br />
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
*(+1) undo/redo (Brad)<br />
*(+1) progress bar (threading?) (Brad)<br />
*(+1) small gui tweaks (Kilian & Brad)<br />
<br />
Engineering:<br />
*( 0) expand updating based on MRML events<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; here is the current version:<br />
<br />
USAGE: /usr/local/dev/build//Slicer3-Shared-Release/bin/EMSegmentCommandLine<br />
[--processinformationaddress<br />
<std::string>] [--xml] [--echo]<br />
[--generateEmptyMRMLSceneAndQuit<br />
<std::string>] [--dontWriteResults]<br />
[--resultStandardVolumeFileName<br />
<std::string>] [--verbose]<br />
[--disableMultithreading]<br />
[--parametersMRMLNodeName<br />
<std::string>]<br />
[--targetVolumeFileNames<br />
<std::vector<std::string>>] ...<br />
[--resultVolumeFileName<br />
<std::string>] [--mrmlSceneFileName<br />
<std::string>] [--] [--version]<br />
[-h]<br />
<br />
<br />
Where:<br />
<br />
--processinformationaddress <std::string><br />
Address of a structure to store process information (progress, abort,<br />
etc.). (default: 0)<br />
<br />
--xml<br />
Produce xml description of command line arguments (default: 0)<br />
<br />
--echo<br />
Echo the command line arguments (default: 0)<br />
<br />
--generateEmptyMRMLSceneAndQuit <std::string><br />
Used for testing. Only write a scene with default mrml parameters.<br />
<br />
--dontWriteResults<br />
Used for testing. Don't actually write the resulting labelmap to<br />
disk. (default: 0)<br />
<br />
--resultStandardVolumeFileName <std::string><br />
Used for testing. Compare segmentation results to this image and<br />
return EXIT_FAILURE if they do not match.<br />
<br />
--verbose<br />
Enable verbose output. (default: 0)<br />
<br />
--disableMultithreading<br />
Disable multithreading. (default: 0)<br />
<br />
--parametersMRMLNodeName <std::string><br />
The name of the EMSegment parameters node within the active MRML<br />
scene. Leave blank for default.<br />
<br />
--targetVolumeFileNames <std::vector<std::string>> (accepted multiple<br />
times)<br />
File names of target volumes (to be segmented). The number of target<br />
images must be equal to the number of target images specified in the<br />
parameter set, and these images must be spatially aligned.<br />
<br />
--resultVolumeFileName <std::string><br />
The file name that the segmentation result volume will be written to.<br />
<br />
--mrmlSceneFileName <std::string><br />
Active MRML scene that contains EMSegment algorithm parameters.<br />
<br />
--, --ignore_rest<br />
Ignores the rest of the labeled arguments following this flag.<br />
<br />
--version<br />
Displays version information and exits.<br />
<br />
-h, --help<br />
Displays usage information and exits.<br />
<br />
<br />
Description: EMSegment command-line module description and<br />
help.<br />
<br />
Author(s): Brad Davis<br />
<br />
Acknowledgements: Many people and organizations have contributed to the<br />
funding, design, and development of the EMSegment algorithm and its<br />
various implementations.<br />
<br />
==Example==<br />
<br />
In order to demonstrate the EMSgementCommandLine program, we show how to apply it to the EMSegment tutorial data.<br />
<br />
#Download and build Slicer3 (see the Slicer3 homepage).<br />
#The EMSegment command-line executable is built in the Slicer3 build directory<br />
##On Windows, you will find the executable in (depending on the build type: Debug, Release, RelWithDebInfo) $Slicer3-Build/bin/Debug/EMSegmentCommandLine.exe<br />
##On Windows, you will find the executable in $Slicer3-Build/bin/EMSegmentCommandLine <br />
#Download the EMSegment tutorial data (see below). Suppose that the tutorial data is stored in the directory $EMSegmentTutorial.<br />
#Run the executable to see the documentation<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
#Run the segmentation algorithm on the tutorial data using the tutorial parameters<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames $EMSegmentTutorial/Data/VolumeData/target_t1_normed.mhd,$EMSegmentTutorial/Data/VolumeData/target_t2_normed.mhd --verbose<br />
#Run the segmentation algorithm on your data (for now, make sure that your target images are aligned with the atlas data)<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
#Run the segmentation algorithm using an atlas that is aligned to your image data<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
##Note that the order of the atlas volumes is important---use the order above for the tutorial dataset<br />
###use an order that matches the mrml parameters file if you design a different parameter set<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
*Are the images aligned?<br />
**The target images must be aligned with the atlas. You should visually check that your target image is aligned with $EMSegmentTutorial/Data/VolumeData/atlas_t1.mhd.<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==Old (2007) Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=Slicer3:EM&diff=20854Slicer3:EM2008-01-08T06:07:31Z<p>Davisb: /* EMSegment Tutorial */</p>
<hr />
<div>=Project Summary=<br />
<br />
The goal of this project is the creation of interfaces in Slicer 3 that integrate 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 sets. Thus far, the primary focus has been on developing a wizard-based module that simplifies the configuration of the algorithm by guiding the user through a work flow. Additional interfaces to the algorithm, such as a command line executable and simplified "one-click" Slicer3 module, are planned.<br />
<br />
As of May, 2007, the core functionality of the wizard-based EMSegment module is complete and has been checked into the Slicer3 SVN repository. The module was previewed at the December 2006 NAMIC meeting in Clifton Park and demonstrated at the NAMIC All-Hands meeting in Salt Lake City. A tutorial has been developed and is available from this page. Currently, regression tests are being developed, a command line executable version of the module is under development, intensity normalization is being added, and the segmentation results will be validated during the summer 2007.<br />
<br />
=Contacts=<br />
<br />
*MIT/BWH: Kilian Pohl (pohl@csail.mit.edu)<br />
*Kitware: Brad Davis (brad.davis@kitware.com)<br />
<br />
=EMSegment Workflow Module=<br />
<br />
The EMSegment worfklow module is the primary Slicer3 interface to the EMSegment algorithm. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist. 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. <br />
<br />
A similar EMSegment module is available in Slicer2.6. The intent of<br />
this project is to implement a Slicer3 module with similar<br />
functionality while also improving the graphical user interface (GUI).<br />
While the GUI and data structure (MRML) code was completely rewritten<br />
for the Slicer3 module, the algorithm code was not modified.<br />
<br />
==High-level Module Description==<br />
<br />
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<br />
non-trivial collection of parameters for the EMSegment algorithm. <br />
<br />
Once the parameters are specified, the target images are segmented<br />
using the EM Segmentation algorithm (Pohl et al.). If the results are<br />
satisfactory, the template is saved and can be used later to segment<br />
new images (via the GUI or batch processing). If the results are<br />
unsatisfactory, the parameters can be modified and the segmentation<br />
re-run.<br />
<br />
One important aspect of the project is the workflow wizard. This<br />
wizard simplifies the module by dividing the complicated template<br />
specification task into a number of smaller, intuitive steps.<br />
<br />
==Steps in EMSegment Workflow==<br />
*1/8 Define Parameters Set: Select parameter set or create new parameters<br />
*2/8 Define Hierarchy: Define a hierarchy of anatomical structures<br />
*3/8 Assign Atlas: Assign atlases for anatomical structures<br />
*4/8 Select Target Images: Choose the set of images that will be segmented<br />
*5/8 Specify Intensity Distributions: Define intensity distribution for each anatomical structure<br />
*6/8 Edit Node-based Parameters: Specify node-based segmentation parameters<br />
*7/8 Edit Registration Parameters: Specify atlas-to-target registration parameters<br />
*8/8 Run Segmentation: Save work and apply EM Algorithm to segment target images<br />
<br />
==Status==<br />
<br />
A version of the Slicer3 EMSegment workflow module has been completed and<br />
checked into the Slicer3 SVN repository. Example data have been<br />
packaged with a tutorial and are available from this wiki page. A tutorial session was presented at the January 2007 NAMIC All-Hands meeting by K. Pohl and B. Davis.<br />
<br />
While there is a completed working version of the module it will<br />
likely be under development for some time. The primary future<br />
development efforts will be for (1) bug fixing, (2) adding new<br />
functionality, (3) modifying the underlying code to make better use of<br />
the evolving Slicer3 base functionality.<br />
<br />
Intensity normalization and image registration steps are under construction.<br />
<br />
===Completed===<br />
<br />
*finalize workflow description (Kilian, Wendy, Brad)<br />
*define new MRML node structure (Kilian, Brad)<br />
*implement workflow wizard (Sebastien, Luis)<br />
*document workflow wizard and write tutorial (Sebastien)<br />
*implement core MRML classes/attributes (Brad)<br />
*implement logic class that manages MRML nodes and provides API to GUI (Brad)<br />
*implement user interface for each wizard step (Yumin, Sebastien)<br />
*create example data and parameter set (Kilian, Brad)<br />
*port algorithm code from Slicer2 (Brad)<br />
*create tutorial (Kilian, Brad)<br />
<br />
===In Progress===<br />
*bug fixes<br />
*intensity distribution widget<br />
*incorporate feedback from NAMIC community into priorities for future work<br />
*intensity normalization (Kilian, Brad)<br />
*atlas-to-target registration (Brad)<br />
*target-to-target registration (Brad)<br />
*command-line interface (Brad)<br />
*regression testing (Brad)<br />
*segmentation results validation (Sylvain, Brad)<br />
*help text (Kilian, Brad)<br />
<br />
===Future Work===<br />
<br />
Prioritized future work for EMSegment Module:<br />
<br />
Documentation & Outreach:<br />
*(+1) template library---parameters sets that others can use (Kilian)<br />
**distribution of information/data/templates<br />
**link to wiki/web page for data/templates<br />
*( 0) expand developer documentation (some work critical)<br />
*(-1) expand user tutorial (later)<br />
<br />
New Features:<br />
*(+1) one-click segmentation of new images (Brad)<br />
*(+1) class overview widget (Brad)<br />
*(+1) intensity distribution widget (Brad)<br />
*(+1) atlas-to-image registration (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Bill<br />
*(+1) change log-normal to normal (Slicer community)<br />
*(+1) generate surface models (Slicer community)<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*( 0) controlled vocabulary<br />
**color---label from controlled set---need specification & use cases<br />
*( 0) rules for wizard transitions<br />
*( 0) volume computation<br />
**coordinate with other Slicer3 developers; Ron, Will, Steve<br />
*(-1) tissue labels carry through to other Slicer3 modules<br />
*(-1) PCA interface<br />
*(-1) CIM interface<br />
<br />
Updates to current code:<br />
<br />
Usability:<br />
*(+1) rename buttons with more intuitive names: (Kilian & Brad)<br />
**manual, manually segment, etc.: Edit, Sample Points, Automatic<br />
**when modifying tissue class tree: add "sub-class" instead of "child node"<br />
*(+1) wizard buttons not scrolled out of view: maybe move to top (Brad)<br />
*(+1) undo/redo (Brad)<br />
*(+1) progress bar (threading?) (Brad)<br />
*(+1) small gui tweaks (Kilian & Brad)<br />
<br />
Engineering:<br />
*( 0) expand updating based on MRML events<br />
<br />
==Implementation Details==<br />
<br />
The module is implemented as a programmatic Slicer3 module because it<br />
requires a large degree of interaction with the user, the data stored<br />
in the MRML tree, and the Slicer3 GUI itself. Because the MRML node<br />
structure is rather complicated (for example the anatomical tissue<br />
hierarchy and a large number of interdependent nodes) the Logic class<br />
is solely responsible for maintaining and accessing these nodes. The<br />
Logic class provides an API that the GUI code uses to access and<br />
modify data. The Logic class also wraps the algorithm code itself.<br />
<br />
=EMSegment Command-line Executable=<br />
<br />
The EMSegment command-line executable is used to simplify the processing of large collections of images. The primary function of the '''work flow''' module is to step the user through the process of calibrating, via algorithm parameters, the segmentation algorithm to a particular set of input data. However, once a successful collection of parameters is established, the user will commonly want to bypass this detailed calibration process when segmenting new images. The command-line executable provides this batch processing capability.<br />
<br />
The executable is included in the Slicer3 distribution. <br />
<br />
==Status==<br />
<br />
A first version of the EMSegmentCommandLine program is complete. We are currently testing the program with users and may modify the interface.<br />
<br />
==Interface==<br />
<br />
The interface to the executable is both simple and flexible. It is simple because the number of command-line parameters is minimized---only a MRML scene (containing algorithm parameters), a target image (or multiple target images, e.g., T1 and T2), and an output labelmap image need to be specified. It is flexible because any EM algorithm parameter can be modified, within the MRML scene, via the EMSegment GUI interface.<br />
<br />
The interface is under construction and subject to change; here is the current version:<br />
<br />
USAGE: /usr/local/dev/build//Slicer3-Shared-Release/bin/EMSegmentCommandLine<br />
[--processinformationaddress<br />
<std::string>] [--xml] [--echo]<br />
[--generateEmptyMRMLSceneAndQuit<br />
<std::string>] [--dontWriteResults]<br />
[--resultStandardVolumeFileName<br />
<std::string>] [--verbose]<br />
[--disableMultithreading]<br />
[--parametersMRMLNodeName<br />
<std::string>]<br />
[--targetVolumeFileNames<br />
<std::vector<std::string>>] ...<br />
[--resultVolumeFileName<br />
<std::string>] [--mrmlSceneFileName<br />
<std::string>] [--] [--version]<br />
[-h]<br />
<br />
<br />
Where:<br />
<br />
--processinformationaddress <std::string><br />
Address of a structure to store process information (progress, abort,<br />
etc.). (default: 0)<br />
<br />
--xml<br />
Produce xml description of command line arguments (default: 0)<br />
<br />
--echo<br />
Echo the command line arguments (default: 0)<br />
<br />
--generateEmptyMRMLSceneAndQuit <std::string><br />
Used for testing. Only write a scene with default mrml parameters.<br />
<br />
--dontWriteResults<br />
Used for testing. Don't actually write the resulting labelmap to<br />
disk. (default: 0)<br />
<br />
--resultStandardVolumeFileName <std::string><br />
Used for testing. Compare segmentation results to this image and<br />
return EXIT_FAILURE if they do not match.<br />
<br />
--verbose<br />
Enable verbose output. (default: 0)<br />
<br />
--disableMultithreading<br />
Disable multithreading. (default: 0)<br />
<br />
--parametersMRMLNodeName <std::string><br />
The name of the EMSegment parameters node within the active MRML<br />
scene. Leave blank for default.<br />
<br />
--targetVolumeFileNames <std::vector<std::string>> (accepted multiple<br />
times)<br />
File names of target volumes (to be segmented). The number of target<br />
images must be equal to the number of target images specified in the<br />
parameter set, and these images must be spatially aligned.<br />
<br />
--resultVolumeFileName <std::string><br />
The file name that the segmentation result volume will be written to.<br />
<br />
--mrmlSceneFileName <std::string><br />
Active MRML scene that contains EMSegment algorithm parameters.<br />
<br />
--, --ignore_rest<br />
Ignores the rest of the labeled arguments following this flag.<br />
<br />
--version<br />
Displays version information and exits.<br />
<br />
-h, --help<br />
Displays usage information and exits.<br />
<br />
<br />
Description: EMSegment command-line module description and<br />
help.<br />
<br />
Author(s): Brad Davis<br />
<br />
Acknowledgements: Many people and organizations have contributed to the<br />
funding, design, and development of the EMSegment algorithm and its<br />
various implementations.<br />
<br />
==Example==<br />
<br />
In order to demonstrate the EMSgementCommandLine program, we show how to apply it to the EMSegment tutorial data.<br />
<br />
#Download and build Slicer3 (see the Slicer3 homepage).<br />
#The EMSegment command-line executable is built in the Slicer3 build directory<br />
##On Windows, you will find the executable in (depending on the build type: Debug, Release, RelWithDebInfo) $Slicer3-Build/bin/Debug/EMSegmentCommandLine.exe<br />
##On Windows, you will find the executable in $Slicer3-Build/bin/EMSegmentCommandLine <br />
#Download the EMSegment tutorial data (see below). Suppose that the tutorial data is stored in the directory $EMSegmentTutorial.<br />
#Run the executable to see the documentation<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --help<br />
#Run the segmentation algorithm on the tutorial data using the tutorial parameters<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames $EMSegmentTutorial/Data/VolumeData/target_t1_normed.mhd,$EMSegmentTutorial/Data/VolumeData/target_t2_normed.mhd --verbose<br />
#Run the segmentation algorithm on your data (for now, make sure that your target images are aligned with the atlas data)<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose<br />
#Run the segmentation algorithm using an atlas that is aligned to your image data<br />
##$Slicer3-Build/bin/EMSegmentCommandLine --mrmlSceneFileName $EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml --resultVolumeFileName /tmp/segmentation.mhd --targetVolumeFileNames /MyImageDirectory/MyImageT1.mhd,/MyImageDirectory/MyImageT2.mhd --verbose --atlasVolumeFileNames atlasBackgroundReg_small.mhd,atlasBackgroundReg_small.mhd,atlasCSFReg_small.mhd,atlasGreymatterReg_small.mhd,atlasWhitematterReg_small.mhd<br />
##Note that the order of the atlas volumes is important---use the order above for the tutorial dataset<br />
###use an order that matches the mrml parameters file if you design a different parameter set<br />
<br />
===What Can Go Wrong?===<br />
<br />
*Shared libraries were not found<br />
**If your run the executable and shared libraries are not found, then you need to add VTK, ITK, KWWidgets, and Slicer3 build library directories to your path. You can also run the executable using Slicer3 as a wrapper. This method will set up the paths correctly; run it like this:<br />
<br />
$Slicer3-Build/bin/Slicer3 --launch $Slicer3-Build/bin/EMSegmentCommandLine --help<br />
<br />
*Are the images aligned?<br />
**The target images must be aligned with the atlas. You should visually check that your target image is aligned with $EMSegmentTutorial/Data/VolumeData/atlas_t1.mhd.<br />
<br />
=EMSegment Tutorials=<br />
<br />
==2008 Tutorial==<br />
<br />
These slides and data describe the Slicer3 implementation of the EMSegmenter and demonstrate its use. A recent (7Jan08) version of Slicer3 is required to run the test data.<br />
<br />
[[Media:EMSegTutorial-AHM2008.ppt | Slides]] - [[Media:EMSegTutorial-AHM2008.zip | Data]]<br />
<br />
==2007 Tutorial==<br />
<br />
NOTE: This version of the tutorial is not compatible with the latest Slicer SVN version. It is compatible with Slicer versions that were released around the Summer Project week 2007. An updated tutorial will be released soon (around the time of the January 2008 All-Hands meeting).<br />
<br />
To try out the module with the tutorial data:<br />
#build the latest version of Slicer3<br />
#download and untar (or unzip) the data file below (it is approximately 43 megabytes zipped and 329 megabytes unzipped)<br />
#start Slicer3<br />
#choose File->Import Scene... and select the file EMSegmentTutorial/Data/EMSegmentTutorialTemplate.mrml from the location where you untared the data <br />
##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<br />
#in Slicer3 change to the EMSegment module<br />
#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)<br />
#use the "Next" and "Back" buttons to navigate through the module, viewing and updating parameters as you go<br />
##Note: no parameters need to be modified to run the segmentation using the default tutorial settings<br />
#on step 8/8, select "Run" and the segmentation will start<br />
##the segmentation takes approximately 2.5 minutes on a dual core Intel processor with 2 gigabytes of memory<br />
##by default the resulting segmentation is saved in the segmentation_result.mhd image<br />
<br />
Tutorial: [[Media:NAMIC-AHM07-EMTutorialV2.ppt | Slides]] - [[Media:EMSegmentTutorial.tgz | Data (tgz)]] - [[Media:EMSegmentTutorial_Slicer3.zip | Data (zip)]]<br />
<br />
[[Media:EMSegmentSlicer3_Segmentation.png | Screen Shot]]<br />
<br />
[[EMSegmenter Mini-Tutorials]]<br />
<br />
[[EMSegmenter Frequently Asked Questions]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_GroupwiseReg&diff=208042008 Winter Project Week GroupwiseReg2008-01-07T14:17:37Z<p>Davisb: /* Lead Up Work */</p>
<hr />
<div>{|<br />
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2008_Winter_Project_Week]] ]]<br />
|valign="top"| [[Image:GroupwiseStackBiModal.PNG|thumb|350px|Figure 1: On the left is shown a stack of images <br />
and a sample pixel stack around a cortical region. On the left is shown the Gaussian(blue) fittet to <br />
a real sample from the dataset we used along with the non-parametric density estimate(red). <br />
Note that the distribution is bi-modal because of white matter-gray matter transaction.]]<br />
|}<br />
<br />
__NOTOC__<br />
===Key Investigators===<br />
* MIT: Serdar Balci, Polina Golland<br />
* Kitware: Brad Davis<br />
* SCI: Casey Goodlett<br />
<br />
<div style="margin: 20px;"><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Objective</h1><br />
<br />
The goal of this project is to expand the NAMIC Software Kit with the addition of an image-based atlas<br />
building algorithm that was developed by Polina Golland’s lab at MIT. The basic functionality of this software will<br />
be demonstrated to the NAMIC community at the January 2008 NAMIC all-hands meeting. A secondary<br />
goal is to begin the process of gathering usability and interface requests from targeted clinical collaborators.<br />
It is intended that users’ requests will be incorporated in to a future project aimed at tailoring this software<br />
for widespread NAMIC use.<br />
<br />
See our [[Projects:GroupwiseRegistration| Algorithm Project Page]] for more details.<br />
<br />
</div><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Approach, Plan </h1><br />
<br />
The registration algorithms are already available as C++ sourcecode. We plan to integrate them into the NAMIC community by:<br />
<br />
*Adapt sourcecode to utilize the command-line parsing mechanism that was designed for Slicer3 external modules. <br />
*Create a simple Slicer3 graphical user interface (external module) that allows a user to generate an atlas from their data. <br />
*User Feedback. During the January 2008 NAMIC all-hands meeting we will solicit feedback on this project from potential collaborators.<br />
<br />
</div><br />
<br />
<div style="width: 40%; float: left;"><br />
<br />
<h1>Progress</h1><br />
<br />
<br />
====Jan 2008 Project Week====<br />
<br />
</div><br />
<br />
<br style="clear: both;" /><br />
<br />
</div><br />
<br />
<br />
===References===<br />
* S.K. Balci, P. Golland, M.E. Shenton, W.M. Wells III. Free-Form B-spline Deformation Model for Groupwise Registration. In Proceedings of MICCAI 2007 Statistical Registration Workshop: Pair-wise and Group-wise Alignment and Atlas Formation, 23-30, 2007.</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_EM_Segmenter_User_Group&diff=202962008 Winter Project Week EM Segmenter User Group2007-12-28T18:56:01Z<p>Davisb: </p>
<hr />
<div>Lead: Brad Davis, Kitware<br />
<br />
Please join us for the Slicer3 EMSegmenter break-out session on<br />
Monday, January 7th from 4-5pm---and don't forget to bring your data!<br />
<br />
We will demonstrate the use of the EMSegmenter for the segmentation of<br />
white matter, grey matter, and CSF from pairs of T1 and T2 MR images.<br />
Topics will include:<br />
<br />
*New features such as registration, one-click interface, and batch processing<br />
*How to segment a new pair of images?<br />
*How to start adapting the parameters for new structures?<br />
*How to create and use a new atlas?<br />
<br />
'''You are encouraged to bring your own data to segment during the week.'''<br />
Don't feel limited to MR brain data---the algorithm has been adapted<br />
to a number of different anatomical structures. It will work best if<br />
you can provide a probabilistic atlas with your data (a manual<br />
segmentation of a similar image will do).<br />
<br />
Primary Objectives:<br />
<br />
*Show how to adapt the EMSegmenter Tutorial parameter set to new images<br />
*Gather user feedback for bug reports and new features<br />
*Answer questions about the EMSegmenter<br />
<br />
Specific Questions:<br />
<br />
Are there topics that you would like addressed at this session? Post them here:<br />
<br />
Back to [[AHM_2008]], [[Events]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_EM_Segmenter_User_Group&diff=202952008 Winter Project Week EM Segmenter User Group2007-12-28T18:55:25Z<p>Davisb: </p>
<hr />
<div>Lead: Brad Davis, Kitware<br />
<br />
Please join us for the Slicer3 EMSegmenter break-out session on<br />
Monday, January 7th from 4-5pm---and don't forget to bring your data!<br />
<br />
We will demonstrate the use of the EMSegmenter for the segmentation of<br />
white matter, grey matter, and CSF from pairs of T1 and T2 MR images.<br />
Topics will include:<br />
<br />
*New features such as registration, one-click interface, and batch processing<br />
*How to segment a new pair of images?<br />
*How to start adapting the parameters for new structures?<br />
*How to create and use a new atlas?<br />
<br />
'''You are encouraged to bring your own data to segment during the week.'''<br />
Don't feel limited to MR brain data---the algorithm has been adapted<br />
to a number of different anatomical structures. It will work best if<br />
you can provide a probabilistic atlas with your data (a manual<br />
segmentation of a similar image will do).<br />
<br />
Primary Objectives:<br />
<br />
*Show how to adapt the EMSegmenter Tutorial parameter set to new images<br />
*Gather user feedback for bug reports and new features<br />
*Answer questions about the EMSegmenter<br />
<br />
Agenda:<br />
<br />
*Show how to adapt the EMSegmenter Tutorial parameters to data provided by the MIND institute<br />
*Demonstrate the use of the EMSegment command line interface for batch processing<br />
*Open questions<br />
<br />
Specific Questions:<br />
<br />
Are there topics that you would like addressed at this session? Post them here:<br />
<br />
Back to [[AHM_2008]], [[Events]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_EM_Segmenter_User_Group&diff=202942008 Winter Project Week EM Segmenter User Group2007-12-28T18:54:37Z<p>Davisb: </p>
<hr />
<div>Lead: Brad Davis, Kitware<br />
<br />
Please join us for the Slicer3 EMSegmenter break-out session on<br />
Monday, January 7th from 4-5pm---and don't forget to bring your data!<br />
<br />
We will demonstrate the use of the EMSegmenter for the segmentation of<br />
white matter, grey matter, and CSF from pairs of T1 and T2 MR images.<br />
Topics will include:<br />
<br />
*New features such as registration, one-click interface, and batch processing<br />
*How to segment a new pair of images?<br />
*How to start adapting the parameters for new structures?<br />
*How to create and use a new atlas?<br />
<br />
You are encouraged to bring your own data to segment during the week.<br />
Don't feel limited to MR brain data---the algorithm has been adapted<br />
to a number of different anatomical structures. It will work best if<br />
you can provide a probabilistic atlas with your data (a manual<br />
segmentation of a similar image will do).<br />
<br />
Primary Objectives:<br />
<br />
*Show how to adapt the EMSegmenter Tutorial parameter set to new images<br />
*Gather user feedback for bug reports and new features<br />
*Answer questions about the EMSegmenter<br />
<br />
Agenda:<br />
<br />
*Show how to adapt the EMSegmenter Tutorial parameters to data provided by the MIND institute<br />
*Demonstrate the use of the EMSegment command line interface for batch processing<br />
*Open questions<br />
<br />
Specific Questions:<br />
<br />
Are there topics that you would like addressed at this session? Post them here:<br />
<br />
Back to [[AHM_2008]], [[Events]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_EM_Segmenter_User_Group&diff=202932008 Winter Project Week EM Segmenter User Group2007-12-28T18:54:17Z<p>Davisb: </p>
<hr />
<div>Lead: Brad Davis, Kitware<br />
<br />
Please join us for the Slicer3 EMSegmenter break-out session on<br />
Monday, January 7th from 4-5pm---and don't forget to bring your data!<br />
<br />
We will demonstrate the use of the EMSegmenter for the segmentation of<br />
white matter, grey matter, and CSF from pairs of T1 and T2 MR images.<br />
Topics will include:<br />
<br />
New features such as registration, one-click interface, and batch processing<br />
<br />
How to segment a new pair of images?<br />
<br />
How to start adapting the parameters for new structures?<br />
<br />
How to create and use a new atlas?<br />
<br />
You are encouraged to bring your own data to segment during the week.<br />
Don't feel limited to MR brain data---the algorithm has been adapted<br />
to a number of different anatomical structures. It will work best if<br />
you can provide a probabilistic atlas with your data (a manual<br />
segmentation of a similar image will do).<br />
<br />
Primary Objectives:<br />
<br />
*Show how to adapt the EMSegmenter Tutorial parameter set to new images<br />
*Gather user feedback for bug reports and new features<br />
*Answer questions about the EMSegmenter<br />
<br />
Agenda:<br />
<br />
*Show how to adapt the EMSegmenter Tutorial parameters to data provided by the MIND institute<br />
*Demonstrate the use of the EMSegment command line interface for batch processing<br />
*Open questions<br />
<br />
Specific Questions:<br />
<br />
Are there topics that you would like addressed at this session? Post them here:<br />
<br />
Back to [[AHM_2008]], [[Events]]</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_GroupwiseReg&diff=193842008 Winter Project Week GroupwiseReg2007-12-13T19:06:47Z<p>Davisb: /* Lead Up Work */</p>
<hr />
<div>{|<br />
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2008_Winter_Project_Week]] ]]<br />
|valign="top"| [[Image:GroupwiseStackBiModal.PNG|thumb|350px|Figure 1: On the left is shown a stack of images <br />
and a sample pixel stack around a cortical region. On the left is shown the Gaussian(blue) fittet to <br />
a real sample from the dataset we used along with the non-parametric density estimate(red). <br />
Note that the distribution is bi-modal because of white matter-gray matter transaction.]]<br />
|}<br />
<br />
__NOTOC__<br />
===Key Investigators===<br />
* MIT: Serdar Balci, Polina Golland<br />
* Kitware: Brad Davis<br />
* SCI: Casey Goodlett<br />
<br />
<div style="margin: 20px;"><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Objective</h1><br />
<br />
The goal of this project is to expand the NAMIC Software Kit with the addition of an image-based atlas<br />
building algorithm that was developed by Polina Golland’s lab at MIT. The basic functionality of this software will<br />
be demonstrated to the NAMIC community at the January 2008 NAMIC all-hands meeting. A secondary<br />
goal is to begin the process of gathering usability and interface requests from targeted clinical collaborators.<br />
It is intended that users’ requests will be incorporated in to a future project aimed at tailoring this software<br />
for widespread NAMIC use.<br />
<br />
See our [[Projects:GroupwiseRegistration| Algorithm Project Page]] for more details.<br />
<br />
</div><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Approach, Plan </h1><br />
<br />
The registration algorithms are already available as C++ sourcecode. We plan to integrate them into the NAMIC community by:<br />
<br />
*Adapt sourcecode to utilize the command-line parsing mechanism that was designed for Slicer3 external modules. <br />
*Create a simple Slicer3 graphical user interface (external module) that allows a user to generate an atlas from their data. <br />
*User Feedback. During the January 2008 NAMIC all-hands meeting we will solicit feedback on this project from potential collaborators.<br />
<br />
</div><br />
<br />
<div style="width: 40%; float: left;"><br />
<br />
<h1>Progress</h1><br />
<br />
====Lead Up Work====<br />
<br />
Command Line Interface: Started<br />
<br />
External Module: Not Started<br />
<br />
====Jan 2008 Project Week====<br />
<br />
</div><br />
<br />
<br style="clear: both;" /><br />
<br />
</div><br />
<br />
<br />
===References===<br />
* S.K. Balci, P. Golland, M.E. Shenton, W.M. Wells III. Free-Form B-spline Deformation Model for Groupwise Registration. In Proceedings of MICCAI 2007 Statistical Registration Workshop: Pair-wise and Group-wise Alignment and Atlas Formation, 23-30, 2007.</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_GroupwiseReg&diff=193832008 Winter Project Week GroupwiseReg2007-12-13T19:06:37Z<p>Davisb: /* Lead Up Work */</p>
<hr />
<div>{|<br />
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2008_Winter_Project_Week]] ]]<br />
|valign="top"| [[Image:GroupwiseStackBiModal.PNG|thumb|350px|Figure 1: On the left is shown a stack of images <br />
and a sample pixel stack around a cortical region. On the left is shown the Gaussian(blue) fittet to <br />
a real sample from the dataset we used along with the non-parametric density estimate(red). <br />
Note that the distribution is bi-modal because of white matter-gray matter transaction.]]<br />
|}<br />
<br />
__NOTOC__<br />
===Key Investigators===<br />
* MIT: Serdar Balci, Polina Golland<br />
* Kitware: Brad Davis<br />
* SCI: Casey Goodlett<br />
<br />
<div style="margin: 20px;"><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Objective</h1><br />
<br />
The goal of this project is to expand the NAMIC Software Kit with the addition of an image-based atlas<br />
building algorithm that was developed by Polina Golland’s lab at MIT. The basic functionality of this software will<br />
be demonstrated to the NAMIC community at the January 2008 NAMIC all-hands meeting. A secondary<br />
goal is to begin the process of gathering usability and interface requests from targeted clinical collaborators.<br />
It is intended that users’ requests will be incorporated in to a future project aimed at tailoring this software<br />
for widespread NAMIC use.<br />
<br />
See our [[Projects:GroupwiseRegistration| Algorithm Project Page]] for more details.<br />
<br />
</div><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Approach, Plan </h1><br />
<br />
The registration algorithms are already available as C++ sourcecode. We plan to integrate them into the NAMIC community by:<br />
<br />
*Adapt sourcecode to utilize the command-line parsing mechanism that was designed for Slicer3 external modules. <br />
*Create a simple Slicer3 graphical user interface (external module) that allows a user to generate an atlas from their data. <br />
*User Feedback. During the January 2008 NAMIC all-hands meeting we will solicit feedback on this project from potential collaborators.<br />
<br />
</div><br />
<br />
<div style="width: 40%; float: left;"><br />
<br />
<h1>Progress</h1><br />
<br />
====Lead Up Work====<br />
<br />
Command Line Interface: Started<br />
External Module: Not Started<br />
<br />
====Jan 2008 Project Week====<br />
<br />
</div><br />
<br />
<br style="clear: both;" /><br />
<br />
</div><br />
<br />
<br />
===References===<br />
* S.K. Balci, P. Golland, M.E. Shenton, W.M. Wells III. Free-Form B-spline Deformation Model for Groupwise Registration. In Proceedings of MICCAI 2007 Statistical Registration Workshop: Pair-wise and Group-wise Alignment and Atlas Formation, 23-30, 2007.</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_GroupwiseReg&diff=193822008 Winter Project Week GroupwiseReg2007-12-13T19:05:49Z<p>Davisb: </p>
<hr />
<div>{|<br />
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2008_Winter_Project_Week]] ]]<br />
|valign="top"| [[Image:GroupwiseStackBiModal.PNG|thumb|350px|Figure 1: On the left is shown a stack of images <br />
and a sample pixel stack around a cortical region. On the left is shown the Gaussian(blue) fittet to <br />
a real sample from the dataset we used along with the non-parametric density estimate(red). <br />
Note that the distribution is bi-modal because of white matter-gray matter transaction.]]<br />
|}<br />
<br />
__NOTOC__<br />
===Key Investigators===<br />
* MIT: Serdar Balci, Polina Golland<br />
* Kitware: Brad Davis<br />
* SCI: Casey Goodlett<br />
<br />
<div style="margin: 20px;"><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Objective</h1><br />
<br />
The goal of this project is to expand the NAMIC Software Kit with the addition of an image-based atlas<br />
building algorithm that was developed by Polina Golland’s lab at MIT. The basic functionality of this software will<br />
be demonstrated to the NAMIC community at the January 2008 NAMIC all-hands meeting. A secondary<br />
goal is to begin the process of gathering usability and interface requests from targeted clinical collaborators.<br />
It is intended that users’ requests will be incorporated in to a future project aimed at tailoring this software<br />
for widespread NAMIC use.<br />
<br />
See our [[Projects:GroupwiseRegistration| Algorithm Project Page]] for more details.<br />
<br />
</div><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Approach, Plan </h1><br />
<br />
The registration algorithms are already available as C++ sourcecode. We plan to integrate them into the NAMIC community by:<br />
<br />
*Adapt sourcecode to utilize the command-line parsing mechanism that was designed for Slicer3 external modules. <br />
*Create a simple Slicer3 graphical user interface (external module) that allows a user to generate an atlas from their data. <br />
*User Feedback. During the January 2008 NAMIC all-hands meeting we will solicit feedback on this project from potential collaborators.<br />
<br />
</div><br />
<br />
<div style="width: 40%; float: left;"><br />
<br />
<h1>Progress</h1><br />
<br />
====Lead Up Work====<br />
<br />
<br />
====Jan 2008 Project Week====<br />
<br />
</div><br />
<br />
<br style="clear: both;" /><br />
<br />
</div><br />
<br />
<br />
===References===<br />
* S.K. Balci, P. Golland, M.E. Shenton, W.M. Wells III. Free-Form B-spline Deformation Model for Groupwise Registration. In Proceedings of MICCAI 2007 Statistical Registration Workshop: Pair-wise and Group-wise Alignment and Atlas Formation, 23-30, 2007.</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_GroupwiseReg&diff=193812008 Winter Project Week GroupwiseReg2007-12-13T19:05:01Z<p>Davisb: </p>
<hr />
<div>{|<br />
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2008_Winter_Project_Week]] ]]<br />
|valign="top"| [[Image:GroupwiseStackBiModal.PNG|thumb|350px|Figure 1: On the left is shown a stack of images <br />
and a sample pixel stack around a cortical region. On the left is shown the Gaussian(blue) fittet to <br />
a real sample from the dataset we used along with the non-parametric density estimate(red). <br />
Note that the distribution is bi-modal because of white matter-gray matter transaction.]]<br />
|}<br />
<br />
__NOTOC__<br />
===Key Investigators===<br />
* MIT: Serdar Balci, Polina Golland<br />
* Kitware: Brad Davis<br />
* SCI: Casey Goodlett<br />
<br />
<div style="margin: 20px;"><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Objective</h1><br />
<br />
The goal of this project is to expand the NAMIC Software Kit with the addition of an image-based atlas<br />
building algorithm that was developed by Polina Golland’s lab at MIT. The basic functionality of this software will<br />
be demonstrated to the NAMIC community at the January 2008 NAMIC all-hands meeting. A secondary<br />
goal is to begin the process of gathering usability and interface requests from targeted clinical collaborators.<br />
It is intended that users’ requests will be incorporated in to a future project aimed at tailoring this software<br />
for widespread NAMIC use.<br />
<br />
See our [[Projects:GroupwiseRegistration| Algorithm Project Page]] for more details.<br />
<br />
</div><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Approach, Plan </h1><br />
<br />
The registration algorithms are already available as C++ sourcecode. We plan to integrate them into the NAMIC community by:<br />
<br />
*Adapt sourcecode to utilize the command-line parsing mechanism that was designed for Slicer3 external modules. This will simplify the process of incorporating the algorithm into a Slicer3 module, provide a standardized look-and-feel to the command-line executable, and simplify the process of adding or removing parameters in the future.<br />
<br />
*Create a simple Slicer3 graphical user interface (external module) that allows a user to generate an atlas from their data. Algorithm data input and output directories will be specified by the user. A simplified subset of the algorithm parameters will be available for the users to modify within the module’s graphical user interface. In order to reduce complexity for the current design iteration, the algorithm will not be coordinated with Slicer3 data loading and saving.<br />
<br />
<br />
*User Feedback. During the January 2008 NAMIC all-hands meeting we will solicit feedback on this project from potential clinical collaborators. This data will be recorded on the project wiki page and should steer future development efforts for this project.<br />
<br />
<br />
</div><br />
<br />
<div style="width: 40%; float: left;"><br />
<br />
<h1>Progress</h1><br />
<br />
====Lead Up Work====<br />
<br />
<br />
====Jan 2008 Project Week====<br />
<br />
</div><br />
<br />
<br style="clear: both;" /><br />
<br />
</div><br />
<br />
<br />
===References===<br />
* S.K. Balci, P. Golland, M.E. Shenton, W.M. Wells III. Free-Form B-spline Deformation Model for Groupwise Registration. In Proceedings of MICCAI 2007 Statistical Registration Workshop: Pair-wise and Group-wise Alignment and Atlas Formation, 23-30, 2007.</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_GroupwiseReg&diff=193802008 Winter Project Week GroupwiseReg2007-12-13T19:02:33Z<p>Davisb: </p>
<hr />
<div>{|<br />
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2008_Winter_Project_Week]] ]]<br />
|valign="top"| [[Image:GroupwiseStackBiModal.PNG|thumb|350px|Figure 1: On the left is shown a stack of images <br />
and a sample pixel stack around a cortical region. On the left is shown the Gaussian(blue) fittet to <br />
a real sample from the dataset we used along with the non-parametric density estimate(red). <br />
Note that the distribution is bi-modal because of white matter-gray matter transaction.]]<br />
|}<br />
<br />
__NOTOC__<br />
===Key Investigators===<br />
* MIT: Serdar Balci, Polina Golland<br />
* Kitware: Brad Davis<br />
* SCI: Casey Goodlett<br />
<br />
<div style="margin: 20px;"><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Objective</h1><br />
<br />
The goal of this project is to expand the NAMIC Software Kit with the addition of an image-based atlas<br />
building algorithm that was developed by Polina Golland’s lab at MIT. The basic functionality of this software will<br />
be demonstrated to the NAMIC community at the January 2008 NAMIC all-hands meeting. A secondary<br />
goal is to begin the process of gathering usability and interface requests from targeted clinical collaborators.<br />
It is intended that users’ requests will be incorporated in to a future project aimed at tailoring this software<br />
for widespread NAMIC use.<br />
<br />
See our [[Projects:GroupwiseRegistration| Algorithm Project Page]] for more details.<br />
<br />
</div><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Approach, Plan </h1><br />
<br />
The registration algorithms are already available as C++ sourcecode. We plan to integrate them into the NAMIC community by:<br />
<br />
*Adapt sourcecode to utilize the command-line parsing mechanism that was designed for Slicer3 external modules. This will simplify the process of incorporating the algorithm into a Slicer3 module, provide a standardized look-and-feel to the command-line executable, and simplify the process of adding or removing parameters in the future.<br />
<br />
*Adapt sourcecode to utilize the command-line parsing mechanism that was designed for Slicer3 external modules. This will simplify the process of incorporating the algorithm into a Slicer3 module, provide a standardized look-and-feel to the command-line executable, and simplify the process of adding or removing parameters in the future.<br />
<br />
*User Feedback. During the January 2008 NAMIC all-hands meeting we will solicit feedback on this project from potential clinical collaborators. This data will be recorded on the project wiki page and should steer future development efforts for this project.<br />
<br />
<br />
</div><br />
<br />
<div style="width: 40%; float: left;"><br />
<br />
<h1>Progress</h1><br />
<br />
====Lead Up Work====<br />
<br />
<br />
====Jan 2008 Project Week====<br />
<br />
</div><br />
<br />
<br style="clear: both;" /><br />
<br />
</div><br />
<br />
<br />
===References===<br />
* S.K. Balci, P. Golland, M.E. Shenton, W.M. Wells III. Free-Form B-spline Deformation Model for Groupwise Registration. In Proceedings of MICCAI 2007 Statistical Registration Workshop: Pair-wise and Group-wise Alignment and Atlas Formation, 23-30, 2007.</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_GroupwiseReg&diff=193782008 Winter Project Week GroupwiseReg2007-12-13T19:01:36Z<p>Davisb: </p>
<hr />
<div>{|<br />
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2008_Winter_Project_Week]] ]]<br />
|valign="top"| [[Image:GroupwiseStackBiModal.PNG|thumb|350px|Figure 1: On the left is shown a stack of images <br />
and a sample pixel stack around a cortical region. On the left is shown the Gaussian(blue) fittet to <br />
a real sample from the dataset we used along with the non-parametric density estimate(red). <br />
Note that the distribution is bi-modal because of white matter-gray matter transaction.]]<br />
|}<br />
<br />
__NOTOC__<br />
===Key Investigators===<br />
* MIT: Serdar Balci, Polina Golland<br />
* Kitware: Brad Davis<br />
* SCI: Casey Goodlett<br />
<br />
<div style="margin: 20px;"><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Objective</h1><br />
<br />
The goal of this project is to expand the NAMIC Software Kit with the addition of an image-based atlas<br />
building algorithm that was developed by Polina Golland’s lab at MIT. The basic functionality of this software will<br />
be demonstrated to the NAMIC community at the January 2008 NAMIC all-hands meeting. A secondary<br />
goal is to begin the process of gathering usability and interface requests from targeted clinical collaborators.<br />
It is intended that users’ requests will be incorporated in to a future project aimed at tailoring this software<br />
for widespread NAMIC use.<br />
<br />
See our [[Projects:GroupwiseRegistration| Algorithm Project Page]] for more details.<br />
<br />
</div><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Approach, Plan </h1><br />
<br />
The registration algorithms are already available as C++ sourcecode. We plan to integrate them into the NAMIC community by:<br />
<br />
*Adapt sourcecode to utilize the command-line parsing mechanism that was designed for Slicer3 external modules. This will simplify the process of incorporating the algorithm into a Slicer3 module, provide a standardized look-and-feel to the command-line executable, and simplify the process of adding or removing parameters in the future.<br />
<br />
*Adapt sourcecode to utilize the command-line parsing mechanism that was designed for Slicer3 ex-<br />
ternal modules. This will simplify the process of incorporating the algorithm into a Slicer3 module,<br />
provide a standardized look-and-feel to the command-line executable, and simplify the process of<br />
adding or removing parameters in the future.<br />
<br />
*User Feedback. During the January 2008 NAMIC all-hands meeting we will solicit feedback on this<br />
project from potential clinical collaborators. This data will be recorded on the project wiki page and<br />
should steer future development efforts for this project.<br />
<br />
<br />
</div><br />
<br />
<div style="width: 40%; float: left;"><br />
<br />
<h1>Progress</h1><br />
<br />
====Lead Up Work====<br />
<br />
<br />
====Jan 2008 Project Week====<br />
<br />
</div><br />
<br />
<br style="clear: both;" /><br />
<br />
</div><br />
<br />
<br />
===References===<br />
* S.K. Balci, P. Golland, M.E. Shenton, W.M. Wells III. Free-Form B-spline Deformation Model for Groupwise Registration. In Proceedings of MICCAI 2007 Statistical Registration Workshop: Pair-wise and Group-wise Alignment and Atlas Formation, 23-30, 2007.</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_GroupwiseReg&diff=193772008 Winter Project Week GroupwiseReg2007-12-13T19:00:44Z<p>Davisb: </p>
<hr />
<div>{|<br />
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2008_Winter_Project_Week]] ]]<br />
|valign="top"| [[Image:GroupwiseStackBiModal.PNG|thumb|350px|Figure 1: On the left is shown a stack of images <br />
and a sample pixel stack around a cortical region. On the left is shown the Gaussian(blue) fittet to <br />
a real sample from the dataset we used along with the non-parametric density estimate(red). <br />
Note that the distribution is bi-modal because of white matter-gray matter transaction.]]<br />
|}<br />
<br />
__NOTOC__<br />
===Key Investigators===<br />
* MIT: Serdar Balci, Polina Golland<br />
* Kitware: Brad Davis<br />
* SCI: Casey Goodlett<br />
<br />
<div style="margin: 20px;"><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Objective</h1><br />
<br />
The goal of this project is to expand the NAMIC Software Kit with the addition of an image-based atlas<br />
building algorithm that was developed by Polina Golland’s lab at MIT. The basic functionality of this software will<br />
be demonstrated to the NAMIC community at the January 2008 NAMIC all-hands meeting. A secondary<br />
goal is to begin the process of gathering usability and interface requests from targeted clinical collaborators.<br />
It is intended that users’ requests will be incorporated in to a future project aimed at tailoring this software<br />
for widespread NAMIC use.<br />
<br />
See our [[Projects:GroupwiseRegistration| Algorithm Project Page]] for more details.<br />
<br />
</div><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Approach, Plan </h1><br />
<br />
The registration algorithms are already available as C++ sourcecode. We plan to integrate them into the NAMIC community by:<br />
<br />
*Adapt sourcecode to utilize the command-line parsing mechanism that was designed for Slicer3 ex-<br />
ternal modules. This will simplify the process of incorporating the algorithm into a Slicer3 module,<br />
provide a standardized look-and-feel to the command-line executable, and simplify the process of<br />
adding or removing parameters in the future.<br />
<br />
*Adapt sourcecode to utilize the command-line parsing mechanism that was designed for Slicer3 ex-<br />
ternal modules. This will simplify the process of incorporating the algorithm into a Slicer3 module,<br />
provide a standardized look-and-feel to the command-line executable, and simplify the process of<br />
adding or removing parameters in the future.<br />
<br />
*User Feedback. During the January 2008 NAMIC all-hands meeting we will solicit feedback on this<br />
project from potential clinical collaborators. This data will be recorded on the project wiki page and<br />
should steer future development efforts for this project.<br />
<br />
<br />
</div><br />
<br />
<div style="width: 40%; float: left;"><br />
<br />
<h1>Progress</h1><br />
<br />
====Lead Up Work====<br />
<br />
<br />
====Jan 2008 Project Week====<br />
<br />
</div><br />
<br />
<br style="clear: both;" /><br />
<br />
</div><br />
<br />
<br />
===References===<br />
* S.K. Balci, P. Golland, M.E. Shenton, W.M. Wells III. Free-Form B-spline Deformation Model for Groupwise Registration. In Proceedings of MICCAI 2007 Statistical Registration Workshop: Pair-wise and Group-wise Alignment and Atlas Formation, 23-30, 2007.</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_GroupwiseReg&diff=193762008 Winter Project Week GroupwiseReg2007-12-13T18:57:54Z<p>Davisb: /* June 2007 Project Week */</p>
<hr />
<div>{|<br />
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2008_Winter_Project_Week]] ]]<br />
|valign="top"| [[Image:GroupwiseStackBiModal.PNG|thumb|350px|Figure 1: On the left is shown a stack of images <br />
and a sample pixel stack around a cortical region. On the left is shown the Gaussian(blue) fittet to <br />
a real sample from the dataset we used along with the non-parametric density estimate(red). <br />
Note that the distribution is bi-modal because of white matter-gray matter transaction.]]<br />
|}<br />
<br />
__NOTOC__<br />
===Key Investigators===<br />
* MIT: Serdar Balci, Polina Golland<br />
* Kitware: Brad Davis<br />
* SCI: Casey Goodlett<br />
<br />
<div style="margin: 20px;"><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Objective</h1><br />
<br />
The goal of this project is to expand the NAMIC Software Kit with the addition of an image-based atlas<br />
building algorithm that was developed by Polina Golland’s lab at MIT. The basic functionality of this software will<br />
be demonstrated to the NAMIC community at the January 2008 NAMIC all-hands meeting. A secondary<br />
goal is to begin the process of gathering usability and interface requests from targeted clinical collaborators.<br />
It is intended that users’ requests will be incorporated in to a future project aimed at tailoring this software<br />
for widespread NAMIC use.<br />
<br />
See our [[Projects:GroupwiseRegistration| Algorithm Project Page]] for more details.<br />
<br />
</div><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Approach, Plan </h1><br />
<br />
ABCD<br />
<br />
</div><br />
<br />
<div style="width: 40%; float: left;"><br />
<br />
<h1>Progress</h1><br />
<br />
====Lead Up Work====<br />
<br />
<br />
====Jan 2008 Project Week====<br />
<br />
</div><br />
<br />
<br style="clear: both;" /><br />
<br />
</div><br />
<br />
<br />
===References===<br />
* S.K. Balci, P. Golland, M.E. Shenton, W.M. Wells III. Free-Form B-spline Deformation Model for Groupwise Registration. In Proceedings of MICCAI 2007 Statistical Registration Workshop: Pair-wise and Group-wise Alignment and Atlas Formation, 23-30, 2007.</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_GroupwiseReg&diff=193752008 Winter Project Week GroupwiseReg2007-12-13T18:56:12Z<p>Davisb: </p>
<hr />
<div>{|<br />
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2008_Winter_Project_Week]] ]]<br />
|valign="top"| [[Image:GroupwiseStackBiModal.PNG|thumb|350px|Figure 1: On the left is shown a stack of images <br />
and a sample pixel stack around a cortical region. On the left is shown the Gaussian(blue) fittet to <br />
a real sample from the dataset we used along with the non-parametric density estimate(red). <br />
Note that the distribution is bi-modal because of white matter-gray matter transaction.]]<br />
|}<br />
<br />
__NOTOC__<br />
===Key Investigators===<br />
* MIT: Serdar Balci, Polina Golland<br />
* Kitware: Brad Davis<br />
* SCI: Casey Goodlett<br />
<br />
<div style="margin: 20px;"><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Objective</h1><br />
<br />
The goal of this project is to expand the NAMIC Software Kit with the addition of an image-based atlas<br />
building algorithm that was developed by Polina Golland’s lab at MIT. The basic functionality of this software will<br />
be demonstrated to the NAMIC community at the January 2008 NAMIC all-hands meeting. A secondary<br />
goal is to begin the process of gathering usability and interface requests from targeted clinical collaborators.<br />
It is intended that users’ requests will be incorporated in to a future project aimed at tailoring this software<br />
for widespread NAMIC use.<br />
<br />
See our [[Projects:GroupwiseRegistration| Algorithm Project Page]] for more details.<br />
<br />
</div><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Approach, Plan </h1><br />
<br />
ABCD<br />
<br />
</div><br />
<br />
<div style="width: 40%; float: left;"><br />
<br />
<h1>Progress</h1><br />
<br />
====June 2007 Project Week====<br />
During this Project Week, we did a lot of algorithmic design work, focusing on leveraging optimal or geodesic path information to provide for volumetric segmentations of fiber bundles. Working with Marek Kubicki and the Harvard DBP, we were able to begin the process of applying our algorithm to the full cingulum bundle with new labelmaps and to a new fiber bundle - Arcuate. We have recently achieved significant results in volumetric segmentations using a locally-constrained region-based technique (see the images above).<br />
<br />
====Jan 2007 Project Half Week====<br />
We finished the itkDirectionalIterator which will be needed in the Fast Sweeping implementation. Furthermore, we made progress in porting our Matlab code to ITK.<br />
<br />
</div><br />
<br />
<br style="clear: both;" /><br />
<br />
</div><br />
<br />
<br />
===References===<br />
* J. Melonakos, M. Niethammer, V. Mohan, M. Kubicki, J. Miller, A. Tannenbaum. Locally-Constrained Region-Based Methods for DW-MRI Segmentation. Submitted to MMBIA 2007.<br />
* V. Mohan, J. Melonakos, M. Niethammer, M. Kubicki, and A. Tannenbaum. Finsler Level Set Segmentation for Imagery in Oriented Domains. BMVC 2007.<br />
* J. Melonakos, V. Mohan, M. Niethammer, K. Smith, M. Kubicki, and A. Tannenbaum. Finsler Tractography for White Matter Connectivity Analysis of the Cingulum Bundle. MICCAI 2007.<br />
* J. Melonakos, E. Pichon, S. Angenet, and A. Tannenbaum. Finsler Active Contours. IEEE Transactions on Pattern Analysis and Machine Intelligence, to appear in 2007.<br />
* E. Pichon and A. Tannenbaum. Curve segmentation using directional information, relation to pattern detection. In IEEE International Conference on Image Processing (ICIP), volume 2, pages 794-797, 2005.<br />
* E. Pichon, C-F Westin, and A. Tannenbaum. A Hamilton-Jacobi-Bellman approach to high angular resolution diffusion tractography. In International Conference on Medical Image Computing and Computer Assisted Intervention (MICCAI), pages 180-187, 2005.</div>Davisbhttps://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_GroupwiseReg&diff=193742008 Winter Project Week GroupwiseReg2007-12-13T18:54:41Z<p>Davisb: </p>
<hr />
<div>{|<br />
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2008_Winter_Project_Week]] ]]<br />
|valign="top"| [[Image:GroupwiseStackBiModal.PNG|thumb|350px|Figure 1: On the left is shown a stack of images <br />
and a sample pixel stack around a cortical region. On the left is shown the Gaussian(blue) fittet to <br />
a real sample from the dataset we used along with the non-parametric density estimate(red). <br />
Note that the distribution is bi-modal because of white matter-gray matter transaction.]]<br />
|}<br />
<br />
__NOTOC__<br />
===Key Investigators===<br />
* MIT: Serdar Balci, Polina Golland<br />
* Kitware: Brad Davis<br />
* SCI: Casey Goodlett<br />
<br />
<div style="margin: 20px;"><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Objective</h1><br />
<br />
The goal of this project is to expand the NAMIC Software Kit with the addition of an image-based atlas<br />
building algorithm that was developed by Polina Golland’s lab at MIT. The basic functionality of this software will<br />
be demonstrated to the NAMIC community at the January 2008 NAMIC all-hands meeting. A secondary<br />
goal is to begin the process of gathering usability and interface requests from targeted clinical collaborators.<br />
It is intended that users’ requests will be incorporated in to a future project aimed at tailoring this software<br />
for widespread NAMIC use.<br />
<br />
See our [[Projects:GroupwiseRegistration| Algorithm Project Page]] for more details.<br />
<br />
</div><br />
<br />
<div style="width: 27%; float: left; padding-right: 3%;"><br />
<br />
<h1>Approach, Plan </h1><br />
<br />
<br />
<br />
<div style="width: 40%; float: left;"><br />
<br />
<h1>Progress</h1><br />
<br />
====June 2007 Project Week====<br />
During this Project Week, we did a lot of algorithmic design work, focusing on leveraging optimal or geodesic path information to provide for volumetric segmentations of fiber bundles. Working with Marek Kubicki and the Harvard DBP, we were able to begin the process of applying our algorithm to the full cingulum bundle with new labelmaps and to a new fiber bundle - Arcuate. We have recently achieved significant results in volumetric segmentations using a locally-constrained region-based technique (see the images above).<br />
<br />
====Jan 2007 Project Half Week====<br />
We finished the itkDirectionalIterator which will be needed in the Fast Sweeping implementation. Furthermore, we made progress in porting our Matlab code to ITK.<br />
<br />
</div><br />
<br />
<br style="clear: both;" /><br />
<br />
</div><br />
<br />
<br />
===References===<br />
* J. Melonakos, M. Niethammer, V. Mohan, M. Kubicki, J. Miller, A. Tannenbaum. Locally-Constrained Region-Based Methods for DW-MRI Segmentation. Submitted to MMBIA 2007.<br />
* V. Mohan, J. Melonakos, M. Niethammer, M. Kubicki, and A. Tannenbaum. Finsler Level Set Segmentation for Imagery in Oriented Domains. BMVC 2007.<br />
* J. Melonakos, V. Mohan, M. Niethammer, K. Smith, M. Kubicki, and A. Tannenbaum. Finsler Tractography for White Matter Connectivity Analysis of the Cingulum Bundle. MICCAI 2007.<br />
* J. Melonakos, E. Pichon, S. Angenet, and A. Tannenbaum. Finsler Active Contours. IEEE Transactions on Pattern Analysis and Machine Intelligence, to appear in 2007.<br />
* E. Pichon and A. Tannenbaum. Curve segmentation using directional information, relation to pattern detection. In IEEE International Conference on Image Processing (ICIP), volume 2, pages 794-797, 2005.<br />
* E. Pichon, C-F Westin, and A. Tannenbaum. A Hamilton-Jacobi-Bellman approach to high angular resolution diffusion tractography. In International Conference on Medical Image Computing and Computer Assisted Intervention (MICCAI), pages 180-187, 2005.</div>Davisb