Difference between revisions of "2012 Summer Project Week:EditorExtensions"

From NAMIC Wiki
Jump to: navigation, search
 
(12 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
Image:PW-MIT2012.png|[[2012_Summer_Project_Week#Projects|Projects List]]
 
Image:PW-MIT2012.png|[[2012_Summer_Project_Week#Projects|Projects List]]
 
Image:Slicer-GrowCutCL.png|OpenCL Implementation of GrowCut running in the Editor Module.  (See [http://www.youtube.com/watch?v=dfu2gugHLHs&feature=plcp demo video])
 
Image:Slicer-GrowCutCL.png|OpenCL Implementation of GrowCut running in the Editor Module.  (See [http://www.youtube.com/watch?v=dfu2gugHLHs&feature=plcp demo video])
 +
IMAGE:Slicer-WatershedMarkers.png|Input into the ITK's morphological watershed from markers.
 +
Image:Slicer-WatershedFromMarkers.png|Resulting segmentation by morphological watershed from markers.
 
</gallery>
 
</gallery>
  
Line 9: Line 11:
 
* Isomics: Steve Pieper
 
* Isomics: Steve Pieper
 
* GI: Jim Miller
 
* GI: Jim Miller
 +
* BWH: Yi Gao
 +
* GaTech: Ivan Kolasev
 +
* NIH: Brad Lowekamp (C)
  
 
<div style="margin: 20px;">
 
<div style="margin: 20px;">
Line 23: Line 28:
 
<h3>Approach, Plan</h3>
 
<h3>Approach, Plan</h3>
  
The goal at project week is to discuss these issues and formulate a standard plan that can be used by all slicer developers.
+
An example implementation of GrowCut has been implemented as a test.
  
Some desirable features of a solution:
+
During project week we would like to:
 +
* Discuss the implementation with potential users and developers in order to generalize the approach and improve the interface.
 +
* Discuss other algorithms suitable for this apuproach
 +
* Possibly test this module on multiple CPU/GPU options to compare performance. (may be tricking since installation is not automated)
 +
* Identify OpenCL/GPU programming experts to help evaluate and improve the implementation.
  
* easy for developers to write tests that capture the full workflow
+
 
** distribution of tests as extensions as part of the debugging and support process
+
See the repository for more information: https://github.com/pieper/SlicerCL
** integration with QtTesting framework to define tests 'by doing'
+
 
* same tests should be available in CTest and BIST (ideally this will happen automatically)
+
(Note that use of this module requires installation of PyOpenCL into the slicer python build tree - see [https://github.com/pieper/SlicerCL/blob/master/Experiments/slicercl.sh this example script].  Also note that the current implementation depends on some changes to the Editor module that only exist in [https://github.com/pieper/Slicer/tree/threeDEditor a threeDEditor branch].)
* interface features:
 
** should allow selection of all tests or a subset of tests
 
** should allow running in a loop
 
** should present a summary of success/failure
 
* (possible feature) dialog when slicer first installs that suggests running the tests
 
* (possible feature) integration of performance testing (e.g. render speed)
 
* (possible feature) integration with CDash so users can submit test results
 
  
 
</div>
 
</div>
Line 44: Line 46:
  
 
<h3>Progress</h3>
 
<h3>Progress</h3>
 +
* Topic was generalized to include editor effects based on ITK and VTK
 +
** SimpleITK tools (Brad)
 +
*** Marker based watersheds [1]
 +
*** Binary watershed to split object [1]
 +
*** DoubleThresholding
 +
*** Current prototypes are on [https://github.com/blowekamp/Slicer-IASEM github].
 +
** Porting of CLI tools to run as steered segmenters (Yi, Ivan)
 +
* Productive discussions with other developers about future strategies and uses of OpenCL (pyopencl)
  
* [https://github.com/pieper/Slicer/tree/1922-bist a prototype implementation as a scripted module] is being developed using a factory-style mechanism where modules can register self-tests with slicer that will then be optionally run as part of the self-testing process.  [https://github.com/pieper/Slicer/blob/75f79b165ac1f45571ae41c76e2b7d632d27853a/Modules/Scripted/Scripts/SelfTests.py Prototype scripted module]
 
* The issue is being tracked as a [http://na-mic.org/Bug/view.php?id=1922 feature request in mantis]
 
* [https://github.com/pieper/Slicer/blob/7f43f0388a80735be5346b603b009f8d9a741e62/Modules/Scripted/EditorLib/Testing/ThresholdThreadingTest.py Example of a test]
 
  
 
</div>
 
</div>
Line 66: Line 73:
  
 
==References==
 
==References==
 +
 +
[1] Beare R., Lehmann G. (2006). The watershed transform in ITK - discussion and new development.  http://hdl.handle.net/1926/202
  
 
</div>
 
</div>

Latest revision as of 13:51, 22 June 2012

Home < 2012 Summer Project Week:EditorExtensions


Key Investigators

  • Isomics: Steve Pieper
  • GI: Jim Miller
  • BWH: Yi Gao
  • GaTech: Ivan Kolasev
  • NIH: Brad Lowekamp (C)

Objective

Provide a framework for Streered Segmentation in the Editor Module.

Approach, Plan

An example implementation of GrowCut has been implemented as a test.

During project week we would like to:

  • Discuss the implementation with potential users and developers in order to generalize the approach and improve the interface.
  • Discuss other algorithms suitable for this apuproach
  • Possibly test this module on multiple CPU/GPU options to compare performance. (may be tricking since installation is not automated)
  • Identify OpenCL/GPU programming experts to help evaluate and improve the implementation.


See the repository for more information: https://github.com/pieper/SlicerCL

(Note that use of this module requires installation of PyOpenCL into the slicer python build tree - see this example script. Also note that the current implementation depends on some changes to the Editor module that only exist in a threeDEditor branch.)

Progress

  • Topic was generalized to include editor effects based on ITK and VTK
    • SimpleITK tools (Brad)
      • Marker based watersheds [1]
      • Binary watershed to split object [1]
      • DoubleThresholding
      • Current prototypes are on github.
    • Porting of CLI tools to run as steered segmenters (Yi, Ivan)
  • Productive discussions with other developers about future strategies and uses of OpenCL (pyopencl)


Delivery Mechanism

This work will be delivered to the NA-MIC Kit as a (please select the appropriate options by noting YES against them below)

  1. ITK Module
  2. Slicer Module - YES
    1. Built-in - YES
    2. Extension -- commandline
    3. Extension -- loadable
  3. Other (Please specify)

References

[1] Beare R., Lehmann G. (2006). The watershed transform in ITK - discussion and new development. http://hdl.handle.net/1926/202