Mercurial > hg > minc-tools
changeset 2311:436e51a37c48
Header file for standard analyze file structure
author | bert <bert> |
---|---|
date | Mon, 04 Jul 2005 12:47:07 +0000 |
parents | a438fa86baf0 |
children | 1d9e4fed701e |
files | conversion/nifti1/analyze75.h |
diffstat | 1 files changed, 100 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/conversion/nifti1/analyze75.h @@ -0,0 +1,100 @@ +/* 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;