2016 Summer Project Week/Segmentations Integration
From NAMIC Wiki
Home < 2016 Summer Project Week < Segmentations Integration
Key Investigators
- Csaba Pinter
- Andras Lasso
- Steve Pieper
- Jean-Christophe Fillion-Robin (to be consulted remotely)
Project Description
Objective
- Integration of the Segmentation infrastructure into Slicer core
- The infrastructure contains the following components:
- SegmentationCore: Pure VTK implementation of the segmentation object, oriented VTK image data and utilities, and the automated conversion mechanism
- Segmentation MRML: Segmentation MRML node, display node, storage node, displayable managers
- Segmentations module: Slicer module for handling segmentation nodes, various re-usable widgets, and subject hierarchy plugins
- Segment Editor: Slicer module for editing segmentation nodes directly. Similar to Editor, but has a C++ core, and extended functionality that makes use of the advanced Segmentations features
- Segment Morphology: Slicer module for performing expand/shrink and logical operations (union, intersection, subtraction) on segments. Its logic can be used in Segment Editor effects
- Segment Registration (?): Distance map based registration of segmentations (from SlicerProstate::DistanceMapBasedRegistration, integration TBD)
- Presentation slides explaining the motivation, features, and details of the infrastructure
Approach, Plan
- Move classes into Slicer core
- Convert to Slicer core coding conventions (curly brackets in line with the contained block)
- vtkSegmentationCore -> vtkAddon?
- Segmentations/MRML -> Libs/MRML/Core
- Segmentations/MRMLDM -> Libs/MRML/DisplayableManager
- Segmentations/Widgets -> MRML/Widgets?
- Segmentations/EditorEffects -> ?
- Segmentations -> Modules/Loadable
- SegmentEditor -> Modules/Scripted
- Discuss possible integration vtkOrientedImageData to VTK core
Progress
To try: download latest Slicer nightly build, install SlicerRT extension and open the Segmentations module and Segment editor module.
Segmentation highlights
- Improved display: real-time synchronized display of segments in 2D (simultaneous contours and solid fill) and 3D; any number of segmentations can be shown
- Segments can now overlap (can be enabled/disabled for individual segments or a group of segments)
- Import/export from/to labelmaps and models
- Read/writ from/to DICOM segmentation objects (WIP) and standard VTK file formats
- Copy/mode segments between segmentations
= Segment editor highlights
- Editing is allowed on arbitrary plane orientation and at different resolution than the master volume
- Any segment (or a group of segments) can be used as mask
- Intensity threshold can be applied for all effects (only modifications to regions of a certain intensity range)
- Overwrite/overlap control is available for all effects (segments may be allowed to overlap with any, visible, or no other segments)
- Editor widget can be very easily embedded into any module's GUI
- Painting on 2D view and 3D views
- Higher-quality erosion and dilation (arbitrarily-sized spherical kernel)
- New logical operations effects: combine segments by add/remove/copy operations, invert/fill/clear segment (for example for scaffolding or mold generation for 3D printing)
- New labelmap smoothing effect: median, morphological opening, closing, Gaussian
- Customizable slice thickness for slice-based effects