How to calculate surface area / volume for multiple clusters from 3D image stack

8 views (last 30 days)
I have a series of image stacks that represent a 3D reconstruction of microdamage in bone. I am trying to calculate the surface area to volume ratio of each individual damage "cluster" in the specimen. The provided image is a 3D rendering of the image stacks showing the clusters of damage. What I want the code to do is calculate surface area / volume for each individual cluster, and then average all of the SA/V calculations to have one representative measure for the entire specimen. Any help as to how to go about doing this would be very much appreciated!

Accepted Answer

Image Analyst
Image Analyst on 6 Jul 2020
Edited: Image Analyst on 6 Jul 2020
To get a count of voxels on the surface, you can scan the image voxel by voxel and check the 6 neighbors of the voxel. If any of the neighbors is air (not bone), then add that to the surface count. Should be easy but let me know if you can't figure it out:
[rows, columns, slices] = size(image3d)
surfaceCount = 0;
for slice = 1 : slices
for fol = 1 : columns
for row = 1 : rows
thisSubvolume = image2d(.....)
if .....
% A 6-connected neighbor is air so it's on the surface.
% etc.
end
end
end
end
Or you can just use regionprops3() which directly gives surface area and volume. That's what I'd try first.
  3 Comments

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!