How to get the volume and surface area of separated isosurfaces

9 views (last 30 days)
I have a 3D array called "test" which is 512x512x52. I can display the isosurface using the following line:
volshow(test,'Renderer','Isosurface','Isovalue',0.55)
which generates the following image:
How can I get the voxels in each enclosed isosurface? I need to calculate the voume of each piece (ideally only those that are spherical). I already know the dX=0.1657, dY=0.1657, and dZ=0.5 of a voxel, I just need to know which pixels are included in each of the distinct enclosed surfaces so I can get a distribution of volumes. I need to do the same for the surface areas.
I read this answer (https://www.mathworks.com/matlabcentral/answers/436461-calculate-volume-from-an-isosurface), but I am confused how they could use that isovalue of -2. Every element in my 3D array is greater than the isovalue I selected to display the image shown above (which is isovalue of 0.51)
Any guidance is sincerely appreciated.

Answers (1)

darova
darova on 26 Jul 2021
Use bwlabel to separate each blob
  2 Comments
AbioEngineer
AbioEngineer on 26 Jul 2021
but why is the isovalue 0.51 when I use volshow https://www.mathworks.com/help/images/ref/volshow.html but none of my actual values in the 3D array fall below that? The values in the array are in the 1600's while the isovalue must be a "non-negative number between [0 1]" according to the volshow documentation.
darova
darova on 27 Jul 2021
I don't understand the question
Maybe aphaShape can be helpfull

Sign in to comment.

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!