= Bayesian Segmentation with Histological Atlas "NextBrain" =
<
>
'''''Visit [[https://github-pages.ucl.ac.uk/NextBrain|the homepage of the NextBrain project]] for further information on this atlas. '''''
<
>
<
>
''Author: Juan Eugenio Iglesias''
<
>
''E-mail: jiglesiasgonzalez [at] mgh.harvard.edu''
<
>
<
>
''Rather than directly contacting the author, please post your questions on this module to the FreeSurfer mailing list at freesurfer [at] nmr.mgh.harvard.edu''
<
>
<
>
A preprint of the manuscript describing the atlas and segmentation method used in this module can be found [[https://www.biorxiv.org/content/10.1101/2024.02.05.579016v1|on bioRxiv.]]
<
>
=== Contents ===
1. General Description
2. Installation
3. Usage ('full' Bayesian version)
4. Usage (fast version)
5. Frequently asked questions (FAQ)
<
>
=== 1. General Description ===
This module uses our new probabilistic atlas of the human brain to segment 333 distinct ROIs per hemisphere on in vivo scans. Segmentation relies on a Bayesian algorithm and is thus robust against changes in MRIi pulse sequence (e.g., T1-weighted, T2-weighted, FLAIR, etc). Sample slices of the atlas and the segmentation of the sample subject "bert" are shown below:
<
><
> {{attachment:examples.png||height="320"}} <
>
=== 2. Installation ===
The first time you run this module, it will prompt you to download the atlas. Follow the instructions on the screen to obtain the files.
<
>
=== 3. Usage ('full' Bayesian version) ===
To segment a brain MRI scan,
{{{
mri_histo_atlas_segment INPUT_SCAN OUTPUT_DIRECTORY ATLAS_MODE GPU THREADS [BF_MODE] [GMM_MODE]
}}}
where:
''INPUT_SCAN'': scan to process, in mgz or nii(.gz) format.
''OUTPUT_DIRECTORY'': directory where segmentations, volume files, etc, will be created (more on this below).
''ATLAS_MODE'' : full (atlas with all 333 labels) or simplified (simpler brainstem protocol; recommended)
''GPU'': set to 1 to use the GPU ('''we highly recommend using a GPU to run this module; without a GPU, running this module on a single scan can take a whole day'''). The GPU requirements depend on the image but are about 24GB of memory.
''THREADS'': number of CPU threads used by the code (set to -1 to use all available threads).
''BF_MODE'' (optional): bias field mode: dct (default), polynomial, or hybrid.
''GMM_MODE'' (optional): gaussian mixture model (GMM) model must be 1mm unless you define your own (see FAQ below).
For example, you can segment bert with a GPU and 8 CPU threads with:
{{{
mri_histo_atlas_segment $SUBJECTS_DIR/bert/mri/orig.mgz $SUBJECTS_DIR/bert/mri/histo_atlas_segmentation/ simplified 1 8
}}}
In the output directory, you will find:
''bf_corrected.mgz'': a bias field corrected version of the input scan.
''SynthSeg.mgz'': [[https://surfer.nmr.mgh.harvard.edu/fswiki/SynthSeg|SynthSeg]] segmentation of the input (which we use in preprocessing and to initialize Gaussian parameters).
''MNI_registration.mgz'': [[https://surfer.nmr.mgh.harvard.edu/fswiki/EasyReg|EasyReg]] registration to MNI space, use in preprocessing.
''seg_[left/right].mgz'': segmentation into 333 ROIs of the left and right hemisphere, respectively.
''vols_[left/right].csv'': CSV spreadsheet with the volumes of the different ROIs, computed from the posteriors (soft segmentations).
''lookup_table.txt'': FreeSurfer lookup table mapping label indices to brain anatomy. You need it when visualizing the segmentations with Freeview.
<
>
=== 4. Usage (fast version) ===
We also distribute a fast version, where the atlas deformation is pre-computed with a neural network,
and then kept constant during the optimization, such that we only need to run the EM algorithm once for
the Gaussian parameters and that is it.
{{{
mri_histo_atlas_segment_fast INPUT_SCAN OUTPUT_DIRECTORY GPU THREADS [BF_MODE]
}}}
The options are similar to mri_histo_atlas_segment, but the atlas and gmm modes are always 'simplified' and '1mm', respectively.
The output files in the output directory follow the same convention.
This faster version is particularly useful if you are running the code on the CPU rather than CPU.
On a semi-modern desktop, the run time should be less than an hour (note that it segments both
hemispheres in a single run, as opposed to the full Bayesian version).
<
>
=== 5. Frequently asked questions (FAQ) ===
* '''Do I really need a GPU for the 'full' Bayesian version?'''
Technically, no. In practice, yes. On a modern GPU, the code runs in an hour or less. On the CPU, it depends on the number of threads, but it can easily take a whole day or more.
* '''Do I need a GPU for the fast version?'''
Certainly no! The code should run in less than an hour on any semi-modern workstation, if you allocate enough threads.
* '''What do the BF_MODE and GMM_MODE arguments do?'''
You should not need to touch these, but the BF_MODE changes the set of basis functions for bias field correction and you could potentially try tinkering with it if the bias field correction fails (i.e., if bf_corrected.mgz has noticeable bias). GMM_MODE allows you to change the grouping of ROIs into tissue classes (advanced mode!).
The GMM model is crucial as it determines how different brain regions are grouped into tissue types for the purpose of
image intensity modeling. This is specified though a set of files that should be found under 'data' in the atlas directory:
''data/gmm_components_[GMM_MODE].yaml'': defines tissue classes and specificies the number of components of the corresponding GMM
''data/combined_aseg_labels_[GMM_MODE].yaml'' defines the labels that belong to each tissue class
''data/combined_atlas_labels_[GMM_MODE].yaml'' defines FreeSurfer ('aseg') labels that are used to initialize the parameters of each class.
Note that, in in dev versions newer than August 23 2024, these files are located under data_full and data_simplified (one directory per atlas / protocol).
We distribute a GMM_MODE named "1mm" that we have used in our experiments, and which is the default mode of the code. If you
want to use your own model, you will need to create another triplet of files of your own (use the 1mm version as template).
<
>