The COR Volume Format
COR volumes are used to store high-resolution structural data and other data which are to be overlaid on the high-resolution structural volume.
COR volumes always have three dimensions (the three spatial dimensions; no time dimension is stored in COR format), and each dimension is 256 voxels to the side. The voxels are 1 mm to the side, so a volume in COR format will always contain 2563 voxels and will represent a cubic volume 25.6 cm to the side. The origin is taken to be the center of the volume.
The voxel values in the volume are stored as unsigned bytes in coronal slices, one slice to each file, which are named COR-001 to COR-256. The fastest varying index in the coronal slice files increases from right to left in the volume, and the next fastest varying index increases from superior to inferior. Slice numbers increase from posterior to anterior.
Note that given this naming convention, we can only have one COR volume in any directory. Usually, one will find that a COR volume has a directory to itself (with nothing else in the directory), and COR volumes are specified by their directory name.
In addition to the slice files, there is a header file named COR-.info. This file contains a list of parameters in ascii text. Each line contains a keyword or variable name followed by one or more values. Often, a COR-.info file will begin as follows:
imnr0 1 imnr1 256 x 256 y 256 thick 0.001000 psiz 0.00100
These few lines tell us that the first slice number (imnr0) and the last slice number (imnr1) are 1 and 256, respectively, that the size of each slice is 256 by 256 voxels, that the slice thickness (equivalent to the slice spacing in COR format) is 0.001 m, and that the in-plane resolution is 0.001 m.
A complete list of the header fields is given below.
imnr0 |
the number of the first slice |
imnr1 |
the number of the last slice |
ptype |
the voxel data type |
x |
the number of columns in each slice |
y |
the number of rows in each slice |
fov |
the field of view |
thick |
the slice thickness (slice spacing) in m |
psiz |
the in-plane resolution in m |
locatn |
location |
strtx |
the minimum value x can take in m |
endx |
the maximum value x can take in m |
strty |
the minimum value y can take in m |
endy |
the maximum value y can take in m |
strtz |
the minimum value z can take in m |
endz |
the maximum value z can take in m |
tr |
T_r |
te |
T_e |
ti |
T_i |
xform |
transform file |
The following fields give the exact position and orientation of the volume. These are taken from the original volume and most often give the orientation of the volume in scanner coordinates:
ras_good_flag |
flag telling if the orientation fields are set |
x_ras |
RAS coordinates of the x dimension (fastest varying) |
y_ras |
RAS coordinates of the y dimension (next fastest varying) |
z_ras |
RAS coordinates of the z dimension (increases with slice number) |
c_ras |
RAS coordinates of the center of the volume. |
Note that x_ras, y_ras, and z_ras are normalized to unit length (psiz and thick give the voxel size), and c_ras is given in mm.
The ras_good_flag parameter tells if this information was available and preserved; if it is zero or none of these fields exist, the volume is assumed to be oriented and positioned as described above, as if the position and orientation parameters are set as follows:
x_ras -1.0 0.0 0.0 y_ras 0.0 0.0 -1.0 z_ras 0.0 1.0 0.0 c_ras 0.0 0.0 0.0
The COR format is limited to storage of volume data in unsigned char format only, and does not allow int, float, double or long formats. Also, the COR format historically assumes a slice size of 256 by 256 voxels. For these reasons, the COR format is deprecated in favor of the newer mgh (and mgz) format.