Interactive segmentation

Jump to navigation Jump to search


Since October 2007 MITK comes with a new program module (functionality) for manual 2D segmentation (called SliceBasedSegmentation). As this is probably the most complex public functionality, we provide a short overview of it here.

The module is well tested and should be nearly bug-free (wishful thinking). However, if you find anything to behave strangely or obviously wrong please send a bug report to the MITK mailing list! By the way: best bug reports are those that come with a patch.

We always welcome reports from users, so even if you do not find bugs but just think this is a useful tool, just drop us a note and tell us in what kind of project it helped you. You can either do that publicly on the MITK mailing list or, if you prefer non-public mail to mitk AT

Features and known limitations

  • Segmentation of 3D gray value images
    • supported: rotated images (images coordinate system not the same as world coordinate system) like from MRT
    • LIMITATION: only the three "natural" image slice directions are supported (reason: on rotated planes the pixel filling operations would cause problems)
  • Managing segmentations (New, Delete, Load, Save)
    • NOT supported (probably won't ever be): undo of these operations
    • feature: creating segmentations by thresholding the image
    • feature: changing color, opacity for each segmentation
  • Six tools for manual segmentation. All segmentation tools work on single 2D slices of the image.
    • Full undo support for all tools, undo information is stored as compressed difference images, so it does not fill your memory too much
  • Interpolation of missing segmentation slices from neighboring slices
    • supported in all three image directions
    • Full undo support
  • Convenience methods:
    • cropping of a segmentation: image size is reduced to the necessary minimum, empty borders are removed
    • surface creation: marching cubes surface generation, done in the background, not very fast
    • volumetry: calculated the volume in milliliters, this number is not permanently updated when more changes are done to the segmentation
    • histogram: a histogram and simple statistics are calculated for the segmented part of an image
  • Software design feature: easy to extend with your own tools
    • Documentation about how to extent the application can be found here

Demo video

There is a short video demonstration of the module. It is not well directed or nicely planned, but it gives you an idea of the tool. Here comes a script describing the movie:

  • A new segmentation is created, organ type (Liver) and segmentation name (left at default "Liver") are selected
  • Tools are demonstrated in sagittal view
    • Region grower is used by dragging the mouse up or down
    • With the correction tool you draw a stroke and the tool does "something useful"
      • Stroke starts and ends inside a segmentation -> something is added
      • Stroke starts and ends outside a segmentation -> something is removed
      • In and out several times -> above points are done for individual segments
  • Add and substract tools draw a closed contour which is added or substracted to/from your segmentation. Mode of operation can be toggled by pressing CRTL
    • A filling tool tries to find a hole in the segmentation and will fill it
    • An erase tool erases a whole connected segmentation
  • A fast (and uncomplete and unprecise) liver segmentation is done
    • Mainly region growing and correction are used
    • Region growing has a "leakage detection". When the segmentation runs out in some place you can click this part. A skeletonization of the segmentation is done and a "nice" cut is determined (if possible).
  • Interpolation is demonstrated
    • An empty (!!) slice which has neighboring slices that are not empty will be interpolated
    • The suggested interpolation is displayed as a contour in the segmentation's color
    • You can accept interpolations for single slices (fast) or for all slices (take a little longer)
    • "Accept interpolation" supports undo, like all of the drawing tools of this functionality.
  • A surface is created from the binary image. This task is done in a background task so you could do something else in this time (like segment the next organ)
  • The volume of the segmentation is calculated
  • Pixel display can be either smoothed or unsmoothed
  • You can change display properties like color and opacity in a context menu
  • If your image is easy to segment by a thresholding operation, you can create a new segmenation by such an operation
    • This is demonstrated for roughly the bones (but unfortunately the kidneys are also included)
  • When you have several segmentations, only the selected one(s) are visible. To see all of them, you can select more than one.
    • While drawing, you can toggle the visibility of selected segmentations by just holding down the space key
    • Next to each segmentation you see a number. When you press this key on you keyboard, the corresponding segmentation is selected
    • Also all tools have a hotkey assigned so you don't have to move your mouse much to switch between them