Skip to content

Notes about the slope and offset correction

Sebastiano Ferraris edited this page Feb 15, 2018 · 3 revisions

Slope is a float or a vector that needs to be multiplied to the data, to obtain the data as they are acquired.

Offset is an additive analogous to the slope.

To reduce the size of an acquisition each slice is divided by a common constant float factor, and subtracted by another constant, so that at each voxel only the integer part is stored (using int).

Therefore, to obtain the exact values for the voxel as they are detected at scanning time (as float), each slice needs to be multiplied by the slope, and the offset needs to be added (see ParaVision manuals, page D-2-66):

real_value_acquired[slice_j][x] = data_integer_reminder[slice_j][x] * float_slope[slice_j] + offset[slice_j]

(where = is an almost equal, the small loss in accuracy is justified by the huge amount of space saved)

In bruker2nifti the user can decide if applying the slope correction or not. This will provide an heavier image, with values closer to the one acquired.

The correction for the offset is currently implemented only in the dev branch. Will integrated in the master and released as next patch.

Note for DWI: As a choice, when it is about DWI, in the current version (1.0.0dev and below), the slope correction is bypassed by default. This is done to avoid too large images to store and manage afterwards (in some cases 300x300x300x200 voxels of float), and almost unmanageable, while the result of the DTI processing was not having any significant improvement. See issue #28.