Open effigies opened 7 years ago
The fully automated process consists of three steps:
- Preprocessing of volume to remove gross spatial image non-uniformity artifacts and reposition the brain in a reasonable manner for convenience.
- Expand a spherical surface iteratively until it envelopes the brain. This is a modified version of the BET algorithm: Fast robust automated brain extraction, by Stephen M. Smith, HBM 2002 v 17:3 pp 143-155 Modifications include the use of:
- outer brain surface
- expansion driven by data inside and outside the surface
- avoidance of eyes and ventricles
- a set of operations to avoid the clipping of certain brain areas and reduce leakage into the skull in heavily shaded data
- two additional processing stages to ensure convergence and reduction of clipped areas.
- use of 3d edge detection, see Deriche and Monga reference in 3dedge3 -help.
- The creation of various masks and surfaces modeling brain and portions of the skull
Common examples of usage:
o 3dSkullStrip -input VOL -prefix VOL_PREFIX
Vanilla mode, should work for most datasets.
o 3dSkullStrip -input VOL -prefix VOL_PREFIX -push_to_edge
Adds an agressive push to brain edges. Use this option
when the chunks of gray matter are not included. This option
might cause the mask to leak into non-brain areas.
o 3dSkullStrip -input VOL -surface_coil -prefix VOL_PREFIX -monkey
Vanilla mode, for use with monkey data.
o 3dSkullStrip -input VOL -prefix VOL_PREFIX -ld 30
Use a denser mesh, in the cases where you have lots of
csf between gyri. Also helps when some of the brain is clipped
close to regions of high curvature.
I ran the program with the default parameters on 200+ datasets.
The results were quite good in all but a couple of instances, here
are some tips on fixing trouble spots:
Clipping in frontal areas, close to the eye balls:
+ Try -push_to_edge option first.
Can also try -no_avoid_eyes option.
Clipping in general:
+ Try -push_to_edge option first.
Can also use lower -shrink_fac, start with 0.5 then 0.4
Problems down below:
+ Piece of cerebellum missing, reduce -shrink_fac_bot_lim
from default value.
+ Leakage in lower areas, increase -shrink_fac_bot_lim
from default value.
Some lobules are not included:
+ Use a denser mesh. Start with -ld 30. If that still fails,
try even higher density (like -ld 50) and increase iterations
(say to -niter 750).
Expect the program to take much longer in that case.
+ Instead of using denser meshes, you could try blurring the data
before skull stripping. Something like -blur_fwhm 2 did
wonders for some of my data with the default options of 3dSkullStrip
Blurring is a lot faster than increasing mesh density.
+ Use also a smaller -shrink_fac is you have lots of CSF between
gyri.
Massive chunks missing:
+ If brain has very large ventricles and lots of CSF between gyri,
the ventricles will keep attracting the surface inwards.
This often happens with older brains. In such
cases, use the -visual option to see what is happening.
For example, the options below did the trick in various
instances.
-blur_fwhm 2 -use_skull
or for more stubborn cases increase csf avoidance with this cocktail
-blur_fwhm 2 -use_skull -avoid_vent -avoid_vent -init_radius 75
+ Too much neck in the volume might throw off the initialization
step. You can fix this by clipping tissue below the brain with
@clip_volume -below ZZZ -input INPUT
where ZZZ is a Z coordinate somewhere below the brain.
Large regions outside brain included:
+ Usually because noise level is high. Try @NoisySkullStrip.
Make sure that brain orientation is correct. This means the image in
AFNI's axial slice viewer should be close to the brain's axial plane.
The same goes for the other planes. Otherwise, the program might do a lousy
job removing the skull.
Did any of those options seem useful to you? Blurring at 2 didn't do much, blurring at 4 had huge chunks of skull, and -use_skull
caused a crash. 3dmask_tool only partially filled in the ventricles but didn't touch the spaces between gyri.
See poldracklab/mriqc#552, poldracklab/mriqc#554, poldracklab/fmriprep#659.