Analyse properties of a foam (porosity, pore size, web thickness, window size)

Hey everyone,

I have to analyse a 3D Dicom image stack of titanium foam regarding it’s porosity, pore size, web thickness and window size between the pores. I used BoneJ for my Calculation but i’m not sure if it’s the best way to analyse the structure or my results are correct. Maybe you have a better idea?

Porosity: BoneJ > Particle Analyzer to get the Volume and the enclosed Volume of the foam
Vol. (mm³) = 619 239, 235
encl. Vol. (mm³) = 602 929, 375 (what exactly does ImageJ calculate here?)

To calculate the porosity I devide the Pore Volume (encl. Volume???) by the total volume. I tried Volume fraction to get the total volume, but the number was so high it couldn’t be correct (TV = 94 050 000 mm³). Is there an other way to get the total Volume of the structure?

Web thickness: BoneJ > Particle Analyzer to get the mean local thickness
Thickness (mm) = 9,3 mm (that seems correct to me)

Right now i’m struggeling to find a way to analyse my mean pore size and the window size between the pores.
Is there a common way to do it?

i would really appreciate it if you can give me some answers to my questions!
Thanks a lot!


This is an ideal use of BoneJ, and there are plenty of examples in the literature of people doing this kind of thing on engineering materials and soils.

The first thing to consider is whether your foam is open- or closed-cell. If it is open cell, you probably shouldn’t use Particle Analyser, which is designed to measure disconnected blobs in 3D images (for us it was osteocyte lacunae, but bubbles in a foam are similar). Rather you should treat the foreground (titanium) and background (pores) as two separate continuous phases, like trabecular bone and bone marrow.

The usual TV measurement is simply the volume of the entire image. To calculate porosity you have to either

  1. crop your image stack down to contain only titanium and pores (no ‘outside’ of the sample) and run Volume Fraction, or
  2. add some ROIs to the ROI manager that define the outer border of your sample and check the option to use ROI manager in Volume Fraction

The simplest way is 1 - that’s the thing I usually do with trabecular bone.

OK good. That’s usually reliable if you have adequate resolution (pixel spacing:feature size < 1:10). Can I ask whether your pixel spacing is isotropic? You mention you have DICOM images; those from clinical CT scanners usually have much greater spacing in z than in xy, while pixel spacing in microtomography images is typically isotropic.

The bone equivalent of pore size is trabecular spacing, Tb.Sp, which is calculated using the Thickness plugin. Just select to do ‘spacing’ in the dialog. The usual problem with spacing is that the pores on the edges of the sample or image are not bounded by anything and they grow forever, which means the plugin takes a very long time (sometimes never) to finish. So, take care to make sure that you have eliminated ‘outside’ from your analysis using 1. or 2. above.

BoneJ doesn’t have a method to detect and measure pore throats, which are narrowings of pores along the pore axis (is that what you mean by window size?). 3D Watershed might help you.

Quick update - this functionality is not yet available in BoneJ2 - we are looking at the ROI frameworks available in ImageJ2 that may be a bit more robust than the ROI Manager approach.