/* dbh.h - Analyze 7.5 header file */
/* */
/* Compiled by Andrew Janke (rotor@cmr.uq.edu.au) */
/* from http://www.mayo.edu/bir/analyze/AnalyzeFileInfo.html */
/* http://homepage2.nifty.com/peco/gpetview/gpetview.html */
/* Chris Rorden - chris.rorden@nottingham.ac.uk */
/* Matthew Brett - matthew.brett@mrc-cbu.cam.ac.uk */
#define DT_NONE 0 /* No data type */
#define DT_UNKNOWN 0 /* Unknown data type */
#define DT_BINARY 1 /* Binary ( 1 bit per voxel) */
#define DT_UNSIGNED_CHAR 2 /* Unsigned character ( 8 bits per voxel) */
#define DT_SIGNED_SHORT 4 /* Signed short (16 bits per voxel) */
#define DT_SIGNED_INT 8 /* Signed integer (32 bits per voxel) */
#define DT_FLOAT 16 /* Floating point (32 bits per voxel) */
#define DT_COMPLEX 32 /* Complex (64 bits per voxel; 2 floating points) */
#define DT_DOUBLE 64 /* Double precision (64 bits per voxel) */
#define DT_RGB 128 /* Uchar x 3 (24 bits per voxel) */
#define DT_ALL 255 /* */
struct header_key{ /* off + size */
int sizeof_hdr; /* 0 + 4 - the byte size of the header file */
char data_type[10]; /* 4 + 10 - the data type of the file */
char db_name[18]; /* 14 + 18 - */
int extents; /* 32 + 4 - should be 16384 */
short int session_error; /* 36 + 2 - */
char regular; /* 38 + 1 - 'r' indicating all images/volumes are the same size */
char hkey_un0; /* 39 + 1 - */
}; /* total=40 bytes */
struct image_dimension{ /* off + size */
short int dim[8]; /* 0 + 16 - array of the image dimensions */
/* dim[0] # of dimensions in database; usually 4 */
/* dim[1] X dim - pixels in an image row */
/* dim[2] Y dim - pixel rows in slice */
/* dim[3] Z dim - slices in a volume */
/* dim[4] Time dim - volumes in database */
char vox_units[4]; /* 16 + 4 - specifies the spatial units of measure for a voxel */
char cal_units[8]; /* 20 + 8 - specifies the name of the calibration unit */
short int unused1; /* 28 + 2 */
short int datatype; /* 30 + 2 - datatype for this image set */
short int bitpix; /* 32 + 2 - # of bits per pixel 1, 8, 16, 32, or 64. */
short int dim_un0; /* 34 + 2 - */
float pixdim[8]; /* 36 + 32 - pixdim[] specifies the voxel dimensions: */
/* pixdim[1] - voxel width */
/* pixdim[2] - voxel height */
/* pixdim[3] - interslice distance */
/* ..etc */
float vox_offset; /* 68 + 4 - byte offset in the .img file at which voxels start. */
/* This value can be negative to specify that the */
/* absolute value is applied for every image */
float scale_factor; /* 72 + 4 = funused1; scale factor used by SPM; non standard */
float funused1; /* 76 + 4 */
float funused2; /* 80 + 4 */
float cal_max, cal_min; /* 84 + 8 - calibrated max and min: */
/* www.mailbase.ac.uk/lists/spm/2000-09/0099.html */
float compressed; /* 92 + 4 */
float verified; /* 96 + 4 */
int glmax, glmin; /* 100 + 8 - global max and min pixel values (entire database) */
}; /* total=108 bytes */
struct data_history{ /* off + size */
char descrip[80]; /* 0 + 80 */
char aux_file[24]; /* 80 + 24 */
char orient; /* 104 + 1 - slice orientation for this database | */
/* 0 transverse unflipped | */
/* 1 coronal unflipped | disregarded */
/* 2 sagittal unflipped | by SPM */
/* 3 transverse flipped | */
/* 4 coronal flipped | */
/* 5 sagittal flipped | */
short int originator[5]; /* 105 + 10 - origin | */
/* originator[0] x-origin | non standard */
/* originator[1] y-origin | SPM use only */
/* originator[2] z-origin | */
char generated[10]; /* 115 + 10 */
char scannum[10]; /* 125 + 10 */
char patient_id[10]; /* 135 + 10 */
char exp_date[10]; /* 145 + 10 */
char exp_time[10]; /* 155 + 10 */
char hist_un0[3]; /* 165 + 3 */
int views; /* 168 + 4 */
int vols_added; /* 172 + 4 */
int start_field; /* 176 + 4 */
int field_skip; /* 180 + 4 */
int omax, omin; /* 184 + 8 */
int smax, smin; /* 192 + 8 */
}; /* total=200 bytes */
struct analyze75_hdr {
struct header_key hk; /* 0 + 40 */
struct image_dimension dime; /* 40 + 108 */
struct data_history hist; /* 148 + 200 */
}; /* total= 348 bytes */
typedef struct{
float real;
float imag;
} COMPLEX;