nifti1_io
|
Data structure defining the fields in the nifti1 header. This binary header should be found at the beginning of a valid NIFTI-1 header file. More...
#include <nifti1.h>
Public Attributes | |
int | sizeof_hdr |
char | data_type [10] |
char | db_name [18] |
int | extents |
short | session_error |
char | regular |
char | dim_info |
short | dim [8] |
float | intent_p1 |
float | intent_p2 |
float | intent_p3 |
short | intent_code |
short | datatype |
short | bitpix |
short | slice_start |
float | pixdim [8] |
float | vox_offset |
float | scl_slope |
float | scl_inter |
short | slice_end |
char | slice_code |
char | xyzt_units |
float | cal_max |
float | cal_min |
float | slice_duration |
float | toffset |
int | glmax |
int | glmin |
char | descrip [80] |
char | aux_file [24] |
short | qform_code |
short | sform_code |
float | quatern_b |
float | quatern_c |
float | quatern_d |
float | qoffset_x |
float | qoffset_y |
float | qoffset_z |
float | srow_x [4] |
float | srow_y [4] |
float | srow_z [4] |
char | intent_name [16] |
char | magic [4] |
Data structure defining the fields in the nifti1 header. This binary header should be found at the beginning of a valid NIFTI-1 header file.
INTRODUCTION TO NIFTI-1: ------------------------ The twin (and somewhat conflicting) goals of this modified ANALYZE 7.5 format are: (a) To add information to the header that will be useful for functional neuroimaging data analysis and display. These additions include:
Most of the unused fields in the ANALYZE 7.5 header have been taken, and some of the lesser-used fields have been co-opted for other purposes. Notably, most of the data_history substructure has been co-opted for other purposes, since the ANALYZE 7.5 format describes this substructure as "not required".
NIFTI-1 FLAG (MAGIC STRINGS): ---------------------------- To flag such a struct as being conformant to the NIFTI-1 spec, the last 4 bytes of the header must be either the C String "ni1" or "n+1"; in hexadecimal, the 4 bytes 6E 69 31 00 or 6E 2B 31 00 (in any future version of this format, the '1' will be upgraded to '2', etc.). Normally, such a "magic number" or flag goes at the start of the file, but trying to avoid clobbering widely-used ANALYZE 7.5 fields led to putting this marker last. However, recall that "the last shall be first" (Matthew 20:16).
If a NIFTI-aware program reads a header file that is NOT marked with a NIFTI magic string, then it should treat the header as an ANALYZE 7.5 structure.
NIFTI-1 FILE STORAGE: -------------------- "ni1" means that the image data is stored in the ".img" file corresponding to the header file (starting at file offset 0).
"n+1" means that the image data is stored in the same file as the header information. We recommend that the combined header+data filename suffix be ".nii". When the dataset is stored in one file, the first byte of image data is stored at byte location (int)vox_offset in this combined file. The minimum allowed value of vox_offset is 352; for compatibility with some software, vox_offset should be an integral multiple of 16.
GRACE UNDER FIRE: ---------------- Most NIFTI-aware programs will only be able to handle a subset of the full range of datasets possible with this format. All NIFTI-aware programs should take care to check if an input dataset conforms to the program's needs and expectations (e.g., check datatype, intent_code, etc.). If the input dataset can't be handled by the program, the program should fail gracefully (e.g., print a useful warning; not crash).
SAMPLE CODES: ------------ The associated files nifti1_io.h and nifti1_io.c provide a sample implementation in C of a set of functions to read, write, and manipulate NIFTI-1 files. The file nifti1_test.c is a sample program that uses the nifti1_io.c functions. -----------------------------------------------------------------------------
char nifti_1_header::aux_file[24] |
auxiliary filename.
short nifti_1_header::bitpix |
Number bits/voxel.
float nifti_1_header::cal_max |
Max display intensity
float nifti_1_header::cal_min |
Min display intensity
char nifti_1_header::data_type[10] |
++UNUSED++
short nifti_1_header::datatype |
Defines data type!
char nifti_1_header::db_name[18] |
++UNUSED++
char nifti_1_header::descrip[80] |
any text you like.
short nifti_1_header::dim[8] |
Data array dimensions.
MRI slice ordering.
++UNUSED++
++UNUSED++
++UNUSED++
NIFTI_INTENT_* code.
char nifti_1_header::intent_name[16] |
'name' or meaning of data.
1st intent parameter.
2nd intent parameter.
3rd intent parameter.
char nifti_1_header::magic[4] |
MUST be "ni1\0" or "n+1\0".
float nifti_1_header::pixdim[8] |
Grid spacings.
NIFTI_XFORM_* code.
Quaternion x shift.
Quaternion y shift.
Quaternion z shift.
Quaternion b param.
Quaternion c param.
Quaternion d param.
++UNUSED++
Data scaling: offset.
Data scaling: slope.
++UNUSED++
NIFTI_XFORM_* code.
MUST be 348
Slice timing order.
Time for 1 slice.
Last slice index.
First slice index.
float nifti_1_header::srow_x[4] |
1st row affine transform.
float nifti_1_header::srow_y[4] |
2nd row affine transform.
float nifti_1_header::srow_z[4] |
3rd row affine transform.
float nifti_1_header::toffset |
Time axis shift.
Offset into .nii file
Units of pixdim[1..4]