Pipeline

The complete HINEC processing workflow — from raw NIfTI diffusion data to reconstructed fiber tracts.

Overview

The HINEC pipeline processes raw diffusion-weighted MRI data through four major stages: preprocessing, tensor estimation, tractography, and visualization. Each stage is mathematically grounded and designed for reproducibility.

Raw DWI
Preprocessing
DTI Estimation
FA & Eigenvectors
Parcellation
Tractography
Visualization
Entry Points
The pipeline has four main entry points: runhinec.m (quick start), main.m (core processing), runTractography.m (fiber tracking), and visualizeTractography.m (visualization).

Preprocessing Pipeline

The preprocessing pipeline (nim_preprocessing.m) implements a 10-step process with comprehensive T1 integration, addressing common artifacts in diffusion MRI data.

01

B0 Extraction

nim_preprocessing.m

Extract the first volume (b=0) as the non-diffusion-weighted reference image.

B0 Extraction
02

Brain Extraction

nim_preprocessing.m

Create a brain mask using T1-enhanced extraction (preferred) or DWI-only fallback (BET with f=0.3).

Brain Extraction
03

Denoising

nim_preprocessing.m

Optional MP-PCA denoising or Gaussian smoothing to reduce thermal noise.

Denoising
04

Field Map Correction

nim_preprocessing.m

FUGUE-based susceptibility distortion correction using B0 field maps.

Field Map Correction
05

Motion Correction

nim_preprocessing.m

Rigid body motion correction with b-vector rotation to match corrected orientations.

Motion Correction
06

Eddy Current Correction

nim_preprocessing.m

FSL eddy correction with automatic fallback to eddy_correct for datasets without acquisition parameters.

Eddy Current Correction
07

White Matter Segmentation

nim_preprocessing.m

Create optimized seeding masks from a preliminary DTI calculation, using FA thresholding and morphological erosion.

White Matter Segmentation
08

T1 Registration

nim_preprocessing.m

When T1 data is available, compute linear and nonlinear registrations to MNI space using FLIRT and FNIRT.

T1 Registration
09

Atlas Registration

nim_preprocessing.m

Transform brain atlas from MNI space to DWI space using the T1-guided composite registration chain, or direct FLIRT fallback.

Atlas Registration
10

Finalization

nim_preprocessing.m

Copy processed data to standard locations, run quality validation, generate processing reports, and clean up temporary files.

Diffusion Tensor Estimation

After preprocessing, HINEC estimates the diffusion tensor at every voxel using SPD-constrained log-linear fitting. The function nim_dt_spd computes the full 3×3 symmetric tensor, then nim_eig decomposes it into eigenvectors and eigenvalues.

matlab|main.m
% Sequential processing in main.m
nim = nim_dt_spd(nim); % SPD-constrained tensor estimation
nim = nim_eig(nim); % Eigendecomposition
nim = nim_fa(nim); % Fractional anisotropy

FA Computation

Fractional anisotropy is computed from the eigenvalues at each voxel. This scalar map serves dual purposes: it provides a clinical measure of white matter integrity, and it defines the seeding mask and termination criterion for tractography.

Fractional Anisotropy

A normalized measure of diffusion directionality, ranging from 0 (isotropic) to 1 (perfectly linear).

Where λ̄ = (λ₁ + λ₂ + λ₃)/3. Implemented in nim_fa.m.

Parcellation

HINEC registers a brain atlas (JHU, AAL, or Desikan) from MNI standard space to the subject's native DWI space. The preferred method uses a T1-guided composite transformation chain:

MNI Atlas → inverse warp → T1 space → T1-to-DWI transform → DWI space

If T1 data is unavailable, a direct FLIRT registration from MNI to DWI space is used as fallback.

Data Flow

text
Raw DWI → Preprocessing → DTI Processing → Tractography → Visualization
↓ ↓ ↓ ↓ ↓
Field Maps → Distortion Corr → FA Calculation → WM Seeding → Track Quality
Motion → Motion Corr → Eigenvectors → Boundary Prot → Statistics
Eddy → Eddy Corr → Parcellation → Track Valid → Reports
Tip
The pipeline caches intermediate results: if the output .mat file already exists, main() skips processing. Delete the output file to force a fresh run.