Different result on BoneJ thickness - mean and std

I am using BoneJ to analyse local thickness of 3D volume. Here is my example data test.tif (128.3 KB)

I used (BoneJ>thickness) and got this answer

where thickness is shown in mean and std. Then when I used BoneJ>Analyze>Particle Analyser. I got this answer where the individual thickness is shown in rows. But I noted that the mean thickness of first result is not same as mean thickness of 2nd result. But it seems that the mean of first result is close to the thickness value in first row of 2nd result.

I am a bit confused what’s the difference between thickness measurement in above two methods, and why the mean is different.

Thank you

This calculates summary statistics (mean, SD) of Tb.Th over all the foreground pixels, where n = the number of foreground pixels. It does not take into account that your foreground is split into particles.

This calculates mean and SD per particle where for each particle n = the number of pixels in the particle (recorded in the Vol. (pixels³) column). You have then calculated a mean over all the particles, where n = the number of particles and not the number of pixels.

To check that the algorithm is doing the same thing in both cases you would first have to multiply the mean for each particle by its Vol (in pixels), then divide by the sum of pixels over all the particles (in other words calculate a volume-weighted mean).

The only algorithm choice that could make a difference is the option to mask overhanging pixels, which should be set to true in all cases.

Hi Michael,
Thank you very much for your explanation. It makes sense now.

Can I ask one more question? There also is ‘Local Thickness’ plugin on fiji (not under BoneJ). When I try this ‘Local Thickness’ plugin, it shows the output in image, but I don’t see any ‘Result’ in figures. Do I need to use any other function to print out quantified results (such as mean, std etc). And what’s the difference between this ‘Local thickness’ and BoneJ ‘Thickness’?


None: BoneJ uses Local Thickness to generate the thickness map then calculates mean and SD, and reports the result as Tb.Th or Tb.Sp. Local Thicknes by itself just makes an output image for you to do whatever you want with.

Thank you Michael

Possibly one last question. I read somewhere in imagesc forum that bonej>analyse>particle analyzer is not ideal for ‘connected’ pore thickness analysis. I am not sure if it is true. If yes, what should I use for connected pore analysis?

Thank you

It’s totally fine. But it comes down to your question. If you want the thickness of all the pore space and don’t care how it’s connected, just use Thickness. If you want to get a per-particle thickness measurement, use Particle Analyser. All Particle Analyser is doing is applying Thickness to each particle, then calculating summary statistics for each particle.

Hi Michael,

Thank you for your prompt and very helpful advice. Really appreciate it. Sorry, I need to ask more as I am quite new to BoneJ. From your answer, I assume that Particle analyser can be used if I want to know how pore space are connected. Is that what you mean? In the output result of particle analyser, I think there is no result for connectivity?

And when you are saying ‘each particle’, I assume you refer to ‘sphere’ (the biggest sphere that fits in each pore space). Or are particle and sphere different? Becasue when I use particle analyser to get thickness on my example data example.tif (3.2 MB) , this is the thickness stack I got

. The data volume in this example is 150 x 150 x 150.
When I checked the result, I saw that there is only one big thickness (~38, I think that represents the big white sphere in the image) and all the rest thickness are ~2 which i think is not true.
I can see other big spheres (orange/pinkish color) in the thickness map whose diameter should be bigger than 2. That’s the reason I am confused if the particle and sphere are different. Becasue if I understand correctly, thickness of each pixel in each sphere is the diameter of that sphere.

Thanks again