◆ FORGE Suite
GitHubMechanical Neuroimaging Lab · Univ. of Delaware
Skip to content

Field correction

Why it is needed

The main magnetic field is never perfectly uniform. Susceptibility differences at air-tissue boundaries and imperfect shimming shift the resonance frequency by an amount ω(r) that varies across the object. A spin at position r gains an extra phase ω(r)·t during the readout, so the signal model for sample k, acquired at time tk, is

\[d_k = \sum_{\mathbf{r}} x(\mathbf{r})\, e^{-i 2\pi \mathbf{k}_k \cdot \mathbf{r}}\, e^{-i\omega(\mathbf{r}) t_k}\]

A reconstruction that ignores the second exponential puts signal in the wrong place. For Cartesian readouts the result is a shift. For spirals, where every sample has a different time and direction, the result is blurring around the regions of strongest off-resonance. The longer the readout, the worse it gets.

FORGE corrects for it by putting the field map, ω(r) in rad/s, into the forward model. That is why every reconstruction file needs a FieldMap array and a sample time in the fourth trajectory row.

Three ways to compute the model

The term e−iω(r)t depends on both position and time, so the forward model is no longer a Fourier transform and the FFT can't be used directly. FORGE offers three ways round this, chosen in forgeSense with -F.

Exact DFT (-F DFT, Gdft). Evaluates the sum above directly. It is exact for any field map but costs one complex exponential per sample per voxel, which is slow for large 3D images even on a GPU. forgePcSense uses it for each shot.

DFT with field-map gradients (-F DFTGrads, GdftR2). Also models how the field map varies within each voxel. A strong field gradient across a voxel dephases its spins, which a voxel-centre model can't capture. This is the most accurate model and the slowest.

Time segmentation (-F NUFFT, TimeSegmentation). Splits the readout into L segments with centre times τl and approximates

\[e^{-i\omega(\mathbf{r}) t} \approx \sum_{l=1}^{L} b_l(t)\, e^{-i\omega(\mathbf{r}) \tau_l}\]

Each term separates into a phase applied in image space and a weight bl(t) applied in k-space, so the model becomes L ordinary NUFFTs. This is much faster than the DFT, and is what forgeSense -F NUFFT, forgePcSenseTimeSeg and oscillateRecon use. With L = 1 there is no correction at all.

Choosing the number of segments

The approximation improves with L, and so does the cost: each iteration runs L NUFFTs per coil. The interpolator sets how the weights bl(t) are computed:

-I Interpolator Notes
hanning Hanning-windowed interpolation between neighbouring segments Cheapest to set up, least accurate per segment
minmax Min-max interpolator (Fessler) computed for the actual field map Most accurate per segment
histo Min-max interpolator from a histogram of the field map Close to minmax, faster to set up

A common rule of thumb is about one segment per millisecond of readout with Hanning interpolation, and one per 2 to 3 ms with min-max. When -t is not given, the programs use one segment per 2 ms with hanning and one per 3 ms with the others, which is coarse for Hanning. For long readouts or strong off-resonance, use -I minmax or set -t yourself, and check the result against a run with more segments.

Where the field map comes from

FORGE does not estimate field maps. They usually come from a separate multi-echo acquisition, processed and resampled onto the reconstruction grid during data preparation, for example by Magneto or FORGE Studio. An error in the field map turns into an error in the image, so a field map that is noisy or misregistered can make a corrected image worse than an uncorrected one.

Further reading

  • B. P. Sutton, D. C. Noll and J. A. Fessler, "Fast, iterative image reconstruction for MRI in the presence of field inhomogeneities," IEEE Transactions on Medical Imaging, 22(2), 2003. doi:10.1109/TMI.2002.808360
  • L.-C. Man, J. M. Pauly and A. Macovski, "Multifrequency interpolation for fast off-resonance correction," Magnetic Resonance in Medicine, 37(5), 1997.