The easiest and fastest way to turn brain MRI scans into 3D printable models 🖨️ powered by deepmriprep ✨
Use the Colab demo or install it locally via pip install brain_stl 💨
By default, the model is saved as brain.stl, but you can customize the filename along with other options like
- Threshold: Pick a value between 0 and 3 for different tissue types (see GIF left,
2.5: white matter only) 🧠 - Hollowness: Adjust how hollow the brain is (enables faster printing) 💨
- Text: Add personalized text that works as a support structure 🔤
- Smoothing: Achieve a polished surface via iterative Laplacian smoothing ✨
- Mesh Reduction: Simplify the mesh to reduce the size of
brain.stl✂️
To get your first brain.stl just run
from brain_stl import run_brain_stl
run_brain_stl() # per default output_folder='.' (current folder)and a publicly available brain MRI scan (from OpenNeuro) will be used 🌐
Scan files can be inputted in NifTi (.nii or .nii.gz) or DICOM (.dcm or folder) format
from brain_stl import run_brain_stl
run_brain_stl('/path/to/scan.nii.gz') # or '/path/to/dicom_folder'The main arguments of run_brain_stl are
scan_filepath: Path to the input scan (ifNone, use scan fromurl). Default:Noneoutput_folder: Folder to save the.stlfile and other outputs. Default:'.'stl_name: Name of the example.stlfile (without extension). Default:'brain'
Click here, to see all remaining arguments 📑
nifti_name: If DICOM produces multiple NifTis, this NifTi filename is used to proceed. Default:Noneurl: URL to download a brain scan if noscan_filepathis provided. Default:OPENNEURO_URLuse_cache: IfTrue, reuses intermediate outputs (e.g., tissue data). Default:Falsethreshold: Threshold tissue value (0.5: fluid,1.5: gray matter,2.5: white matter). Default:1.5hollow: How hollow the brain is (0 to 1). Default:0in_template_space: IfTrue, the 3D model is in standardized (template) orientation. Default:Falsemesh_reduction: Fraction of mesh reduction (0 to 1) for smaller.stlfile size. Default:0(no reduction)smooth_iter: Number of iterations for Laplacian smoothing. Default:0(none)smooth_lamb: Strength of each Laplacian smoothing step. Default:0.2text: Custom text used as structural support. Default:Nonetext2: Second line of text. Default:Nonetextsize: Size (height) of the text. Default:120textback: Coronal (depth) position of the back of the text. Default:300textfront: Coronal (depth) position of the front of the text. Default:330textlinelength: Length of line below the text. Default:10
Process your first brain scan from the terminal by just running
brain-stlWithout providing any arguments, it downloads a publicly available scan and creates a brain.stl of it 🧠
Run brain-stl --help (+copy&paste into ChatGPT) to understand the usage of custom settings 💡
Use create_gif.py to get a GIF of your model and share it on social media with the hashtag #brain-stl 🤗
