VM Prone

Marching Through the Visible Man

The National Library of Medicine is creating a digital atlas of the human body. This project, called the Visible Human, has already produced computed tomography, magnetic resonance imaging and physical cross-sections of a human male cadaver. This paper describes a methodology and results for extracting surfaces from the Visible Male's CT data. We use surface connectivity and isosurface extraction techniques to create polygonal models of the skin, bone, muscle and bowels. Early experiments with the physical cross-sections are also reported. There is a companion paper on the Visible Woman.

Make Your Own Visible Woman shows how to use the Visualization Toolkit to make and render surface models of the Visible Woman.

For more examples of 3D medical imaging done in our laboratory go to our Scientific Movie Library.

white bar


- Introduction
- The Visible Man
- Define a Methodology
- Our Methodology
- Results
- Conclusions
- Acknowledgments
- References
- More Images

white bar


In 1989, the National Library of Medicine (NLM) began an ambitious project to create a digital atlas of the human anatomy. The NLM Planning Panel on Electronic Image Libraries [1] recommended a project to create XRAY Computed Tomography (XRAY-CT), Magnetic Resonance Imaging (MRI) and physical sections of a human cadaver. The project is called "The Visible Man." Another cadaver, that of a 59 year-old woman, "The Visible Woman", was completed in the Summer of 1995. See the companion paper.

Our laboratory has a long history of constructing 3D models from contiguous CT and MRI cross-sections. The Visible Man data sets provide an opportunity to test our algorithms on publicly available data. The data is interesting because of its size and variety of modalities. Also, its availability on the Internet means that other researchers can apply their algorithms to a common data set. In the past it has been difficult to obtain medical data because of patient confidentiality.

This paper reports our early experiments with the Visible Man CT data in the hopes that others will benefit from our experiences. The paper proceeds as follows. First we briefly discuss the background on the "Visible Man" and the four data sets. We describe the logistics of working with such large data sets and summarize the various parameters for the fresh CT data. Then, we propose a methodology for reporting algorithm results. We describe the methods and materials we used to create the models illustrated in subsequent sections.

white bar

The Visible Man

In August of 1991 NLM awarded a contract to the University of Colorado Health Sciences Center to create the digital cross-sections of a 39-year old convicted murderer who had donated his body to science. The radiological data was created using commercial MRI and XRAY-CT. Two CT data sets were created: one of the fresh cadaver, the other after the cadaver was frozen. Then, the cadaver was embedded in gelatin, frozen and sliced from head to toe. As each layer was exposed, a color RGB photograph was taken. Over 1800 24-bit images 2048 by 1216 were created.

The Fresh CT Data Set

Since we have experience working with radiological cross-sections from CT and MRI, our initial experiments used the CT data. We chose the fresh CT data because there is better soft tissue contrast from the data taken before the subject was frozen. Also, the fresh CT data is the most manageable of the four data sets. And, segmentation of soft tissue / air boundaries and bone are particularly easy for CT data. Compared to the MRI data, the slice spacing of the CT data is sufficient to produce decent 3D models.


We obtained the fresh CT data using ftp via the Internet. Internet access is available to users that sign a license agreement with NLM. The data is stored one slice per file and the files have been compressed using the unix compress program. Uncompressed, each slice is 512 x 512 x 16 bits with a 3416 byte header. The format of the headers is General Electric Genesis described in the Medical Image Format FAQ. The image header contains among other things the table position and field of view. These are important quantities when working with this data since the spacing between the slices and the pixel size changes several times throughout the data set. The slices are named as follows: c_vmxxxx.fre where xxxx is the location in mm's of the slice. There are 522 slices in the fresh CT data set using about 274 megabytes of disk storage.

Description of the CT data from headers

The first step to understand the data was to print the header information. In particular, we need to know the size of the pixels, and the distance between each slice. Also the order of acquisition is important so that we retain the proper left / right correspondence. In the fresh CT data set, the order of acquisition was from top to bottom.

The fresh CT data was acquired in several sections with varying pixel size and slice spacing. Because of this, we broke the data set into nine sections. We created a new section when at least one of three changes occurred in the slice headers:

  1. Change in field of view (fov).
  2. Change in slice spacing.
  3. Gap in acquisition.
The following summarizes the data for the nine sections.
Section Slice   #       Fov    Pixel    Spacing Aspect  Location
   #    Range                  Size              Ratio
0       1-8     8       250     .48828       1  2.048   390-383
1       9-67    59      460     .8984375     1  1.11304 382-324
2       68-150  83      345     .673828      1  1.48406 323-241
3       151-191 41      450     .8789063     3  3.41333 240-120
4       192-246 55      460     .8984375     3  3.33913 117- -45
5       247-258 12      460     .8984375     3  3.33913 -51 - -84
6       259-418 160     460     .8984375     3  3.33913 -90 - -565
7       419-480 62      480     .9375        5  5.33333 520 - 215
8       481-522 42      480     .9375        5  5.33333 -210 - -415

white bar

Define a Methodology

