A biomechanical model of the human tongue for understanding speech production and other lingual behaviors

Adam Baker
Department of Linguistics
University of Arizona

The anatomical data

Obtaining the VHP data

Data from the Visible Human Project are available under a no-cost license that you can obtain from the National Institutes of Health. Click here to visit the VHP web site. When you complete the license agreement they will send you FTP information, with which you can download the data. The range of slices you need are given in Appendix A of my dissertation.

If one were clever and pressed for time, one might notice that the original scans can also be obtained by systematically downloading the high resolution axial sections from this web site.

The raw image segmentation data

The file format of this file is described in Appendix A of my dissertation.

  1. Download Total.raw.gz (373 kb)
  2. Decompress it
  3. Read it somehow

One way to get the data out would be to put Total.raw into the same directory as UnTongueCruncher.c, and compile and run the code. It will create files like Genioglossus.raw, Hyoglossus.raw, etc., which are blocks of volumetric data. These could be conveniently read into a volumetric imaging program (like Amira; see below).

If you wanted to put all those files back into Total.raw, just compile and run TongueCruncher.c, in the same directory.

Note on Amira

Once you run UnTongueCruncher.c and have a bunch of .raw files, you can read them with Amira. When you read the data in raw format, you'll want to specify that each voxel is represented by 1 byte (it may say char), and that the dimensions of the volumetric block are 434 by 339 by 277 (X by Y by Z).

Note on Matlab

If you'd like to read one of the volumetric files in Matlab, here is a snippet to extract the 100th slice. It assumes that “Total_ol2.raw” is in a place that Matlab can see it. Change the value of “sl” to whatever you wish.

sl = 100;
fid = fopen('Total_ol2.raw','rb');
fseek(fid,434*339*sl,'bof');
slice = fread(fid,[434 339],'uchar');
fclose(fid);
imagesc(slice); axis image;

Slightly processed image segmentation data

Since I segmented the images muscle-by-muscle, there were some places near the edges where the borders overlapped. The borders should really ever overlap except for transversus/verticalis and genioglossus. This file contains no overlap except that. It's volumetric data with each byte having one of these nine values:

ValueInterpretation
0Nothing
1Mucosa
2Genioglossus
3Hyoglossus
4Styloglossus
5Transversus/Verticalis
6Superior Longitudinalis
7Inferior Longitudinalis
8Area where Transversus/Verticalis and Genioglossus overlap

This file, incidentally, is the one that AssignProperties.c uses.

  1. Download Total_ol2.raw.gz (183 kb)
  2. Decompress it
  3. Read it somehow

All contents copyright © 2008 Adam Baker