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