Maverick/VisibleManTxtToMhd
Maverick: VisibleManTxtToMhd
Introduction
Use this program to import the Visible Man's data into a format that can be read by ITK and VTK-based applications.
Background
The Visible Man's CT data consists of a pair of files per CT slice:
- The slice's data is stored in a binary-encoded format (.fre) that isn't readable by many programs
- e.g., c_vm1013.fre, c_vm1014.fre, ...
- The binary data (uncompressed) for the slice actually occurs at the end of this file
- The header size for this file (the information before the data begins) is of variable length
- A text file (.txt) that describes the acquisition parameters of the slice
- e.g., c_vm1013.fre.txt, c_vm1014.fre.txt, ...
- Describes the origin, spacing, directions, kEv, etc for each slice
Operation
This utility program will convert a list of .txt files from the visible man collection to corresponding .mhd files. Those .mhd files are part of the MetaImage standard which is supported by ITK, VTK, Slicer, Analyze, and numerous other packages. The .mhd files point to the .fre files and allow those corresponding slices to be read by MetaImage compliant libraries and applications.
Usage
At this time this utility program is only available with a command-line interface.
Maverick/bin/VisibleManTxtToMhd <input.txt> <output.mhd>
The first argument is the path to the visible man's .txt file to be converted.
The second argument is the output path to the .mhd file to be created.
Warning: The .mhd files only point to the binary data (in this case the .fre file) that they describe. The slice data is not duplicated in the .mhd file. Therefore, to use this .mhd file to read the slice data, the .mhd file must be created and/or placed in the same directory as the .fre file to which it points.
Hint: The .mhd files are text files. Any text editor can be used to create or modify these files. Additional MetaImage documentation is ONLINE.
Use cases
Linux
Consider a directory that contains a subset of the Visible Man's CT data:
c_vm1013.fre c_vm1013.fre.txt c_vm1014.fre c_vm1014.fre.txt c_vm1015.fre c_vm1015.fre.txt c_vm1016.fre c_vm1016.fre.txt c_vm1017.fre c_vm1017.fre.txt c_vm1018.fre c_vm1018.fre.txt c_vm1019.fre c_vm1019.fre.txt c_vm1020.fre c_vm1020.fre.txt c_vm1021.fre c_vm1021.fre.txt c_vm1022.fre c_vm1022.fre.txt c_vm1023.fre c_vm1023.fre.txt c_vm1024.fre c_vm1024.fre.txt c_vm1025.fre c_vm1025.fre.txt c_vm1026.fre c_vm1026.fre.txt c_vm1027.fre c_vm1027.fre.txt
Processing a single .txt file
You can process an individual file using, for example, the command:
VisibleManTxtToMhd c_vm1013.fre.txt c_vm1013.fre.txt.mhd
That will create a file called c_vm1013.fre.txt.mhd that contains the following:
NDims = 3 DimSize = 512 512 1 HeaderSize = -1 Offset = 123 125 389 Orientation = -1 0 0 0 -1 0 0 0 1 ElementType = MET_USHORT ElementByteOrderMSB = True ElementSpacing = 0.488281 0.488281 1 ElementDataFile = LIST c_vm1013.fre
That c_vm1013.fre.txt.mhd file captures the dimensions, origin (Offset), orientation, and pixel spacing for the data contained in the file c_vm1013.fre. The line "HeaderSize = -1" forces the data to be read from the end of the .fre file, thereby skipping an arbitrary-sized header.
Processing multiple .txt files
You can create a for-loop to process all of the .txt files in a directory. If your shell is bash, the following for-loop will work:
for i in *txt; do ~/src/Maverick-VS9/bin/RelWithDebInfo/VisibleManTxtToMhd $i $i.mhd; done
The result of that command will be a new directory listing that resembles the following:
c_vm1013.fre c_vm1013.fre.txt c_vm1013.fre.txt.mhd c_vm1014.fre c_vm1014.fre.txt c_vm1014.fre.txt.mhd c_vm1015.fre c_vm1015.fre.txt c_vm1015.fre.txt.mhd c_vm1016.fre c_vm1016.fre.txt c_vm1016.fre.txt.mhd c_vm1017.fre c_vm1017.fre.txt c_vm1017.fre.txt.mhd c_vm1018.fre c_vm1018.fre.txt c_vm1018.fre.txt.mhd c_vm1019.fre c_vm1019.fre.txt c_vm1019.fre.txt.mhd c_vm1020.fre c_vm1020.fre.txt c_vm1020.fre.txt.mhd c_vm1021.fre c_vm1021.fre.txt c_vm1021.fre.txt.mhd c_vm1022.fre c_vm1022.fre.txt c_vm1022.fre.txt.mhd c_vm1023.fre c_vm1023.fre.txt c_vm1023.fre.txt.mhd c_vm1024.fre c_vm1024.fre.txt c_vm1024.fre.txt.mhd c_vm1025.fre c_vm1025.fre.txt c_vm1025.fre.txt.mhd c_vm1026.fre c_vm1026.fre.txt c_vm1026.fre.txt.mhd c_vm1027.fre c_vm1027.fre.txt c_vm1027.fre.txt.mhd
Windows
Install cygwin and follow the directions for linux.