The GRAPPA Algorithm#
Summary
GRAPPA (GeneRalized Autocalibrating Partial Parallel Acquisition) is a parallel-imaging reconstruction algorithm that estimates missing k-space lines by linear combination of acquired multi-coil data using kernels trained from a calibration region.
Background: Parallel Imaging in MRI#
Modern MRI scanners use arrays of receive coils, each with a distinct spatial sensitivity profile \(S_\ell(\mathbf{r})\). For \(L\) coils the measured signal is:
where \(\mathbf{k}_i\) is the \(i\)-th k-space sample location and \(n_{i,\ell}\) is thermal noise.
In matrix form the acquisition is
where \(\mathcal{F}_\Omega\) is the Fourier operator restricted to the sampled locations \(\Omega\) and \(\mathbf{S}\) stacks the coil sensitivity maps.
Undersampling \(\Omega\) accelerates the scan but creates aliasing artefacts in single-coil images. Parallel imaging exploits coil-to-coil diversity to undo the aliasing.
The GRAPPA Linear Prediction Model#
GRAPPA (Griswold et al., 2002) solves the aliasing problem entirely in k-space. The key observation is that any unacquired Cartesian k-space point for coil \(\ell\) can be expressed as a weighted sum of neighbouring acquired points across all coils:
where \(\mathcal{N}(\mathbf{k}_0)\) is a local kernel neighbourhood and \(w_{\ell,\ell'}(\Delta\mathbf{k})\) are the kernel weights (one matrix per displacement \(\Delta\mathbf{k}\)).
Kernel training#
Kernel weights are estimated from the auto-calibration region (ACR) — a small, fully sampled central portion of k-space. Within the ACR, both source (neighbours) and target (central point) values are known, so the weights are determined by least-squares:
where \(\mathbf{A}\) is the source matrix (rows = ACR positions, columns = neighbourhood values across all coils), \(\mathbf{B}\) is the target matrix, and \(\lambda\) is Tikhonov regularisation.
PyGROG implements this in pygrog.calib.KernelTable(), which returns
a stack of kernel matrices indexed by discrete displacements.
Practical Considerations#
Tip
Larger ACR regions yield more stable kernel estimates, at the cost of extra scan time. Typical ACR widths are 24–32 lines in each phase-encode direction.
Note
Tikhonov regularisation (\(\lambda\)) is critical for ill-conditioned kernels (few coils or large kernel size). PyGROG defaults to \(\lambda = 0.01\).
References#
Griswold MA, et al. Generalized autocalibrating partially parallel acquisitions (GRAPPA). Magn Reason Med. 2002;47(6):1202-10.
Uecker M, et al. ESPIRiT — an eigenvalue approach to autocalibrating parallel MRI. Magn Reason Med. 2014;71(3):990-1001.