Difference between revisions of "Slicer3:Volume Rendering"

From NAMIC Wiki
Jump to: navigation, search
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/")
 
(44 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== Overview ==
+
<big>'''Note:''' We are migrating this content to the slicer.org domain - <font color="orange">The newer page is [https://www.slicer.org/wiki/Slicer3:Volume_Rendering  here]</font></big>
==Archtecture/Design==
 
[[Image:UseCaseVolumeRendering.jpg|thumb|800px|center|Use Case Diagram]]
 
[[Image:GUI.jpg|thumb|400px|center|GUI]]
 
[[Image:ClassDiagramVolumeRendering.jpg|thumb|400px|center|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 [http://www.na-mic.org/Wiki/images/f/f8/Tutorial-with-dicom.zip 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===
 
[[Image:VolumeRendering.jpg|thumb|500px|center|volume rendered label map of the tutorial dataset]]
 
[[Image:VolumeRenderingWithShading.jpg|thumb|500px|center|volume rendered label map of the tutorial dataset, shading enabled]]
 
[[Image:VolumeRenderingBoneDetection.png|thumb|800px|center|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 [http://www.vtk.org/doc/nightly/html/classvtkRenderWindow.html#007038cc2f7b875bb56a4bcd97937077 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)
 
**[http://en.wikipedia.org/wiki/Maximum_intensity_projection Wikipedia]
 
**[http://www.vtk.org/doc/release/5.0/html/a01399.html vtkFixedPointVolumeRayCastMapper Class Reference]
 
* 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
 

Latest revision as of 18:07, 10 July 2017

Home < Slicer3:Volume Rendering

Note: We are migrating this content to the slicer.org domain - The newer page is here