Page MenuHomePhabricator

Segmentation masks not displayed in 3D render window
Open, NormalPublic

Description

A segmentation mask that was created on one of the three 2D render windows is not visible on the 2D planes inside the 3D render window.

To reproduce:

  1. start MITK workbench, load an image
  2. open the segmentation view and create a new segmentation (node)
  3. draw some masks on any of the three 2D render windows

--> the drawn segmentation masks are not visible on the 2D planes inside the 3D render window

This problem was already mentioned in T19522 but to have a clean separation between different issues that were mentioned there, this task only deals with the single mentioned problem.

Event Timeline

Background:

  • Rendering of the crosshair including its image planes in 3-d is done by the PlaneGeometryDataVtkMapper3D.
  • Image rendering in 2-d is done by ImageVtkMapper2D.
  • ImageVtkMapper2D shares its textures with PlaneGeometryDataVtkMapper3D, hence:
    • The actual image rendering is done in the instances of this 2-d mapper
    • The 3-d mapper just applies these textures to 3-d planes
  • Result: everything that is rendered by the 2-d image mapper is automatically shown in 3-d as well, including binary images

Issue:

  • A segmentation is a LabelSetImage
  • Label set images have their own 2-d mapper
  • The mechanism described in the background above does not apply

Possible solutions:

  • The obvious solution
    • Also share the textures of the label set image 2-d mappers with the plane geometry data 3-d mapper
    • Extend the plane geometry data 3-d mapper to also use these textures
  • The "because we can (but actually couldn't)" solution
    • We can enable volume rendering for images
    • We had an option for that in the segmentation preferences
      • Didn't work reliably because of logic bugs and the actual volume rendering (nothing or black box or actual segmentation)
    • The Image interface of LabelSetImage just provides the active layer of a label set image
      • Would require to make the volume rendering aware of label set images
    • Would need to figure out a reliable volume rendering setting to show the volume as expected
    • From the perspective of H/W resource utilization probably by far the worst solution
  • The only true solution
    • Implement a 3-d mapper for label set images
    • Enables full control of 3-d rendering
    • Why stop at rendering flat masks on top of the image planes if you can have 3-d surfaces in addition
    • Could be also used for segmentation previews which look a bit quirky at the moment