Multi Label Segmentation
Revision as of 21:41, 28 January 2011 by (username removed)
Using multiple segmentations with the Segmentation bundle
Following a proposal of Sebastian Ordas to support multi-label segmentations, this page will be used to sketch future changes to the Segmentation bundle and the related framework.
Shortcomings of the current implementation
- 8-bit images are used for segmentations by default, wasting 7 of 8 bits, occupying far more memory than technically necessary
Wishlist
- what is not possible or cumbersome and should be changed?
- multiple labels on the same segmentation image: have 8-bit images with 0 value as background and the remaining 255 values as labeled objects.
- what enhancements would help in which situations?
- have label "lock"/"editable" boolean property
- "stick" label boundaries to neighboring labels: e.g. if the label is smoothed, so will be its neighbors
- "background" label should be created by default, and should also be possible to lock it
- useful resources:
- vtkEdge paintbrush classes e.g. http://www.vtkedge.org/doc/nightly/html/classvtkKWEPaintbrushMergeSketches.html#_details
- itkSnap http://www.itksnap.org/pmwiki/pmwiki.php
- to support multi-label images, ITK's label object classes (http://www.insight-journal.org/browse/publication/176) could be useful
- Segmentation module in Amira (as it used to be in v3.1)http://www.amira.com/images/stories/pdf/31/Amira31-manual.pdf (see Sec. 2.5)
- how does I/O work?
- do we need a new data type for MITK (derived from BaseData?)
- no. i think we can use 8-bit images and assign a color to each label as usual
- how could these be mapped types for rendering?
- we can use the same mappers we have so far
Implications on the implementation
- what parts of MITK would need to be changed?
- mitk::Tool, mitk::ToolManager, mitk::ContourUtils, ...
- what needs to be changed in the Segmentation view?
- new controls:
- label manager widget ( e.g. have a QmitkDataStorageTable): should easily allow to (multiple) select labels for visualization or editing/locking toggling, change their representation (filled or border line), enable volume render feedback, etc.
- new controls:
- avoid connection with Data Manager for data selection (IMHO: the current working/reference node selection approach via the DataManager is not user friendly, because the segmentation bundle requires a lot of data (multiple) selection and deselection)
Proposed working plan
- Stage 1: add lock/edit feature to the current approach
- Add "binaryimage.locked" bool propery to data node (e.g. in mitk::ImageMapperGL2D::SetDefaultProperties() ). Should be set to TRUE by default.
- In tool manager:
- m_ToolManager->GetEditableData();
- m_ToolManager->GetLockedData();
- For every mitk::Tool, upon finish editing (e.g. mouse release), correct the feedback image for every intersection with other editable/locked segmentations
- The Segmentation Interpolation should also respect other locked and editable labels
- Stage 2: do not use binary images any more
- Stage 3: