depth_coded_scala.gif (281474 bytes)

VolumeJ - Volume Rendering in Java

VolumeJ is in BIJ, the Bio-medical Imaging in Java site.
Version 1.7a.


For downloads, go to the main BIJ page.

Manuals, FAQ's, running as applet

Frequently asked questions. Confocal microscopy users, please see the FAQ.

Example renderings.

The manual.

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.

mri-stack-rendering.gif (22448 bytes)

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.


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 ( and a source file (

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:

java.lang.NoClassDefFoundError: VolumeJ/VJClassifierLevoyNotIndex0

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.


  1. Lichtenbelt, B et al. Introduction to Volume Rendering. Upper Saddle River, NJ: Prentice Hall Technical Library, 1988 .

  2. Levoy, M. Display of surfaces from volume data. Computer Graphics and Applications 8:29-37, 1988.

  3. A nice introduction to volume rendering is a "Volume Rendering 101" at

  4. VolumeJ is used in many college and graduate courses, including Advanced Topics in Volume Visualization Course (ECS276) at the University of California (Davis).

Last updated 2003/12/7.