Skip to content

S4: Motion Correction

Step Code: S4_motion_correction
Depends on: S3 (Functional Initialization & Crop)
Required by: S5 (Distortion Correction), S6 (Registration)


Purpose

S4 minimizes the impact of subject motion on the fMRI time series. Even small movements (< 1mm) can induce significant signal changes in spinal fMRI due to the small cross-sectional area of the cord. This step aligns all functional volumes to the robust reference created in S3.


Algorithm Overview

The S4 step consists of two primary subtasks:

Subtask Name Description
S4.1 Motion Correction Register all volumes to the reference using sct_fmri_moco
S4.2 Evaluation & QC Compute motion metrics (FD, DVARS) and TSNR improvement

S4.1: Motion Correction

Rationale

Standard brain motion correction tools (like FSL MCFLIRT) assume a rigid body. The spinal cord, however, is a non-rigid structure that can deform. While fully non-rigid motion correction is complex, a slice-wise or polynomial-regularized approach is more effective for the cord. We use sct_fmri_moco with polynomial regularization to account for smooth deformations along the Z-axis.

Algorithm

  1. Grouping - Volumes are grouped (e.g., adjacent 3-5 volumes) to improve SNR for registration if data is noisy (optional).
  2. Registration - Each volume (or group) is registered to the S3 Robust Reference using slice-wise translation (Tx, Ty) regularized by a polynomial function along Z.
  3. Resampling - The calculated transformations are applied to the original data using spline interpolation.

Command

sct_fmri_moco -i funccrop_bold.nii.gz -ref func_ref.nii.gz \
              -g 1 -param params.txt -x spline

QC: Motion Traces

Motion Traces

What to look for:

  • ✅ Smooth, low-amplitude traces (typically < 1-2 mm).
  • ✅ Periodic motion often corresponds to respiration.
  • ❌ FAIL: Sudden large jumps (> 2-3 mm) or continuous drift indicating scanner instability or severe patient discomfort.

S4.2: Evaluation

Rationale

We must quantify the success of motion correction. Two key metrics are used: 1. DVARS (Derivative of VARiance): Measures frame-to-frame intensity changes. Spikes in DVARS indicate sudden motion. 2. tSNR (temporal Signal-to-Noise Ratio): The mean signal divided by the standard deviation over time. Effective motion correction should increase tSNR in the cord.

Algorithm

  1. Compute DVARS on the motion-corrected data.
  2. Compute tSNR before and after motion correction.
  3. Generate QC Reportlets.

QC: DVARS Plot

DVARS Plot

What to look for:

  • ✅ Few or no spikes crossing the outlier threshold (dashed line).
  • ✅ Lower overall variability compared to raw data (if plotted together).

QC: tSNR Comparison

tSNR Comparison

What to look for:

  • Right side (After) should be brighter/redder (higher tSNR) than the Left side (Before), especially inside the cord.
  • ✅ Cord structure should be sharper.
  • ❌ FAIL: tSNR decreases or cord becomes blurry.

Outputs

Derivatives

derivatives/spinalfmriprep/{dataset}/sub-{id}/func/
├── sub-{id}_task-{task}_desc-moco_bold.nii.gz        # Motion-corrected 4D data
├── sub-{id}_task-{task}_desc-moco_mean.nii.gz        # Mean of moco_bold
├── sub-{id}_task-{task}_desc-moco_params.tsv         # Motion parameters (Tx, Ty per frame)
└── sub-{id}_task-{task}_desc-confounds_timeseries.tsv # Updated with FD/DVARS

derivatives/spinalfmriprep/{dataset}/sub-{id}/figures/
├── sub-{id}_..._desc-S4_motion_traces.png
├── sub-{id}_..._desc-S4_dvars_plot.png
└── sub-{id}_..._desc-S4_tsnr_comparison.png

CLI Usage

# Run S4 for a single dataset
poetry run spinalfmriprep run S4_motion_correction \
  --dataset-key <KEY> \
  --datasets-local config/datasets_local.yaml \
  --out work/wf_reg_001

QC Status Logic

status = FAIL if:
  - Max displacement > 3mm (Tx or Ty)
  - Mean FD > 0.5mm
  - tSNR improvement < 0% (worsened)

status = WARN if:
  - Max displacement > 2mm
  - > 20% frames define as high motion (FD > 0.5mm)
  - tSNR improvement < 5%

status = PASS otherwise

References

  1. SCT Motion Correction: De Leener et al. NeuroImage 145:24-43 (2017). DOI
  2. Framewise Displacement (FD): Power et al. NeuroImage 59(3):2142-2154 (2012).

Last updated: February 2026