In this project, a parallel Visible Human Slice Web server has been developed, which offers to any Web client the capability of interactively specifying the exact position and orientation of a desired slice (Figure 1) and of requesting and obtaining that slice from a 3D tomographic volume, made of either CT, MRI or cryosection images (digital color photographs of cross-sections). For interactive slice position and orientation, a miniature 3D version of the full image is used, as in ([4]) (Figure 1).
Accessing and extracting slices from the 3D Visible Human image ([1]) requires considerable storage space, e.g. 13GBytes for the human male dataset, and high processing power. We decided therefore to build the Visible Human Slice Web server on top of 5 Bi-Pentium Pro 200MHz PC's. An additional Bi-Pentium II 333MHz PC acts as the Web server running Microsoft IIS 4.0. All the PC's are interconnected through a 100Mbits/s Fast Ethernet switch. A total of 60 2GB disks is equally distributed among the server's 5 Bi-Pentium Pro PC's.
For enabling its parallel storage and access, the Visible Human 3D volume is segmented into volumic extents of size 32x32x17 RGB voxels, i.e. 51KBytes, which are striped over the 60 disks residing on the 5 server PC's. In order to extract an image slice from the 3D image, the extents intersecting the slice are read and the slice parts contained in these volumic extents are extracted and projected onto the display space (Figure 2).
The parallel Visible Human slice server application was synthesized using the CAP Computer Aided Parallelization tool ([2]) and the library of reusable parallel file system components ([3]) which enable building pipelined-parallel applications combining high-performance computing and I/O intensive operations. The parallel server architecture has been interfaced to the Microsoft IIS Web server using the ISAPI protocol. A Java 1.1 applet runs on Web clients and enables users to specify slice position and orientation and generate image slice extraction requests. Replies of the Web server are compressed using the JPEG standard and send back to the Web clients for display. The Web interface is operational at http://visiblehuman.epfl.ch.
The parallel slice server application consists of a server interface residing on the Web server PC and of server processes running on the server's parallel PC's. The server interface interprets the slice location and orientation parameters defined by the user and determines the image extents which need to be accessed. It sends to the concerned servers (servers whose disks contain the required extents) the extent reading and image slice part extraction requests. These servers execute the requests and transfer the resulting slice parts to the server interface, which asssembles them into the final displayable image slice (Figure 3).
The parallel slice server application is described by the diagram of Figure 4 and by the program of Figure 5. The program of Figure 5 written in the CAP formalism is precompiled into C++ code which is then compiled to run on the server's PC's.
The server's performance has been tested when striping the Visible Human (male dataset) onto 1 to 5 Bi-Pentium Pro server PC's and onto 1 to 12 disks per server PC (max. 60 disks). Figure 6 shows the number of extracted 512x512 colour slices per second for various configurations.
Each slice access request is decomposed into 437 volumic extent access requests (22 MBytes). For all the server configurations, disk I/O bandwidth is always the bottleneck (effective single disk throughput for 51KB blocks: 1.88 MBytes/s). With 4.8 image slices/s, the Web server is able to receive from the Fast Ethernet 7.8 MBytes/s of slice parts. These performances are close to the performances offered by the underlying hardware, operating system (Windows NT) and network protocols (TCP/IP).
The CAP computer-aided parallelization tool greatly simplifies the creation of parallel distributed memory server applications. Application programmers create separatly the serial program parts and express the parallel behavior of the program with CAP constructs. The parallel part of the program can be easily modified by changing the sequence of operations or by building hierarchical CAP constructs.