Slicer3:Volume Rendering

From NAMIC Wiki
Revision as of 19:51, 18 September 2007 by Kikinis (talk | contribs)
Jump to: navigation, search
Home < Slicer3:Volume Rendering

Overview

Archtecture/Design

Use Case Diagram
GUI
Class Diagram

Test the module

  • Copy the following folder from the svn repository http://www.na-mic.org/svn/Slicer3/trunk/Base/GUI/Testing/VolumeRendering to the following path <YourSlicerBuildDir>\lib\Slicer3\Modules\Packages\VolumeRendering.
  • Restart Slicer
  • Load a MRML-Scene (e. g. tutorial.xml from the Tutorial Dataset)
  • Go to the module dropdown and select VolumeRendering
  • Select "all" (if you use the tutorial dataset) as the Source Volume and click LoadNode =>The volume rendered Volume should appear.
  • Play with the transfer function etc.
  • Note: After changing a setting please click on the volume one time to load the new settings

Latest results and limitations

Description

  • Loading changing of MRML-Nodes is possible during runtime
  • At the moment no removing of MRML-Nodes possible
  • Change properties (Shading, Interpolation, mapping)
  • Calculate transfer functions automatically
  • Performance:
    • Interrupting is possible in render window.
    • Interrupting somewhere else requires platform dependent coding (q.v. problems)
  • Cropping is possible

Screenshots

volume rendered label map of the tutorial dataset
volume rendered label map of the tutorial dataset, shading enabled
shading enabled, linear interpolation, automatich mapping for bones

next Tasks

ideas implemented in prototyp

  • Develop different algorithms for labelmap and grayscale volumes -----algorithm for grayscale is missing => new task: presets
  • Find Presets, see also at goals
  • Try to reduce artefacts in labelmaps by using several RGB points in the mapping function -----done, artefacts still there?
  • Implement a possibility to change between different volumes during runtime -----done
  • Have a closer look on the final calculation of the renderer-----Problems, when interrupting outside renderWindow
  • Detect if video card can use 3d Texture Mapping or not, if not use MIP, -----done, there are two new Buttons to simulate having openGl support or not. standard preset is now MIP (performance issue)
  • Add possiblity to change opacity (for labelmaps) -----done, slider
  • Include code to make all models invisible(Good for testing) -----done, new button

not yet implemented in prototyp

  • Have a closer look on the gradient opacity mapper, when using label maps
  • Try clipping
  • Add progress functionality

Problems

  • Cannot load the following data
    • spgr (grayscale): tutorial data set (freezes)-----fixed: problems with automatic mapping
    • grayscale (greyscale): brain atlas (freezes)-----fixed:problems with automatic mapping
    • seg (LabelMap): abdomen data set (not freezing, seems to render, but unvisible)-----fixed, use char as datatype, but maybe experimenting with tresholds.
  • How can rendering be interrupted outside renderWindow
    • Do something like vtkRenderWindow::GetEventPending
    • Problem, may require platform depending code----->Could propably be fixed with tcl-wrapping
    • Experiment with vtkOpenGLVolumeTextureMapper3D, check status more often, debug. add more timers.

Goals

Volume rendering presets :

  • MIP (Maximum Intensity Projection)
  • CT Bone and vessel
    • Use Hounsfield units
      • Bone +400->+1000
      • Soft tissue +40->+80
      • Water 0
      • Fat -60->-100
      • Lung -400->-600
      • Air -1000
    • Problem with Vessels: Different contrast mediums?!
  • T1 MR Air/skin interface
  • Label map per-label object rendering

Slicer3 module interface:

  • Select from loaded volumes
  • Specify preset transfer functions or use KWWidgets tools

Slicer3 internals:

  • Correct coordinates including transforms
  • Level of detail rendering
  • Proper integration with surface rendering

Different Volume Rendering Algorithms

  • RayCast
  • 2D Texture Mapping
  • 3D Texture Mapping
  • ...

Wish List

  • 2D Transfer functions - may require specialized opengl code integrated with VTK. Talk with Gordon about latest work from Utah.
  • use glTexSubImage3D so that incremental changes to the volume can be quickly reflected