IntelliVis is my volume visualization library. I wrote IntelliVis
while taking CS788 a volume visualization for medical imaging
course. I have written a Win32 UI as well as a TCL interface to
the library. The library itself is written in extensible
C++. It is intended to be easily added onto. I also have a
pure C interface to the library (which is what the Win32 UI and TCL talk
to). Unfortunately I used code proprietary to Inscriber Technology Corporation for the Win32 UI, hence I cannot release it here. I have a stripped down version of the code for download here. NOTE: This won't even come close to compiling since all includes and libraries proprietary to Inscriber have been removed. It should however be useful for anyone interested in implementing their own volume renderer.
Features:
Arbitrary transformation matrices
MIP, Summed Voxel (averaging), Opacity Weighted Composite, ISO and
LMIP rendering modes
Lighting effects (1 directional light) Phong lighting model
Intermediate Difference, Central Difference, Zucker-Hummel and
Sobel 3D gradient operators
Nearest Neighbor and Tri-linear volume interpolation
Starting and ending sampling planes parallel to the view plane
Parallel and Perspective projections
Linear and Logarithmic histograms
As part of my final project for my volume visualization course I
implemented a semi-automatic opacity transfer function generation
mechanism. You can read
about it here.
I have a small gallery of images from my volume library. Not
all of these images were generated from IntelliVis since some are the
result of code I wrote for assignments 3 and 4 of the course. All
the images are PNGs (in order to preserve quality), if you browser
doesn't support PNGs (IE5.0 does) then you will have to download the
images to view them.
A trip through Ian Bell's brain from an oblique point of view.
Each slice is about 3mm thick. The third image on the bottom row
is a summed voxel projection of the entire volume, and the last image is
a MIP projection of the entire volume
ISO surface renderings of Ian Bell's brain. I experiment with
positioning the light at different angles as well as changing where the
sampling plane beings (the last four images)
ISO surface renderings of the Visible Human Dataset. I experiment
with changing the ISO threshold to discriminate between the skin and the
skull as well as changing where the slice plane begins to view the
brain.
An interesting summed voxel projection of Ian Bell's brain from the top.
The classification functions were set by hand.
A summed voxel projection of the Visible Human dataset.
A composite of the Visible Human data set with a hand generated transfer
function that shows both the skull and the outer skin.
Another composite using the Visible Human data set. This image
brings out the cavities of the nasal passages very well. The
transfer function used was similar to the image above with the portions
involving the skin being removed.
A colored ISO surface rendering of the visible human data set.
An ISO rendering of the Visible Human data set using a perspective
projection. The field of view is set to something ridiculous (145
degrees). This distorts the image but proves my perspective
projections are working properly.
A composite of the skull in perspective of the Visible Human data
set. This is just another interesting classification function.
An ISO rendering of the skin from the Visible Human data set. This
is rendered in perspective with a 90 degree field of view.
Tri-linear filtering and the Sobel
3D gradient estimator
Same as above except the ISO threshold was set to a value that went past
the skin and got the skull instead