BoneJ2 Thickness pore size distribution of 3D stack

Dear experienced BoneJ-users and developers,
first of all I want to say how happy I was when I found the Thickness option of the BoneJ2 plugin. It seems like it is a tool that I have been looking for for a long time.
I want the determine the pore sizes of a collagen network. As the pores are connected, I figures that Thickness should be the plugin to use and went for the Trabecular spacing option. I have a 3D stack, which I segmented to make it binary and I rescaled it to make it isotropic. I then ran the thickness plugin and obtained the trabecular spacing map. I understood, that from the histogram I should then get the distribution of pores - meaning how many pores have a given pore diameter. I am interested in this pore size distribution not only of a single z-slice, but of the whole z-stack, so I ran the histogram on the stack. That is when I realised, that how the trabecular spacing image is set up (with showing the fitted bubble in every z to which it extends) the pores will be counted multiple times - as often as they appear in different z planes. That would mean that large pores are counted more often than little ones, as they span more z planes.
I wondered if it is also possible to export an image that shows the fitted bubble only in the z plane where it has its maximum diameter. Running a histogram on such an image-stack, would then give the real amount of pores of a given diameter. Or if there is any other way to quantify the number of pores in a 3D volume.
Additionally, I would like to know if there is a way to obtain the volume that is created by pores of a given diameter in such an open network.
Can anyone help me with this and has suggestions?

All the best and thank you

This is a misinterpretation of what your Local Thickness histogram means. It has no concept of ‘how many pores’, only how many pixels have a thickness in the range of each histogram bin.

If you want an analysis of individual (non-connected) pores, then try BoneJ’s particle analyser, which can give you thickness results summarised for each discrete pore. If you want an analysis of how connected your pore network is (similar to the ‘how many bony trabeculae are there’ question), use Connectivity.

Again, this is a misinterpretation of what is going on. For a stack histogram, each pixel is counted only once. But you are intuitively correct, larger regions contribute more to the histogram due to the way Local Thickness is a winner-takes-all algorithm. Where there is an overlap between a larger and a smaller maximal sphere, the larger maximal sphere claims the overlap region. Bear in mind that many of BoneJ’s algorithms are 3D in nature to avoid these kind of slice-by-slice issues that are common in 2D stereological approaches.

This is a very good interpretation of what the stack histogram of the Local Thickness result means. You will need to multiply pixel counts (the height of the histogram bars) by pixel ‘volume’ to get the absolute volume in real units.

Dear Michael,
thank you for the helpful and super fast explanation.
You are right, I misinterpreted the histogram. Sorry. Thanks for your clarification. Getting the volume distribution by pore diameter is a very meaningful analysis for me.
I appreciate the plugin and your support a lot.

All the best