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

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!

 채택된 답변

Image Analyst
Image Analyst 2020년 7월 6일
편집: Image Analyst 2020년 7월 6일
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.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기

질문:

2020년 7월 6일

댓글:

2022년 1월 11일

Community Treasure Hunt

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

Start Hunting!

Translated by