|
|
(47 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==
| |
− | | |
− | ==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
| |