This is the official PyTorch implementation of our paper:
SimCortex: Collision-free Simultaneous Cortical Surface Reconstruction
Kaveh Moradkhani, R. J. Rushmore, Sylvain Bouix
ShapeMI MICCAI (2025)
SimCortex proceeds in three consecutive stages:
-
Multi-Class Segmentation: A 3D U-Net segments each T1-weighted MRI into nine tissue classes.
-
Subject-Specific Initial Surface Generation: Binary masks are created from tissue labels, then signed-distance fields are computed and corrected to generate collision-free initial cortical surfaces.
-
Simultaneous Multiscale Diffeomorphic Surface Reconstruction: Four initial surfaces are simultaneously deformed using multiscale velocity fields to produce smooth, topology-preserving, and collision-free cortical meshes.
Train a 3D U-Net to produce 9-class segmentations used by later stages.
Run
python -m simcortex.segmentation.cli train --config-name train
python -m simcortex.segmentation.cli predict --config-name predict
python -m simcortex.segmentation.cli eval --config-name evalExtract lh/rh pial and lh/rh white cortical meshes from the 9-class predictions.
The algorithm tunes the pial level first (both hemispheres together) until there’s no pial↔pial collision; then it fixes that level and sets white a bit inside the pial (white_offset), tuning left white and then right white.
Run
python -m simcortex.initial_surf.cli generate --config-name generateThis stage simultaneously deforms the four initial surfaces.
Run
python -m simcortex.surf_recon.cli train --config-name train
python -m simcortex.surf_recon.cli predict --config-name predict
python -m simcortex.surf_recon.evaluate --config-name eval