QCT of Calcaneus- standardising threshold to compare different feet

Tags: #<Tag:0x00007fb8820ef168>


Hello BJ community

I am using QCT images (ScancoXtreme) to analyse the entheses of the heel (Achilles, plantar fascia, and a reference mid calcaneal site).
Having decided on the volumes of interest, I do the following:

  • import scanco ISQ file, specify slice range, and clean image with median filter (I also crop the image to reduce the data load)
  • trace out ROI at intervals and interpolate through the stack- up to 110 slices per ROI (and then double check and spline/ fix as required).
  • I then use the BoneJ plugin to assess, amongst other things, Bone Volume Fraction.

This is where it gets tricky. The thought was to set the threshold in the Threshold window at a standard percentage (eg 33%), to facilitate comparison across participants. However it appears that setting the threshold by this method is slice specific- and can yield different results depending on which slice in the stack I use. Also, I am not sure if 33% is the same from participant to participant- especially if it is determined from a histogram of that individuals pixel values?
I am aware that BoneJ has an ‘Optimise Threshold’ option, which utilizes information from the whole stack. However, I am not sure how this improves comparability across subjects if I don’t get to standardize the thresholding output?
Any advice on how best to standardize for comparison across subjects would be greatly appreciated (accepting that for a specific individual it may not provide the optimal resolution).
Cheers, Jason


Hi all, after applying the above approach to 30 bone (HRpQCT) samples I end up with bone volume fraction numbers in the 40% range. Native Scanco software puts it in the 15% BVTV range, which closely resembles actual mid calcaneal bone histomorphometry values. Clearly the ‘optimise threshold’ method works on a different construct, and is not workable in present format? Any thoughts on how to threshold in an efficient, stack sensitive and sample wide manner is appreciated.


Hi - and sorry for not seeing this before - maybe related to the email notification issues that are now fixed.

If your images are calibrated (many SCANCO ones are, usually in units of attenuation: cm-1) then you can come up with a single reasonable threshold value that you can then apply to all the images in your series. To avoid annoying GUI interactions like the slice-by-slice variation you describe, do it programmatically in a macro, e.g.:

lower = <your calibrated lower threshold>;
upper = <your calibrated upper threshold>;
setThreshold(lower, upper);
run("Convert to Mask");

This way all your images will be thresholded at approximately the same physical X-ray attenuation value. Bear in mind though that HR-qCT images despite their name are not particularly high resolution compared to X-ray microtomography (~80-150 µm vs ~1-10 µm respectively). Human trabeculae are usually something like 100-300 µm, maxing out at 500 µm diameter, so you are likely to have a very large component of partial volume artefact - many (or most) of the pixels in your images are only partially bone, so are vulnerable to being misclassified by your thresholding scheme. It is well worthwhile doing an analysis of how your outcome variable (BV/TV) varies according to the threshold value you choose.

If your VOI is irregularly shaped, then please use the ROI Manager option in BoneJ’s Volume Fraction plugin, which will limit the measurements to pixels within the ROIs you set. Otherwise you might be measuring lots of pixels outside the bone that you’d rather ignore.