Note: Click on any image below to enlarge it. The examples shown below include both human and monkey cases, with the majority taken from monkey. The principles apply to all primates.
Peaks greatly affect segmentation quality, and investing some time in finding the right peaks is time well spent. The SureFit algorithm within Caret computes a WMthresh parameter (GMpeak+WMpeak)/2 that is used for several operations. When setting peaks, I prefer a sagittal view that shows the bottoms of the temporal lobes, as in the captures shown below. The temporal lobes are one frequent trouble spot (i.e., white matter may be darker and threshold out, although the opposite is true for the monkey case shown), but you can still see other trouble spots (e.g., occipital lobe is often brighter and sulci fuse if peaks set too low).
Sometimes, you can tell just by looking at a volume that you have non-uniformity problems (e.g., volume is brighter at the center of the magnet, darker at the edges; volume is darker at the top, brighter at the bottom). Other times, you may not notice you have trouble until you look at the histogram. Below are two histograms: One says "I'm going to have a good day patching"; the other says, "Oh no -- how bad is this going to be."
In this case, my first stab at setting the peaks was GMpeak=140, WMpeak=155. This ended up being very close to optimal. How did I guess so well? Probably because I've been doing this for 5.5 years. But to illustrate the concepts of "biased toward pial surface" and "biased toward white matter," compare the following results using peaks of +10 and -10 from my first guess.
Biased toward pial surface: Peaks too low (GMpeak=130; WMpeak=145) | Biased toward white matter: Peaks too high (GMpeak=150; WMpeak=165) |
![]() |
![]() |
Without agonizing too much, just take your best guess and try running SureFit -- with AUTOMATIC ERROR CORRECTION DE-SELECTED. If you're at all unsure about your peaks, there's no sense wasting a lot of time fixing handles in a bad initial segmentation. Since automatic error correction (AEC) takes 15 minutes at best and hours at worst (days only if you've still got skull or something really awful wrong with your segmentation), you can save a lot of time by turning this off until you have a decent initial segmentation. Fill ventricles takes almost no time, and there is no way to turn it back on once you have a decent segmentation, so leave it on (although it often fails for monkeys).
Once you have an initial segmentation, scroll through it carefully looking for fused sulci (if biased toward pial surface) or missing white matter bridges (if biased toward white matter). You may have one problem in one area and the opposite in another area. If the problem is pronounced, seriously consider using FSL's fast or other bias correction tool (AFNI's 3dUniformize or MNI's nu_correct) to improve the uniformity of your volume. If you are carving out several fused sulci or editing in many missing white matter bridges, then you are introducing an unacceptably high level of subjectivity into your segmentations. If you can't find peaks that give a good overall balance, then put your energy into improving your input volume.
Another useful tip comes from Johannes Klein:
"It does pay off to re-bin the data before feeding it into Caret when you have a larger range of values. My MPRAGE-acqs typically end up with values from 0 to 2000 or so. If I simply rescale the full range to 0-255, the "range of interest" gets squashed quite a lot because fat and artifacts (blood-flow) hog the high values, losing levels of gray in the range where it actually matters. So, I load up the data, determine some reasonable values for brain and background and then do something like
avwmaths_32R input -thr 50 -uthr 550 -sub 30 -mul 0.51 output
avwmaths_8UI output output_8bits
(or do the same stuff in Vinci, which is a bit more convenient)."
If you don't have these FSL utilities, then you can achieve similar results using Caret's Volume: Mathematical Operations and setting the volume max at the desired cap before using Volume: Edit Volume Attributes: Data: Rescale Voxels.
While this volume does have non-uniformity issues, a fairly decent result is generated using GMpeak=145; WMpeak=160.
GMpeak=140; WMpeak=155 |
![]() |
This segmentation is biased toward the pial surface, so I tried increasing both peaks by 5:
GMpeak=145; WMpeak=160 |
![]() |
But this segmentation is missing white matter (see cross-hairs location), so I tried GMpeak=142 and WMpeak=157:
GMpeak=142; WMpeak=157 |
![]() |
Still a bit sparse in places, so I tried GMpeak=140 and WMpeak=157:
GMpeak=140; WMpeak=157 |
![]() |
Now I'm satisfied I can't do better, so I select Volume: SureFit Operations and make these selections:
![]() |
![]() |
Note that my selected segmentation volume isn't the ventricles filled segmentation, because ventricle filling failed on this monkey. Luckily, the Volume: Edit voxels: Floodfill 2D option makes this pretty easy to patch. On many slices, you have to draw a bit to close the ventricle off, but then Floodfill 2D fills the hole. Erin Reid typically makes one pass through the volume in Turn Voxels on mode, then a second pass in Floodfill 2D mode.
Note also that this volume still needs manual segmentation correction, but will take much less work than hand segmenting from scratch.