Difference between revisions of "Documentation/Labs/Segmentations"

From Slicer Wiki
Jump to: navigation, search
Line 68: Line 68:
  
 
CLI modules are not impacted. No change is needed in interface definition XML files or in the module implementation.
 
CLI modules are not impacted. No change is needed in interface definition XML files or in the module implementation.
 +
 +
== Switch between scalar/labelmap volume ==
 +
Previously it was possible to switch between scalar/labelmap type by changing an attribute value. Now scalar/labelmap volumes are stored in different classes, therefore a new node has to be created for the converted volume. Conversion options:
 +
* Use the ''Cast Scalar Volume'' module to convert between scalar/labelmap volumes.
 +
* Conversion can be performed by creating a new node for the target representation and passing the image data of the source node to the target node. For example, conversion to labelmap volume:
 +
 +
    scalarVolume = slicer.util.getNode('MRHead')
 +
    labelVolume = slicer.modules.volumes.logic().CreateAndAddLabelVolume(scalarVolume,scalarVolume.GetName()+'-label')
 +
    labelVolume.SetAndObserveImageData(scalarVolume.GetImageData())
 +
    slicer.mrmlScene.RemoveNode(scalarVolume)

Revision as of 18:23, 15 July 2015

Home < Documentation < Labs < Segmentations

Motivation

See

Features

  • TODO

Design and implementation

  • TODO
Segmentations module, Visualizing model in 2D and 3D, also showing merged labelmap in 2D

Code

Segmentation modules is part of the SlicerRT extension during development and will be moved to trunk when the developments are complete:

https://subversion.assembla.com/svn/slicerrt/branches/SegmentationObject/

Slicer core changes

https://github.com/SlicerRT/Slicer/tree/segmentation-node

Future features

  • TODO

Issues

  • TODO

Topics to discuss

  • TODO

Notes

  • TODO

vtkMRMLLabelMapVolumeNode integration

Slicer core updated, see this commit: https://github.com/Slicer/Slicer/commit/e4ffa1f6dcfafc1ca8f0015ecf02a0c23a8bd503

Module update instructions

Module selectors that expect a labelmap volume should be changed

From:

   self.outputSelector.nodeTypes = ( ("vtkMRMLScalarVolumeNode"), "" )
   self.outputSelector.addAttribute( "vtkMRMLScalarVolumeNode", "LabelMap", 1)

to

   self.outputSelector.nodeTypes = ["vtkMRMLLabelMapVolumeNode"]


From:

   self.outputSelector.nodeTypes = ( ("vtkMRMLScalarVolumeNode"), "" )
   self.outputSelector.addAttribute( "vtkMRMLScalarVolumeNode", "LabelMap", 0)

to

   self.outputSelector.nodeTypes = ["vtkMRMLScalarVolumeNode"]
  • Note: This changes the value assigned to nodeTypes from a Tuple with 2 elements to a List with only one element. Additional information on the Tuple syntax can be found here: https://wiki.python.org/moin/TupleSyntax

CLI modules

CLI modules are not impacted. No change is needed in interface definition XML files or in the module implementation.

Switch between scalar/labelmap volume

Previously it was possible to switch between scalar/labelmap type by changing an attribute value. Now scalar/labelmap volumes are stored in different classes, therefore a new node has to be created for the converted volume. Conversion options:

  • Use the Cast Scalar Volume module to convert between scalar/labelmap volumes.
  • Conversion can be performed by creating a new node for the target representation and passing the image data of the source node to the target node. For example, conversion to labelmap volume:
   scalarVolume = slicer.util.getNode('MRHead')
   labelVolume = slicer.modules.volumes.logic().CreateAndAddLabelVolume(scalarVolume,scalarVolume.GetName()+'-label')
   labelVolume.SetAndObserveImageData(scalarVolume.GetImageData())
   slicer.mrmlScene.RemoveNode(scalarVolume)