Home : Course Map : Chapter 11 : Java : Supplements :
Java Advanced Imaging (JAI)
JavaTech
Course Map
Chapter 11

Introduction
Image Class
Image Loading
  Demo 1 Demo 2  
Pixels/Transparency
  Demo 3
Pixel Handling
  Demo 4  
Demo 5
Exercises

    Supplements
Java 2D Imaging
BufferedImage
Creating Buf.Image
Pixel Handling
  Demo 1 Demo 2
Filters
  Convolutions
     Demo 3
  AffineTransforms
     Demo 4
  LookupTable
     Demo 5 Demo 6
  Rescale
     Demo 7
  Color Conversion
     Demo 8
  Custom
     Demo 9
Exercises
Java Adv Imaging
AWT Flicker:
  Override Update
     Demo 1  Demo 2
  Clipping
     Demo 3
  Double Buffer
     Demo 4

     About JavaTech
     Codes List
     Exercises
     Feedback
     References
     Resources
     Tips
     Topic Index
     Course Guide
     What's New

The Java Advanced Imaging API, or JAI, provides tools for "sophisticated, high performance image processing." First developed in the late 1990s some of the JAI features are now available in J2SE5.0 (e.g. I/O for a wide range of image formats) but it still provides a large and robust set of imaging tools.

For example, many high end imaging tasks involve dealing with extremely large images. JAI allows for "tiling" in whch users can grab a section of an image for display and thus save lots of bandwidth.

Other features include

  • Deferred execution of image processing task until they are needed. This "just-in-time" approach provides for faster response to the user since not time is wasted on unneeded computation.
  • Built-in RMI (Remote Method Invocation is discussed in Part 2) allows for distributing image tasks and client interaction over the network.
  • Extensible framework allows for expansion of capabilities via plug-in modules developed by users and third parties.

Imaging capabilities include over 100 different image processing operations, image I/O for several formats (many of these are now available in J2SE5.0), and using Java 2D tools to overlay graphics on images.

See the links below for further description of JAI and to download the packages.

Applications of JAI

JSky is used by astronomers to plan observations for the Gemini Telescope. The JSky home site describes how the program manages catalogs of imagery obtained in many formats and provides imaging tools to analyze individual images as well as to combine and compare multiple images.

JAI is used as part of the Scientist's Expert Assistant developed at NASA Goddard Space Flight Center in conjunction with the Space Telescope Science Institute. This is "a system that combines interactive visual and expert system approaches to assist astronomers in planning observations." See the papers and presentations describing the program.

GeoVirgil is a "planetary data analysis tool works as a map program (or Graphical Information System) for NASA planetary imagery. Developed by Steve McDonald, it "combines imagery, elevation and other data sets into an integrated map view." Various image processing functions are available. A 3D version is under development.

AstroVirgil is another Java program from Steve McDonald that is used to analyze data from the space-based Chandra X-ray telescope.

JadeDisplay is a

"a high-performance image display component for serious imaging applications using JAI (Java Advanced Imaging). It works asynchronously, loading/computing image tiles in background threads. This frees up the GUI thread so the user doesn't have to wait for the entire image to load, and scrolling is fast regardless of image size (as long as it is tiled)."

See Java Advanced Imaging In Action: The Java Advanced Imaging API Customer Success Stories for a long list of other programs used in a wide range of applications that take advantage of JAI.

References & Web Resources

 

Latest update: Oct. 19, 2005

 

 

              Tech
Fractals
Fractal Drawing
   Demo 1
Fractal Draw Code
Fractal Images
  Demo 2
Image Processing
  Demo 3
Histogram Image
  Demo 4
Exercises

           Physics
Calibration/SysError
SimWithCal/SysErr
  Demo 1
Analysis
  Demo 2
Examples

Exercises

  Part I Part II Part III
Java Core 1  2  3  4  5  6  7  8  9  10  11  12 13 14 15 16 17
18 19 20
21
22 23 24
Supplements

1  2  3  4  5  6  7  8  9  10  11  12

Tech 1  2  3  4  5  6  7  8  9  10  11  12
Physics 1  2  3  4  5  6  7  8  9  10  11  12

Java is a trademark of Sun Microsystems, Inc.