For downloads, go to the main BIJ page.
Manuals, FAQ's, running as applet
Frequently asked questions. Confocal microscopy users, please see the FAQ.
The indexing and multimodality manual (created by Tony Collins).
The Javadoc API for BIJ.
Run VolumeJ as an applet.
Example rendering of mri-stack.tif (see ImageJ->File->Open Samples) for you to check if VolumeJ is functioning properly.
The parameters are: Rotate 100, 20, 0; Scale 1.0; Aspect 1, 1, 5; Classifier Gradient no index; Interpolation trilinear; central value 128.0; deviation 2.0; Light 1,1,10. All parameters are default except the ones in bold.
VolumeJ is a freeware volume renderer. It has been interfaced to ImageJ, the Java image processing program developed by Wayne Rasband at the National Institutes of Health. After downloading, VolumeJ appears as an extra command in ImageJ in the plugins menu. It will render any open stack. The image above shows a depth-coded cine rendering of the sample Bat-Cochlea-Volume.
ImageJ based: a volume is a stack.
renders any volume that can be loaded by ImageJ, including Multi-TIFF, NIH Image stacks, Analyze format volumes, DICOM multi-slice files and more
supports rendering of RGB color volumes - very suitable for 3-D confocal micropscopy.
rendering for the MRIcro fMRI analysis tool by Chris Rorden. Cutouts still experimental.
choice of trilinear or nearest neighborhood interpolation
anisotropic volume support. Uses voxel size from stack or set yourself.
stereo views. Renders two images suitable for stereo viewing on screen or on slides.
cine-rendering: create movies of rotating volumes, at arbitrary xyz axes. Intermediate renderings can be saved to disk.
indexing: give regions of the volume any color you want. Index values should be in a separate 8-bit volume stack. For example: depth-coded rendering using different color for voxels at different depths, as in the rendering on this page.
user modifiable color look-up tables (LUT's) for most classifiers that use color.
tested on volumes of up to 240MB.
sources available, but see copyright and disclaimer text.
true rendering of multimodality/polymorphic volumes - easy to write your own vector or scalar volumes. Now supports 8-bit, 16-bit, RGB and float stack volumes.
VJ contains Java classes for volumes, voxels, gradients, interpolation, rendering, shading, lighting, and classification .
> 13000 downloads!
not very fast. I wrote a real-time volume renderer
that is really fast, but while I decide whether to patent the algorithm, or
better yet, write an article or a book, I will
keep it from the general public for the moment. You can try it out as an applet
VolumeJ was inspired by my work on 2-D and 3-D optical flow.
If you want to thank me, please put a reference to
M.D. AbrÓmoff, and M.A. Viergever. Computation and Visualization of Three Dimensional Motion in the Orbit. IEEE Trans Med Imag., 21 (4), 2002.
in your article (and let me know about it).
Michael AbrÓmoff, MD, PhD.
I removed most of my personal data for privacy reasons, what remains can be found here.
Unzip the files (obtained as under the Download paragraph above) into the ImageJ directory or folder. In Winzip, check "Use folder names".
Make sure that you end up with a plugins directory containing bij.jar and the VolumeJ directory (and also FlowJ and BIJ directories).
1.7a Developing new imaging tools I am working on now. This necessitated largely rewriting the linearalgebra numerical routines package, called bijnum and which confirms closely to Matlab calling conventions. VolumeJ was completely refactored to stay compatible with bijnum classes. Included Image 1.31h. Also because keeping the different download files apart was getting more and more complex and more and more errorprone, I threw VolumeJ, FlowJ and all the other plugins into one bij.jar file, and kept only download files as an executable zip (bij.exe for Windows), a zip file (bij.zip) and a source file (bijsource.zip).
1.64 Testing version of trackball type interactive
rendering windows deployed. Test by clicking on "Interactive
rendering" and 'dragging' the rendered object using the mouse. On older
machines, interactive experience may leave something to be desired.
Reworked and cleaned up class hierarchy.
Included and tested with ImageJ version 1.30b.
1.63 Class names longer than 32 characters have been removed. These give problems on some but not all Mac OS X Java implementations. A common error report is:
1.62 Found some errors in Gaussian convolution kernels and cleared those up. Cleaned up convolution and interpolation classes.
1.61 Started improving the user interface. Added toLongString() method to all classifiers that returns a clear text description of what that classifier does. Changing rendering algorithm and/or classifier type disables dialog options that are not valid. Put garbage collection back in after each rendering series.
1.6a Refactored most classes to
support true object oriented rendering - to support real time rendering (not in
the public domain yet).
RGB volume rendering now implemented in a test version.
API javadoc updated.
The save to disk option now will write the stack to disk only.
Work in much improved interface started: will enable/disbale options properly.
1.51a Some bugs cropped up in previous versions. Bugbusting:
When started, VolumeJ finds out which stack windows or regular windows there are and will show the stack windows in the Volume Stack selector. If more than 1 stack window is open, both Volume Stack and Index Stack selectors will contain the same windows (you can only index if there are at least 2 stacks). Behavior was very confusing if there were too few windows or of the wrong type:
If there are no windows, all rendering buttons are inactive.
If there are only non-stack windows, only the surface plot rendering button is inactive (you cannot render 3D a flat image).
If there is at least one stack window, the rendering buttons will be active.
The LUT loader again loads all LUTs correctly,. These should be in ImageJ or NIH image format.
ImageJ applet now works in Java Plugin 1.4.
You can now choose whether cine renderings will be written to disk only or sown and written to disk.
The API javadoc has been updated.
1.50d Added support for automatic surface plotting and cine surface plotting of image stacks. Stop render and close buttons now work as intended.
1.50c Code cleanup for better support for VJSurfacePlot. Integration with ImageJ slowly shifting to VJUserInterface and VJRenderShell class and subclasses, so that in the near future these will be the only classes that require ImageJ classes. VJRenderer subclasses and Volume subclasses will not require ImageJ classes anymore. VJUserInterface now uses VJRenderShell subclasses to initiate rendering. VJRenderShell's take care of transformation matrix, volume type, aspect ratios, scaling etc, and adjusting these for multiple renderings.
1.50b Edited and published surface plot manual. Modified VJRenderShellCine so that the last rendering is shown (thanks to Wayne Rasband).
1.50a Added support for user-selectable color look-up tables (LUT) for indexing classifiers. By request from Paulo Magalhaes. Changed VJLight and VJShader code so that light position can now be indicated in viewspace coordinates (for example, 0,0,-1000 is far behind the viewer).
1.45 Cleaned up code and changed all comments to comply with javadoc. javadoc cleanly processes all sources. Published javadoc API.
Lichtenbelt, B et al. Introduction to Volume Rendering. Upper Saddle River, NJ: Prentice Hall Technical Library, 1988 .
Levoy, M. Display of surfaces from volume data. Computer Graphics and Applications 8:29-37, 1988.
A nice introduction to volume rendering is a "Volume Rendering 101" at http://www.cs.wpi.edu/~matt/courses/cs563/talks/powwie/p1/ray-cast.htm
VolumeJ is used in many college and graduate courses, including Advanced Topics in Volume Visualization Course (ECS276) at the University of California (Davis).