Porosity of 3D volume

I want to quantify the porosity. ,My input data is a stack of 2D images from xCT. I am able to measure the porosity using surface area command after thresholding 2D images.
I would like to know if there is a way i can use similar procedure to measure the porosity after converting the 2D images into 3D volume.
Any suggestions will be helpful .

Hi @faruuk

I assume by surface area you mean the number of background/foreground pixels?

Basically you can do the same thing in 3D, but then the number of pixels is a volume and technically the pixels are called voxels (volumetric pixel).

Hi tibuch,
thanks for your prompt reply . I am not well verse with imageJ but trying hard to get this done. Actually when i threshold my 2d image , then zero GSV value corresponds to voids and value of 1 corresponds to particle, then i use this small formula = count at voxel value 0 /(count at voxel value 0 + count at voxel value 0 ) this gives me porosity , its the same thing which surface area command also does, (maybe).
So , my question is , how i can implement this same thing for 3D , to get the void space present within the whole sample.

According to wikipedia porosity = volume_void / volume_total.

This would mean you count all voxels of your 3D volume which are void and divide by the number of all voxels.

It should not matter if you compute it slice by slice and sum over all slices or make a 3D volume out of it and then count the voxels.

well, i have 500 slices and i using at least 300 slices for my study. Your suggestion is pretty good actually . Lets say i import sequence and select 300 slices , then i threshold and apply it to all slices. What should be the next step , because in 3d viewer there is no commend for voxels count. Should i count the voxel of each slice after thresholding and then take the average ?

In other words , how i can count the voxels in a 3d volume?

Actually this is mostly naming :slight_smile:

A 3D volume is a stack of multiple 2D slices. If you look at a 2D slices (or 2D image) the smallest entity is a pixel which has a certain size (usually a pixel is a square). If you put multiple 2D slices together to a stack, you have a distance between the slices. If this distance is equal to the pixel-edge length you get a voxel (a small cube “3D square”).

So if your x-y-z resolution is always the same (check your imaging system) you can count the pixels in each slice an sum up over all slices. This will give you the volume of the whole stack.

Taking the average over all slices makes no sense, because then you would get the average of pixels == 0 per slice.

Thank a lot of your detailed and prompt replies tibuch. I will do as u suggested. kind regards

In relation with above topic, can we calculate the porosity of an heterogenous system. Say a fiber reinforced composite.