Standardizing image- processing functions in Java

At this year`s JavaOne Conference held in June in San Francisco, CA, Sun Microsystems (Mountain View, CA) spotlighted its Java Advanced Imaging (JAI) application programming interface (API). Jointly developed by Sun, Autometric (Springfield, VA), Eastman Kodak (Rochester, NY), and Siemens Corporate Research (Princeton, NJ), the Java Advanced Imaging API extends the Java platform by allowing image processing to be incorporated in Java applets and applications. The API implements a set of core ima

Standardizing image-processing functions in Java

At this year`s JavaOne Conference held in June in San Francisco, CA, Sun Microsystems (Mountain View, CA) spotlighted its Java Advanced Imaging (JAI) application programming interface (API). Jointly developed by Sun, Autometric (Springfield, VA), Eastman Kodak (Rochester, NY), and Siemens Corporate Research (Princeton, NJ), the Java Advanced Imaging API extends the Java platform by allowing image processing to be incorporated in Java applets and applications. The API implements a set of core image-processing capabilities, such as image tiling and regions of interest, and provides a set of standard image-processing operators, such as point, area, and frequency domain.

Designed to be compatible with Java 2D and Java Foundation classes, the API is intended to meet the needs of technical imaging applications in medical, seismological, and remote-sensing markets and of commercial imaging applications in document production and photography. Running on any Java 2 Platform, the API is available for Win32, Solaris, Linux, IBM-AIX, and Digital UNIX operating systems. At present, The Java Advanced Imaging API supports TIFF, BMP, GIF, PNG, JPEG, and FlashPix reader file formats; these capabilities have attracted the attention of many third-party developers.

"Some TIFF images read with JAI return a NullPointerException with the message "Unknown type 0" (or a similar message). Such images may contain tags that are not supported by JAI," says Jerry Huxtable, principal software engineer at Imperial Software Technology (Reading, England). In a message to Sun`s API development Web site, Huxtable questions when JAI will support these formats, whether there is a workaround and whether a JAI-compatible TIFF reader is available that can read or ignore such tags. To accommodate such requests, Sun`s JAI API includes an extension interface that allows third parties to provide file-format-handling capabilities such as FITS, NITF, DICOM, EPS, and RDF.

Problems to be solved

While some developers are bemoaning the lack of support for such standards, others, such as Doug O`Neill, systems engineer at Harris Corp. (Melbourne, FL), are having more serious problems. "At Harris, we are interested in image processing and the framework provided within JAI to perform complex image processing," says O`Neill.

JAI requires reinstantiation of the entire rendered image-processing chain each time a parameter is changed. Some processing in the chain, however, may be intensive and may not require reprocessing. This condition creates substantial overhead. "We are looking to maintain the partial processing and only reinstantiating the operators being changed. The only way we can see this working now is by writing a temporary product and using it in a new chain. We have brought this to Sun`s attention before and have not received an adequate answer," O`Neill remarks.

In the past, attempts have been made to standardize image-processing functions. Unfortunately, due to the diversity of the standards and the image formats in broadcast, video, satellite, medical, and military systems, none have succeeded. At best, they have offloaded the development of low-level image-processing functions, such as histogram equalization, from the domain of systems developers. Therefore, Sun`s attempt to bring together many imaging modalities is a noble task. However, attempts to encompass every image-processing format and algorithm will inevitably be extremely difficult.

More in Boards & Software