Why are brainmasks in FreeSurfer better than bet2 or 3dskullstrip?


Would love to hear the community’s take take on why freesurfer generally creates more accurate brain masks with minimal leakage into neck and eyes and no parameter/option specification compared to ANTS/AFNI/FSL.

I’ve tried 3dunifize and other uniform intensity correction methods before feeding data into FSL or AFNI but I still find way less errors in a dataset of 180 images skullstripped with freesurfer.

My guess is that freesurfer does better because it pushes the T1 through two rounds of intensity normalization before skullstripping… not quite sure how these two rounds of intensity normalization are so different though or why they are necessary.



I’d say that the most reliable is generally antsBrainExtraction.sh, since it is atlas-based. In our experience with fMRIPrep, that reliability outweighs the long run time and some precision loss with non-standard cases (the most extreme examples would be brains with large lesions, or resected areas).

That said, it is true that FreeSurfer offers a really great balance between run-time and precision. If I’m not wrong, their skull-stripping method is watershed-based and it probably has some kind of atlas-based refinement. I can’t tell how it works with non-standard brains.

bet2 if I recall correctly, is kind of an active-contour that is initialized as an ellipsoid or an sphere centered in the brain and then grown. For this reason it is extremely sensitive to the parameters you use, and as you mention, to intensity normalization.

I don’t know the internals of 3dSkullStrip. It seems to implement atlas-based extraction with an extremely fast registration process. In our experience it is worth reading through the documentation and check for recommendations on parameters and intensity normalization.

However, and it should’ve been mentioned before, the most important issue that challenges brain extraction is illumination non-uniformity (INU) or “bias field”. ANTs’ skull-stripping has the N4 algorithm built-in. FreeSurfer runs skull-stripping on the image after N3 correction (an older implementation of N4), and after that, the watershed should be rather insensitive to intensity normalization. And, if you are trying bet and 3dSkullStrip without running INU correction first that probably explains the difference.

Maybe this paper would be of your interest - https://gigascience.biomedcentral.com/articles/10.1186/s13742-016-0150-5



Thanks for the thorough reply, Oscar!

One thing I’ve noticed is that you can minimize the amount of editing for the brainmask if you are analyzing your data in FreeSurfer if you create a good enough brain mask prior for antsBrainExtraction.sh.

Instead of editing all of the brains in your dataset, you would just edit the few (at least 10) brainmasked T1s you used to create your study specific template with antsMultivariateTemplateConstruction.sh.