How to get the volume and surface area of separated isosurfaces

7 次查看(过去 30 天)
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.

回答(1 个)

darova
darova 2021-7-26
Use bwlabel to separate each blob
  2 个评论
AbioEngineer
AbioEngineer 2021-7-26
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.

请先登录,再进行评论。

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by