Particle Analyser - “Volume” and “Enclosed Volume"

Dear BoneJ developers,

first of all I wanted to congratulate with you and thank you for the “BoneJ” plugin. I am writing my final dissertation about mortar porosity and I am really glad to come across your Particle Analyser plugin, great work!

I am a student and I am new to ImageJ, so I hope you can help me. I have the following questions:

  • what is the difference in output values between “Vol. (Pixel3)” and “Enclosed Volume(Pixel3)”?

  • how these two values are exactly calculated?

Thanks for your help and hope to hearing from you soon.

Kind Regards,

Dear Silvia,

The difference is that Vol. is calculated by counting pixels and multiplying by pixel spacing in x, y and z (pixel “volume”). Enclosed Volume is calculated by wrapping the particle’s pixels in a surface mesh, then working out the volume inside the mesh (details are bit more complicated than simple pixel counting, and I can’t find the code that does it, in the ImageJ 3D Viewer, right now!).

Ideally the two volume measurements will be identical - usually there’s some discrepancy due to the limitations inherent in counting pixels, because pixels discretise space and you will have an integer count, and in the limitations of surface meshes like smoothing over fine features.

If the two volume values are massively different, I’d take that as a warning that something is suboptimal, in terms of pixel spacing vs feature size (usually, too-small pixels), or overzealous surface mesh downsampling /smoothing.

1 Like

Hello Michael,

this is a very useful discussion - I just found that my objects display very different Vol. and Enc. Vol values (e.g. 4730.00 vs 576.00 µm^3). The objects are pores obtained from a X-Ray tomography experiment, with 1 pixel = 0.8125 µm. Could it be that the issue is in the pixel spacing vs. feature size ratio? Thank you for your help.

Kind regards,


Most likely. The mesh smoothing has probably removed lots of small features. You can display the meshes and the pixels in 3D and see where the difference is.

Try running again with Surface resampling = 1