about the JAVA Advance Imaging package

Luis Ibanez ibanez at cs.unc.edu
Mon Mar 27 11:13:48 EST 2000


Hi,

It could be interesting to take a look
at the currente development of JAVA
Advanced Imaging Package.

http://java.sun.com/products/java-media/jai/

Not to promote the use of JAVA but to get
some ideas about the way in which they have
architectured their library.

It looks in fact like a Java version of VTK !

The white paper can be found at

http://java.sun.com/products/java-media/jai/docs/index.html

(It contains most of the "must have" and "nice to have"
from the list that we wrote for Insight)

A programmer's guide can be found in the same page.

They claim that the package can achieve high performace.


===============================



These are some of the caracteristics of the package:


1) The basic image is a 3D volume which can have different
   types of data per pixel (all the pixel of the same type).

   Basic pixel types:
   byte, short, ushort,
   int, float, double
   (they address the casting problem)

   They have PlanerImage and Image 3D 
  (but somewhere they mention multidimensional images 
  in the white paper, though they are not implemented)



2) Particular special image types:

   Pyramid images
   Time sequences
   Image stacks



3) Iterators (of various types)



4)  Multiband images RGB, RGBA, indexed

5)  Producer - Consumer Paradigm
    That's because the JAI package uses some
    basics from the Java2D package and from
    the AWT.


6)  Operators following the flow model
    (this is a little like VTK model)

7)  Factories for creating the operators
    the class JAI has a method "create", 
    that accepts a string (with the name 
    of the object to create)

    Or things like :
    Interpolation inter = Interpolation.getInstance(...);
    which looks pretty much like the VTK
    vtkInterpolator *inter = vtkInterpolator::New();


8)  Deferred execution (open a way for
    performance optimization, sort of similar 
    implementation done for Java3D with the 
    precompilation for rendering)


9)  Distributed programing
    Client/Server model
    For example they have a "RemoteImage" class !
    The constructor uses a host address and
    a port number...!
    All that using the RMI (Remote method interface)


10) IIP (Internet Imaging Protocol)


-------------------------

and...
they provide a lot of visualization 
methods and graphic interface !
(Just kidding !)




Luis




More information about the Insight-developers mailing list