Difference between revisions of "2010 Winter Project Week ProstateSeg"

From NAMIC Wiki
Jump to: navigation, search
 
(7 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
Image:PW-SLC2010.png|[[2010_Winter_Project_Week#Projects|Projects List]]
 
Image:PW-SLC2010.png|[[2010_Winter_Project_Week#Projects|Projects List]]
 
Image:ProstateSegResults.png|Prostate segmentation result with the old (RandomWalk) algorithm - already integrated into Slicer
 
Image:ProstateSegResults.png|Prostate segmentation result with the old (RandomWalk) algorithm - already integrated into Slicer
 +
Image:ProstateSegShapeBased.png|Prostate segmentation result using the new shape-based algorithm, using a command-line module (ProstateSegSB)
 
</gallery>
 
</gallery>
  
Line 30: Line 31:
  
 
<h3>Progress</h3>
 
<h3>Progress</h3>
The algorithm can be compiled using CMake on both linux and windows, test data are available.
+
*The segmentation Slicer module has been created (available at http://svn.na-mic.org/NAMICSandBox/trunk/Queens/ProstateSeg/ShapeBased)
 
+
*Tested segmentation on 3 images, execution time is 10-20 minutes
 +
*Shape learning algorithm (for segmentation of any other shape than prostate) is added to the repository, and tested on Linux and Windows
 +
*To do: add as an extension module (partially done), add test, tutorial
 
</div>
 
</div>
 
</div>
 
</div>
Line 46: Line 49:
  
 
===Training ===
 
===Training ===
 +
* each directory contains an executable together with a bash script
 
*Registration
 
*Registration
**alignTrainingShapes.bash (execution time is about 30min)
+
**alignTrainingShapes.bash (execution time is about 30min) (AF: with the default value of 50000 points, execution time is few (>3?) hours)
 
***make isotropic (z direction)
 
***make isotropic (z direction)
 
***register
 
***register
Line 58: Line 62:
 
**alignTrainingShapesNonIso.bash: faster but not that accurate
 
**alignTrainingShapesNonIso.bash: faster but not that accurate
 
*Convert from binary to level set
 
*Convert from binary to level set
**ShapeBased\_reg\alignTrainingShapes\toSFLS\ => 1 executable
+
**ShapeBased\_reg\alignTrainingShapes\toSFLS\ => 1 executable + 1 script (toSFLS.bash)
 
***Input: nrrd binary image
 
***Input: nrrd binary image
 
***Output: level set description
 
***Output: level set description
Line 76: Line 80:
 
===To do===
 
===To do===
 
*Send intermediate training data (to test the training steps) => Yi
 
*Send intermediate training data (to test the training steps) => Yi
*What does "douher" mean? =? Yi
 
*Test Linux compilation => Andriy
 
*Test Windows compilation => Andras
 
 
 
*Slicer module for segmentation:
 
*Slicer module for segmentation:
**what is the min/max value for segmentation threshold? (0..2)? => Yi
+
**Add/use the boost library in an extension module
**How to add model files to the extension package? => Katie
+
**Filter for .sm file extension
**How to use the boost library? => Katie
+
**Add model files to the package (or upload the model to the project wiki)
 +
*Add a quick test

Latest revision as of 16:41, 8 January 2010

Home < 2010 Winter Project Week ProstateSeg


Key Investigators

  • Andras Lasso, Gabor Fichtinger (Queen's University)
  • Yi Gao, Allen Tannenbaum (Georgia Tech)
  • Andriy Fedorov (BWH)

Objective

Implement a Slicer module from the shape-based prostate segmentation algorithm developed by Yi Gao et al.

Approach, Plan

Implement as a command-line module that can be downloaded and installed as a Slicer extension. Add automatic testing.

Progress

  • The segmentation Slicer module has been created (available at http://svn.na-mic.org/NAMICSandBox/trunk/Queens/ProstateSeg/ShapeBased)
  • Tested segmentation on 3 images, execution time is 10-20 minutes
  • Shape learning algorithm (for segmentation of any other shape than prostate) is added to the repository, and tested on Linux and Windows
  • To do: add as an extension module (partially done), add test, tutorial

References

  • Yi Gao, Romeil Sandhu, Gabor Fichtinger, Allen Tannenbaum, A Coupled Global Registration and Segmentation Framework with Application to the Magnetic Resonance Prostate Imagery, IEEE Trans Med Imaging (in review)


Notes

Training

  • each directory contains an executable together with a bash script
  • Registration
    • alignTrainingShapes.bash (execution time is about 30min) (AF: with the default value of 50000 points, execution time is few (>3?) hours)
      • make isotropic (z direction)
      • register
        • ShapeBased\_reg\src\imageRegByPointSet\c\affine\ => 1 executable
          • pairwise image registration (there are many supporting files in ShapeBased\_reg\src; the result is one executable)
          • input: two images from ShapeBased\_reg\trainingShapes
          • output: transformed moving image in uchar nrrd image format
      • make anisotropic (maybe this step could be skipped, to have an atlas with isotropic images)
      • results are copied to ShapeBased\_reg\alignTrainingShapes
    • alignTrainingShapesNonIso.bash: faster but not that accurate
  • Convert from binary to level set
    • ShapeBased\_reg\alignTrainingShapes\toSFLS\ => 1 executable + 1 script (toSFLS.bash)
      • Input: nrrd binary image
      • Output: level set description
    • For each binary image a level set image is generated and saved to ShapeBased\_reg\alignTrainingShapes\toSFLS
  • Learning using PCA
    • ProstateSeg\ShapeBased\_reg\alignTrainingShapes\toSFLS\learn => 1 executable
      • Input: shapeList.txt list of all level set files
      • Output: mean shape and i-th eigen shape (multiplied by the eigen value),
    • Execution time is about 1 minute, repeated for each eigen shape
  • Images are flipped, but the images to be segmented (or the training shapes) could be flipped instead.

Segmentation

  • ProstateSeg\ShapeBased\bin\wholeSeg => 1 executable (wholeseg)
    • Input: image to be segmented, and two points (at the left and right side of the prostate, on a center axial slice in IJK space)
    • Output: ?

To do

  • Send intermediate training data (to test the training steps) => Yi
  • Slicer module for segmentation:
    • Add/use the boost library in an extension module
    • Filter for .sm file extension
    • Add model files to the package (or upload the model to the project wiki)
  • Add a quick test