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.
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".
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.
"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.
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).
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