Peak Tweaking

2005-10-27, Donna Hanlon, Van Essen Lab

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."

Good Histogram: This one has a big spike at the very left (0 side of intensity scale), which corresponds to CSF/extracranial space; a fairly tall, symmetric peak in the middle (gray matter); and a typically shorter peak on the right that often drops off more sharply to the right than it does to the left. In this case, aiming for the actual peak is pretty safe for the GM peak, since it's symmetric. For the WM peak, however, you have to aim a bit to the left of the actual peak, to offset the sharp drop-off on the right. If you mentally slice off the portion of the histogram below the (GMpeak+WMpeak)/2 intensity level, aim for the tipping point of what remains. Scary Histogram: It's unusual to see the big spike so far from zero, but my bet is that the left-most peak (at roughly 80) is extracranial; the short middle peak (at intensity 100) is CSF; and the big peak is a combination of GM and WM. If you look closely, there's a step-like shape on the right, which is the closest we'll get to a WM peak on this histogram. Here, looking at what gets thresholded when the corresponding radio button is selected is the better clue for what will work. You want about half the gray matter voxels to be green when the GM radio button is selected. For the white matter, depending on where in the volume you look and what sort of non-uniformity problems you have, it may appear that less than 50% of the white matter voxels are green. You should not see many gray matter voxels green when the WM radio button is selected if your WMpeak is set correctly.
Gray matter peak radio button selected Gray matter peak radio button selected
White matter peak radio button selected White matter peak radio button selected

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.