Advanced Medical Imaging Project ================================ * Peter Knoll * Siroos Mirzaei * Karl Koriska * Horst Köhn *TO THE EDITOR:* With great interest we read the recent articles on Java-based remote viewing and processing of nuclear medicine images by Slomka et al. (1) and on Java and teleradioloy by Wallis (2), both published in the January issue of the *Journal of Nuclear Medicine*. In these articles the authors nicely show how nuclear medicine images can be viewed and processed using Java applets. We would like to add some information to this topic and clarify some issues discussed in these articles. ### Performance Slomka et al. (1) mentioned that performance problems might occur if computationally intensive tasks written in Java are performed. Recently, we developed an iterative algorithm (3) to reconstruct SPECT data written entirely in Java using the freely available Java Development Kit (JDK) 1.3 β (4), which already applies the HotSpot technology. The HotSpot performance engine uses advanced adaptive optimization techniques by identifying the “hot spots,” i.e., the parts of the application where the most time is spent, and by executing byte code and accelerating the rate of execution for this performance-critical code. The application of HotSpot should accelerate applications by ∼30%. We are able to reconstruct a patient study (360° SPECT, 64 × 64 matrix, 6° steps/frame) using standard personal computer equipment within ∼120 s, which is reasonable even for routine daily clinical studies. ### Security With the installation of JDK 1.2, the applied Java security model has been significantly improved and is now totally different from its JDK 1.1 predecessor. The Java 1.2 platform provides specific permission (with policy files) to individual resources. This allows applets to interact with objects outside their own virtual machine, including the local file system. ### Implementation of New Software Design Models Use of a new programming language, as compared with merely porting an already existing software code, should influence the way software is designed. The goal to develop medical image processing software using the Jini software design model (5), as well as the Java2D, Java Advanced Imaging, and Java3D application programming interfaces (APIs), has recently been achieved by the “advanced medical imaging” (AMI) project (6). ### Jini Jini technology is built on top of Java and extends the availability of Java to safely move codes around by providing a homogenous view of the network. It allows communication between plugged-in hardware devices and services through interfaces, without installing drivers or additional software on client machines. Furthermore, it does not require any centralized administration of available services, which is the basis for a truly distributed system (5). To apply Jini, it is necessary to run: * A simple hypertext transfer protocol (HTTP) server * The Remote Method Invocation Daemon (RMID) * A lookup service * A transaction manager The HTTP server is used for downloading software code. The RMID uses a log file to keep track of the on-demand activation and persistent service registration, so that once a service has already been registered, it does not have to be reregistered after each reboot. Instead, RMID will restart it on start-up (4). The lookup service is used by Jini services to announce their availability and to store their proxy objects. The Jini leasing concept allows registering a service only for a chosen period of time. Afterwards, the service is automatically removed from the network. Therefore, a distributed system using Jini prevents the accretion of persistent state in long-lived systems by allocating resources only for a fixed period of time. The lookup service also supplies the Jini client with a proxy object reference. Transaction managers are used by Jini services to ensure either that multiple operations across components or systems are performed together as a whole or that components and systems will be the starting point. We have already used this technology to develop a Jini reconstruction service. In this application, the physician simply has to select a patient SPECT study from a database, and a Jini reconstruction client automatically searches in the local area network (LAN) for lookup services. If successful, the Jini client automatically receives the information to get into contact with the Jini reconstruction service and starts to reconstruct the patient study. Applying this Jini reconstruction service, auxiliary files can be loaded in advance, and the whole object is reconstructed and visualized after only 10–15 s, using a Java applet and the Java2D API. ### Java Image Processing Despite the fact that the use of Java will change the way software is designed, Java also provides us with lots of APIs that are extremely useful for medical image processing: * Java2D * Java Advanced Imaging (JAI) * Java3D Java2D provides some extremely helpful routines, such as pixel interpolation, elementary transformation (scale, rotation, etc.), and text manipulation. The JAI API is a toolkit for more advanced image processing, such as frequency domain processing (Fourier or cosine transform), image manipulation (perspective transformation, warping, etc.), and image analysis (histogram generation and statistical operations). Furthermore, JAI allows the exporting of image files with different file formats (jpeg, tiff, bmp, and png). Java3D is used to write three-dimensional graphics applications and applets and provides reasonable rendering rates on most modern PCs, especially those with three-dimensional graphics accelerator cards. ## REFERENCES 1. Slomka P, Elliot E, Driedger A. Java-based remote viewing and processing of nuclear medicine images: toward “the Imaging Department without walls.” J Nucl Med. 2000;41:111–118. [Abstract/FREE Full Text](http://jnm.snmjournals.org/lookup/ijlink/YTozOntzOjQ6InBhdGgiO3M6MTQ6Ii9sb29rdXAvaWpsaW5rIjtzOjU6InF1ZXJ5IjthOjQ6e3M6ODoibGlua1R5cGUiO3M6NDoiQUJTVCI7czoxMToiam91cm5hbENvZGUiO3M6Njoiam51bWVkIjtzOjU6InJlc2lkIjtzOjg6IjQxLzEvMTExIjtzOjQ6ImF0b20iO3M6MjE6Ii9qbnVtZWQvNDIvMi8zOTAuYXRvbSI7fXM6ODoiZnJhZ21lbnQiO3M6MDoiIjt9) 2. Wallis W. Java and teleradiology. J Nucl Med. 2000;41:119–122. [FREE Full Text](http://jnm.snmjournals.org/lookup/ijlink/YTozOntzOjQ6InBhdGgiO3M6MTQ6Ii9sb29rdXAvaWpsaW5rIjtzOjU6InF1ZXJ5IjthOjQ6e3M6ODoibGlua1R5cGUiO3M6MzoiUERGIjtzOjExOiJqb3VybmFsQ29kZSI7czo2OiJqbnVtZWQiO3M6NToicmVzaWQiO3M6ODoiNDEvMS8xMTkiO3M6NDoiYXRvbSI7czoyMToiL2pudW1lZC80Mi8yLzM5MC5hdG9tIjt9czo4OiJmcmFnbWVudCI7czowOiIiO30=) 3. Knoll P, Mirzaei S, Müllner A, Koriska K, Köhn H, Neumann M. An artificial neural net and error backpropagation to reconstruct single photon emission computerized tomography data. Med Phys. 1999;26:244–248. [PubMed](http://jnm.snmjournals.org/lookup/external-ref?access_num=10076982&link_type=MED&atom=%2Fjnumed%2F42%2F2%2F390.atom) 4. [http://developer.java.sun.com/developer/earlyAccess/](http://developer.java.sun.com/developer/earlyAccess/). 5. Arnold K, Sullivan B, Scheifler R, Waldo J, Wollrath A. The Jini Specification, MA: Addison Wesley, 1999. 6. [www.jini.org](http://www.jini.org).