Structural processing

This section describes all structural processing modules, which include pre-processing and post-processing of T1-weighted images found in the BIDS directory. Structural processing modules perform volumetric (-proc_structural) and surface-based (-proc_surf, -post_structural, -GD) processing. These modules map subject data to volumetric and surface templates providing several useful structural metrics for further analyses, including geodesic distance matrices mapped to multiple parcellation schemes as well as vertexwise cortical thickness and curvature data.



This module performs initial structural pre-processing, keeping data in volumetric format. Two main spaces are found in this stream: nativepro as well as MNI152.

Nativepro?! 🤨

Nativepro stands for native processing space. This denomination is used to distinguish the space occupied by the main scan from standard native space. Indeed, as micapipe supports the alignment and averaging of several distinct T1w acquisitions, we opted to refer to the resulting space using a different term, so not to confuse this space with the native space of each original T1w scan.

  • Each T1-weighted run is LPI-reoriented, deobliqued, and oriented to standard space (MNI152).

  • If an MP2RAGE uni image is used an algorithm to denoise the salt and pepper backgroun noise is applied here

  • Create the T1-weighted image used in all downstream processing: T1_nativepro. If multiple T1w scans are found in the raw data, they are aligned to the first run and averaged.

  • Intensity non-uniformity correction (N4)

  • Intensity rescaling [100,0]

  • Create brain mask (mri_synthstrip)

  • Subcortical structure segmentation using FSL FIRST

  • Tissue type segmentation (Gray matter, white matter, CSF) using FSL FAST

  • White matter weighted intensity normalization

  • Non-linear registration to MNI152 (0.8mm and 2mm resolutions)

  • Five-tissue-type image segmentation (5ttgen, used for anatomically constrained tractography)



This modules performs cortical surface segmentation from all native T1w acquisitions stored in the subject’s BIDS directory.

Quality control 💅🏻

We recommend that users carefully inspect FastSurfer/FreeSurfer-generated cortical surface segmentations. As micapipe relies heavily on surface-based processing, poor segmentation quality may compromise the validity of downstream results. FreeSurfer provides comprehensive tutorials for manual correction of surface segmentations: See tutorials ‘Control Points’, ‘White matter’, and ‘Pial edits’ explaining different types of corrections that can be applied to cortical surfaces.

FastSurfer has this entry on manual edits for the mask:

  • Run surface reconstruction (fastsurfer or freesurfer) pipeline will all T1-weighted scans found in raw data directory



This first structural post-processing module registers native FreeSurfer-space cortical surfaces to a standard template, in addition to mapping all cortical parcellation schemes to the subject’s native surface space and volumetric nativepro space.

Prerequisites 🖐🏼

You need to run -proc_structural and -proc_surf before this stage.

  • Compute affine registration from native Surfer space to nativepro space

  • Register cerebellar atlas (MNI152) to subject’s nativepro space using affine transformation

  • Perform surface-based registration of fsaverage5 annotation labels to native surface

  • Register native surface parcellations to native Surfer volume

  • Apply linear registrations to bring volumetric parcellations to nativepro space

  • Apply linear registrations to bring surfaces to nativepro space

  • Register thickness and curvature to nativepro space

  • Build fsLR-32k sphere and resample white and pial surfaces to fsLR-32k and fsLR-5k template

  • Create midthickness surface from native surface and resampled fsLR-32k and fsLR-5k template



This module calculates geodesic distance between all cortical parcels from the subject’s native midsurface mesh using Dijkstra’s algorithm.

Prerequisites 🖐🏼

You need to run -proc_structural, -proc_surf and -post_structural before this stage

  • Identify centre vertex for each parcel, based on the vertex with the shortest summed Euclidean distance to all other vertices in the same parcel

  • Calculate geodesic distance from centre vertex to all other vertices on the midsurface mesh using workbench -surface-geodesic-distance

  • Average computed distances within parcels