yjchang@npac.syr.edu
http://www.npac.syr.edu/users/yjchang/
This paper discuss about the Visible Human project, the Visible Human data set, data set process, and the most important - put it online by using JAVA programming language.
The National Library of Medicine has undertaken to provide a set of digitized images of the human body for use in education and research. The Visible Human Project will initially create a digital image data set of a complete human male and female cadaver, with digitized anatomical photographs, as well as magnetic resonance imaging (MRI) and computer tomography (CT) data.
The Northeast Parallel Architectures Center (NPAC) at Syracuse University has obtained a copy of the Visible Human data set and is working on processing the raw data to produce two and three dimensional images that can be accessed over the Internet for educational purposes.
Currently the images are only available as two dimensional slices, via The NPAC Visible Human Viewer, an interactive graphical interface written in Java. The viewer is only accessible using Web browsers that support Java applets, such as Netscape 2.0.
Data store in RAW input format as follow:
Type | Header | Width | Height | Channels | Interlaced |
Anatomy | 0 | 2040 | 1216 | 3 | no |
CT | 3416 | 512 | 512 | 2 | yes |
MRI | 7900 | 256 | 256 | 2 | yes |
The compressed files save a lot of space, but they are not suitable for real-time rendering and display. So we still need 15 gigabytes to store the whole data set.
After downloading, converting and checking some slices, we found that we can crop the image to smaller size and save some space. After I go through all the 1878 slices and decide the crop arguments (including width, height, x-offset, and y-offset), we can fit the data into about 6 gigabytes space.
Slice Range | Dimensions(pixels) | Crop Offsets | Adjust Offsets |
1001-1219 | 648x730 | (700,250) | (13,0) |
1120-1230 | 1128x730 | (460,200) | (13,0) |
1131-1239 | 1128x730 | (460,200) | (3,0) |
1240-1252 | 1728x790 | (160,100) | (3,0) |
1253-1360 | 1728x790 | (160,100) | (13,0) |
1261-1390 | 1728x790 | (160,100) | (0,0) |
1291-1416 | 1728x790 | (160,100) | (13,0) |
1417-1499 | 1728x870 | (160,100) | (0,0) |
1500-1599 | 1728x910 | (160,100) | (0,0) |
1600-1699 | 1728x940 | (160,100) | (0,0) |
1700-1749 | 1572x936 | (238,100) | (0,0) |
1750-1799 | 1408x970 | (320,100) | (0,0) |
1800-1809 | 1268x970 | (390,100) | (0,0) |
1810-1839 | 1288x1000 | (380,100) | (0,0) |
1840-1874 | 1328x970 | (360,100) | (0,0) |
1875-1899 | 1308x944 | (370,100) | (0,0) |
1900-1924 | 1308x880 | (350,100) | (0,0) |
1925-1999 | 1348x800 | (350,100) | (0,0) |
2000-2099 | 1348x794 | (350,100) | (0,0) |
2100-2199 | 1348x694 | (350,144) | (0,0) |
2200-2299 | 1232x584 | (408,200) | (0,0) |
2300-2399 | 1288x614 | (380,126) | (0,0) |
2400-2499 | 1328x500 | (360,110) | (0,0) |
2500-2599 | 1328x436 | (360,132) | (0,0) |
2600-2699 | 1308x366 | (370,184) | (0,0) |
2700-2774 | 1328x520 | (360,152) | (0,0) |
2775-2819 | 1348x730 | (350,152) | (0,0) |
2820-2878 | 1348x730 | (350,220) | (0,0) |
Sun Microsystem, Inc. have announced the JAVA final release version. It has a very strong Internet support and cross-platform design. Netscape already released the 2.0 release that supports JAVA. By using JAVA, we can write just one program, put it on a Web site, and everybody can get access to the service remotely by using a JAVA-enabled Web browser no matter what his operating system is. For this application, JAVA was proved to be the right choice.
VisibleHuman.java -- the Main Applet ImageFrame.java -- the Popup Image Frame ImageSelector.java -- Image Object with a Selection Line ImageCanvas.java -- Image Process and Display Object Scroller.java -- Motif Look Scrollbar Button3D.java -- Motif Look 3D Button Panel3D.java -- Panel with 3D Outlook Label3D.java -- Label with 3D Outlook Canvas3D.java -- Canvas with 3D Outlook Thumb.java -- Thumb in Scrollbar Setting.java -- Global Setting Interface Delay.java -- Delay Interrupt Object
I personally believe UI (user interface) is the most important element in commercial application design. If you are planning to write some serious application on JAVA, you will find the components provided in JAVA AWT is not enough. So I spend a lot of time on UI layout , process flow, and component redesign. It makes this program more complex than it should be, but people will like it more.
Object --- Delay Applet --- VisibleHuman Frame --- ImageFrame Panel --- Panel3D --- Scroller Canvas --- Canvas3D -+- Label3D --- Button3D | +- ImageCanvas --- ImageSelector | +- ThumbIn Panel3D class, I put in the concave/convex drawing utility methods. So the child classes will take advantage of these methods and make the concave/convex's color and style follow the same standard in different components.
VisibleHuman -+- board ----+- view[3] --+- logo (ImageCanvas) | (Panel3D) | (Panel) | | | +- npac (Button3D) | | | +- view[0] --+- select[0] (ImageSelector) | | (Panel) | | | +- tagBtn[0] (Button3D) | | ("Axial") | +- view[1] --+- select[1] (ImageSelector) | | (Panel) | | | +- tagBtn[1] (Button3D) | | ("Sagittal") | +- view[2] --+- select[2] (ImageSelector) | (Panel) | | +- tagBtn[2] (Button3D) | ("Coronal") +- panel ----+- resolutions -+- tagBtn[3] (Button3D) (Panel) | (Panel3D) | ("Low") | +- tagBtn[4] (Button3D) | | ("Medium") | +- tagBtn[5] (Button3D) | ("High") +- controls -+- adjust ---+- left (Button3D) (Panel3D) | (Panel3D) | (triangle) | +- right (Button3D) | (triangle) +- slice (Label3D) | (current slice number) +- load (Button3D)
ImageFrame -+- picture ---+- canvas (ImageCanvas) | (Panel) | (Center) | +- hScroll (Scroller) | | (South, HORIZONTAL) | +- vScroll (Scroller) | (East, VERTICAL) +- controls --+- Quit (Button3D) (Panel3D) | ("Quit") +- Download (Button3D) | ("Download") +- Apply (Button3D) | ("Apply") +- Org (Button3D) | ("1:1") +- lbScale (Panel3D) | (current scale) +- sbScale (Scrller) (HORIZONTAL)
Scroller ----+- up (Button3D) (HORIZONTAL) | (West, triangle) +- down (Button3D) | (East, triangle) +- thumb (Thumb) (Center) Scroller ----+- up (Button3D) (VERTICAL) | (North, triangle) +- down (Button3D) | (South, triangle) +- thumb (Thumb) (Center)
Yuh-Jye Chang
Ph.D student at Syracuse University since Aug 1994. I am now working on The NPAC Visible Human visualization project under the advise of Dr. Paul Coddington. My first public Java applet The NPAC Visible Human Viewer was rated the No.1 and top 1% applet by JARS in Dec 1995. I am also the share holder and project leader of Newtek Corp. in Taipei, Taiwan. I initiated and completed several commercial projects using C++ on Chinese TrueType font related applications.