Although Java has extensive support for images, such support focuses primarily
on web-based applications: loading JPEG or GIF images, displaying images on
canvases, filtering images, animation, and a threaded, producer-consumer model
that supports downloading over networks. This model works well for the purposes
for which it was intended, but it doesn't work well (or at least easily) for
image processing. This is why JIGL was developed.
Other Java image libraries have also emerged to fill this void. One is Image/J,
a Java port of the NIHimage package from Wayne Rasband. Another is Sun's own
Java Advanced Imaging API, whose developers also point out the weaknesses in
Java's current imaging model. While we don't want to reinvent the wheel, our
purpose is to provide both processing power for research and simplicity for
teaching, a combination not found (we feel) in available packages. We are committed
to keeping JIGL as well-integrated as possible with the standard APIs from Sun.
JIGL is built around a set of pixel-addressable image buffer classes. These images support pixel access, simple arithmetic on individual pixels, image-wide operations, and image-image operations. Image types include grey (integer), real (floating point), color (both integer and floating point), and complex. A set of utility classes provides convolution, the Fourier Transform, and other operations on images. Also included are classes that support image I/O and display. Level operations and mathematical morphology (both binary and greylevel) are also included.
The goal of JIGL is to make programming both course-level and research-level image handling algorithms as easy as possible.
-Dr.
Bryan Morse
Brigham Young University