We propose a simple methodology to report results on the Visible Human data sets. These are by no means rigid rules, just guidelines for reporting results. The goal is to allow researchers to reproduce the results reported by others and to compare their results.
  1. Define methods and materials. Identify the software used in each processing step and the origin of the software. Cite any references that describe the algorithms. Describe the hardware configurations used for processing the data.
  2. Define parameters for each algorithm. Be specific enough so that another researcher, using the same or similar software, could reproduce the results. Parameters include region of interest coordinates, threshold values, opacity values and connectivity seeds.
  3. Report results Include timings for each step. Although the actual times often depend on particular implementations, these times will give the reader a general feel for the processing times.
If additional images or animations are available report the site where they can be obtained. Use Uniform Resource Locators (URL's) when appropriate.

white bar

Our Methodology


This work was done on an Onyx Reality Engine 2 (Silicon Graphics, Mountain View, CA) with the following configuration:

	2 150 MHZ IP19 Processors
	CPU: MIPS R4400 Processor Chip Revision: 5.0
	FPU: MIPS R4010 Floating Point Chip Revision: 0.0
	Data cache size: 16 Kbytes
	Instruction cache size: 16 Kbytes
	Secondary unified instruction/data cache size: 1 Mbyte
	Main memory size: 256 Mbytes, 2-way interleaved


The Reality Engine was running Irix 5.3. We used a variety of software tools we call the Research Workstation, all developed in-house. All of the software works with 16-bit medical images.

is an image display package that allows users to access medical images stored in a variety of formats. We use it to inspect the image data and select thresholds for surfaces.
is a surface tracking connectivity program [2] that takes user specified seed points and marks all voxels that are connected to the initial seeds and that satisfy a threshold range.
is a volume reformatting program that uses tri-linear interpolation to resample volume data on arbitrary planes.
implements the Marching Cubes algorithm [3] and creates triangles from volume data. This implementation can process all of a volume, or only those voxels whose connectivity bit has been set by surf3d.
LYMB [4]
is an object-oriented development system written in C that permits object creation and modification through a scripting language. The objects in LYMB are C modules that implement methods in C procedures. One of these objects, decimate, implements the triangle decimation algorithm described in [5]. We use decimate to reduce the number of triangles in the models created by cubes. LYMB also has extensive visualization and rendering capabilities. A user interface and rendering subsystem in LYMB were used to create the images in the paper.

white bar


We applied a single methodology to extract skin, bone, muscle, and the bowels from the fresh CT data.

Bone and Skin

We used the same threshold throughout the 9 sections of the CT data set to extract the skin and bone. For the skin, we applied the connectivity algorithm followed by Marching Cubes with a density value of 600 to remove the patient table and internal air passages from the extracted surfaces. We also applied two iterations of the decimation algorithm to the skin surface. We started with a decimation value of .0002 (or 2%) of the field of view. The skin has less detail than the internal surfaces and we can afford to reduce the number of skin triangles more heavily than for the internal surfaces. We did not apply connectivity for the bone surface since there are many disconnected pieces of bone in the body. A density value of 1224 was used for the bone, the same value we have used successfully on other CT data sets. Table 2 shows triangle counts and timings for the skin surfaces. Table 3 shows the timings and counts for the bone. The times for each step are central processor unit (CPU) times. The images in Figure 2 where created using LYMB. The surfaces for each section were manually aligned using an interactive rendering interface in LYMB. We chose section 6 as the center of the model and moved the other sections relative to this surface. Table 4 shows the relative movements of each section measured in millimeters.
Section Connect Time    Cubes   Time   Decimate Time(sec)

0       31616   0.67    63662   4.14    27168   14.24
1       65584   4.01    131448  18.17   53362   28.27
2       139922  6.20    281013  30.00   96354   68.54
3       115732  3.28    231683  18.52   77861   54.01
4       139624  4.38    277848  23.71   70773   82.61
5       27213   0.91    54476   4.76    12480   20.28
6       524253  14.04   1049476 79.69   29507   322.05
7       167288  5.07    334643  30.32   84342   89.46
8       93266   2.90    186630  17.08   71485   43.04
	-----   -----   ------- -----   -----   -----
Totals  1304498 41.46   2610877 226.39  798227  722.50

TABLE 2. Triangle Counts and Times for Skin.
Section Cubes   Time   Decimate Time(sec)

0       38394   6.23    17799   7.64
1       257356  49.06   139852  47.31
2       865454  93.78   541654  135.41
3       193102  34.24   137717  28.63
4       915904  77.94   679246  125.05
5       158174  14.58   118091  20.90
6       1990946 199.20  1501322 273.11
7       74864   41.58   49610   12.46
8       220916  33.16   168579  28.39
Totals  4715110 549.77  3353870 678.9

TABLE 3. Triangle Counts and Times for Bone.
Section x       y       z

0       104     165     482
1       0       0       473
2       57      57      413
3       5       5       330
4       0       0       207
5       0       0       39
6       0       0       0
7       -13     -8      -480

TABLE 4. Offsets (in mm's) for each section.
We also reconstructed coronal cross-sections for each of the data sets using the softreformat program of the Research Workstation, composing the reformatted image in Figure 2 using Jeff Poskanzer's Portable Bitmap utilities. The gaps in the reformatted images show the boundaries of the 8 sections (the 9th contains the feet and is not contiguous with the other sections).


The bowels were extracted from section 6 by first running the connectivity algorithm and then Marching Cubes with a density of 700. The muscle was similarly extracted using connectivity and Marching Cubes with a density of 1010. The region of interest for the muscle was restricted to slices 100 - 160 because the CT scan artifacts higher in the body caused the connectivity algorithm to leak. Two decimation iterations were applied to both the muscle and bowel surfaces. The bowels were colored with (red, green, blue) values of (.89, .81, .34) with a specular component of .4 and a specular power of 10. The muscle color is (.6980, .1333, .1333), specular component .4 and specular power 10. We created a separate back face property for these two surfaces by reducing the diffuse component of each material to .4. This surface visualization technique is useful to give the viewer a clue as to which surface is an outward surface and which is an inward surface.

Muscles in the Leg.

The thigh muscles are in section 7. We extracted them using the same density value, 1010, that we used in section 6. A separate connectivity seed was specified for each muscle.

Flying Through the Body.

We created a flight through the bone surfaces extracted for the whole data set. We first rendered the skin model for each section properly displaced. Then, using the picking facility in LYMB, we selected 40 points with a mouse from the skin to serve as key frames for an animation. We key framed both the camera look from and look at points using consecutive picked points. LYMB created a smooth camera motion by interpolating the from and to points using splines [6]. We specified 1 second of animation between each key frame point, resulting in 1200 animation frames. Before rendering the sequence, we turned off the skin surface, rendered each frame and saved them to disk. The Silicon Graphics movieconvert program created a lossless QuickTime movie. After transferring the 550 megabyte QuickTime movie to a Macintosh, we single frame recorded the animation using the DiaQuest animaq software controlling a JVC BR-S811U S-VHS VCR. Figures 5 and 6 shows two frames from the resulting animation.

We also produced animations to view the torso and fly around the thighs.

Working with the Physical Cross-Sections.

We have done some preliminary investigation of the physical cross-sections. Here we split each color physical cross-section into its red, green and blue components shown in Figure 7. Then, we applied the grey-scale algorithms described above to the red channel only. Figure 8 shows a front view and a profile of the extracted skin surface from 215 slices. We selected the outer skin by first running the connectivity program marking 1538827 voxels and then extracting 3106832 triangles in 181 seconds. We ran two decimation iterations that removed 1226351 triangles.

white bar


The National Library of Medicine through the Visible Human Project has provided the medical research and educational community with a rich set of anatomical data. The general availability of the data will encourage researchers to develop new algorithms and compare their work with others. Our experience with that data has been positive although any group working with the data must be prepared to dedicate large amounts of disk storage and computer resources to the project. Practically, most groups will work with subsets of the data, concentrating on perhaps a few anatomical parts of regions. We expect that the major effort in the next few years will be to segment the Visible Man (and Woman). Such a large task will require cooperation of many research groups throughout the world. Central repositories of segment information will be required and we hope the NLM will be able to provide such facilities.

white bar


Most of this work was performed while the author was a visiting scientist at the Center for In-Vivo Microscopy at Duke University Medical Center. Al Johnson, Director of the Laboratory, and his staff provided a rich hardware and software environment for these experiments. Others will find that working with such large data sets puts pressure on most laboratory resources.

white bar


  1. National Library of Medicine (U.S.) Board of Regents. Electronic imaging: Report of the Board of Regents. U.S. Department of Health and Human Services, Public Health Service, National Institutes of Health, 1990. NIH Publication 90-2197.
  2. Cline, H. E., Dumoulin, C. L., Lorensen, W. E., Hart, H. R., and Ludke, S., "3D Reconstruction of the Brain from Magnetic Resonance Images Using a Connectivity Algorithm," Magnetic Resonance Imaging, vol. 5, no. 5, pp. 345-352, 1987.
  3. Lorensen, W. E. and Cline, H. E., "Marching Cubes: A High Resolution 3D Surface Construction Algorithm," Computer Graphics, vol. 21, no. 3, pp. 163-169, July 1987.
  4. Schroeder, W., Lorensen, W., Montanaro, G. and Volpe, C., "Visage: An Object-Oriented Scientific Visualization System," in Proceedings of Visualization '92, IEEE Press, October 1992, pp. 219-226.
  5. Schroeder, W. J., Zarge, J., and Lorensen, W. E., "Decimation of Triangle Meshes," Computer Graphics, vol. 26, no. 2, pp. 65-70, August 1992.
  6. Kochanek, D. H. U. and Bartels, R. H., "Interpolating Splines with Local Tension, Continuity, and Bias Control," Computer Graphics, vol. 18, no. 3, pp. 33-41, July 1984.

white bar

More Images

From the fresh CT data
sfb slr bfb blr composite
bowels transparent bowels section6.1 section6.2 section6.3 section6.4 section6.5
m1 m2 m3 m4
flyby1 flyby2 flyby3 flyby4

From the physical slice data
rawskin1 rawskin2 rawskin3 rawskin4

Questions / Comments

James Miller (millerjv@crd.ge.com)
Last Updated:

GE Home Page | GE Global Research