Description
This is basically a simple Volume Rendering application that is meant to demonstrate the Volume Rendering abilities of Vtk as well to showcase the various Volume Rendering methods that are available out there.
Implementation Details
I implemented the project using Vtk and C++ using Visual Studio 2005. One of the reasons why I switched to C++ from using C# (my previous Vtk Project) was the performance and finer control it offered over C# in controlling the amount that was gobbled up by the application.
The following methods were used to render the datasets:
Raycasting: This was the most accurate and slowest (interaction-wise) method of rendering a volume. Essentially, what it does is calculate the color and opacity of a pixel on the screen based on the colors and opacity values of the voxels that lie behind it in the ray.
Of course, raycasting will take longer if the dataset is larger in dimension. The particular method that I found most effective in Raycasting was calculating pixel values using a composite function that computes a pixel's color and opacity as an aggregate of the pixels behind it. Another available method is MIP filtering, where the Maximum Intensity Scalar value is displayed on the screen and everything behind it is obscured. This method is less clear and opacity does not play such a significant role in the eventual image.
IsoSurfaceing: An isosurface is created using contour values that identify various parts of the scanned object, such as bone and flesh in the visualization of the knee dataset. The contour values are identified by pure trial and error. I also used a histogram view of the data to see if that would provide some clues to where the values were contained in the data.
Splatting: Splatting is a method where a huge volume of data is divided up into splats which can then be visualized as Isosurfaces or raycasted volumes. Splats are a way of simplifying large datasets.
Downloads
Download the setup file which will install VolumeViewer.zip.
You will need to copy the datasets into the installed folder for the application to run.
Note that you will need the .Net runtime and Vtk for this to work. You can download the .Net runtime here.
Use RawtoVtk to convert the Knee.raw and Pig.raw file to vtk format.
eg: RawtoVtk Pig.raw Pig.vtk 512 512 134
You can get the raw format files by converting the pvm files from the following location to raw using the following tool.
pvm2raw.exe
Knee.Pvm
Pig.pvm
ScreenShots
A Cross Section of the Knee and the Pig using RayCasting with a composite function, MIP function, IsoSurfacing, and Splatting with Isosurfacing applied to them.






