cifti::nifti_1_header Struct Reference

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]

## Detailed Description

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:

- More basic data types.
- Two affine transformations to specify voxel coordinates.
- "Intent" codes and parameters to describe the meaning of the data.
- Affine scaling of the stored data values to their "true" values.
- Optional storage of the header and image data in one file (.nii). (b) To maintain compatibility with non-NIFTI-aware ANALYZE 7.5 compatible software (i.e., such a program should be able to do something useful with a NIFTI-1 dataset – at least, with one stored in a traditional .img/.hdr file pair).

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.

The documentation for this struct was generated from the following file:

- nifti1.h