There is a Deep Zoom plugin that exports (huge) images from ImageJ to the Deep Zoom format. Really big images take a long time to load in a browser and you only get two views: zoomed out full image and zoomed-in actual pixels.

Big stitched-together microscope image, 11452x7989 pixels

Deep Zoom version You can see that the Deep Zoom version loads quickly and zooms and pans quickly. (Note that there are some artifacts in this image from the stitching.)

Here's a big illustration: Big drawing, 13600x6000 pixels

Deep Zoom version Actually both of these images work well in ImageJ if you allocate enough memory. Zoom and pan are reasonably fast. However once we start dealing with images that are larger than memory, the viewer will have to deal with them. You don't want to go through the whole image file every time you zoom.











Deep Zoom uses tiled mipmaps. Mipmaps were developed to map 2D textures onto arbitrary 3D surfaces. They look like this:

Mip map







Here is how Deep Zoom tiles the mipmap levels:

Deep Zoom illustrations

source





Here's how the tiles are saved on disk, each as an individual PNG or JPG file:

First image is "11452x7989 pixels; RGB; 349MB" in IJ.

160.7 MB on disk (156,001,306 bytes) for 1,958 items, saved as PNG



Deep Zoom file layout





Deep Zoom is good for sharing large images over the net. This technology could be used to provide a web-based IJ image viewer. For example if you're running headless perhaps you could have an internal web server that allows the user to examine outputs. This would be also be a good way to display images on handheld devices.

(It's an interesting side-note to contemplate how this technique would work in n-dimensions. You could still get a pyramid, only each level would be n-dimensional, scaled by half in each dimension. A 2D mipmap takes about 1.33 the space of the original image, for n-D I think it would be (1.33)^(n-1).) (Correction: Stephan S. points out 3D space requirement is 1 + 1/8 + 1/64... which is less than 1 + 1/4 + 1/16...)

I'm working on a prototype viewer, strongly typed for RGBA. I plan to initially try saving the tiles uncompressed in one big temporary file.

Deep Zoom viewers use 'spring animation' to create a very smooth viewing experience. They give the illusion of infinite zoom levels but I think there are only about three interpolated levels available between mipmap levels.

I believe these three levels could be interpolated very quickly using pixel area interpolation.

Three-level tile interpolation

It would be good to have a version that uses arbitrary pixel Types and better interpolation. This would be useful for example if you want to zoom into an image and then play with the LUT at that zoom level. You'd get high performance since you don't have to rebuild the mipmap with every change.


Links

Deep Zoom File Format

Inside Deep Zoom, Part I

Inside Deep Zoom, Part II

Deep Zoom Primer

The Clipmap: A Virtual Mipmap, 1998 .pdf from Silicon Graphics

Added: Fiji's CATMAID viewer

Deep Zoom jar is available in ImageJDev Maven Repository

Under loci/deep-zoom-plugin/1.0-SNAPSHOT. You have to rename it with an underscore in the name, sorry.

Source code http://dev.loci.wisc.edu/svn/java/trunk/projects/deep-zoom-plugin/