calculate volume under of 3D isosurface plot
12 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Abhishek Saini
el 27 de Nov. de 2019
Editada: Constantino Carlos Reyes-Aldasoro
el 29 de Nov. de 2019
I have a 3D matrix data V(201,101,101). I want to calculate the isosurface volume for a particular isovalue.
How to calculate the volume.
I used following code to generate isosurface.
figure;
p = patch(isosurface(x,y,z,V,-2));
isonormals(x,y,z,V,p);
cdata = smooth3(rand(size(V)),'box',7);
isocolors(x,y,z,cdata,p)
p.Facecolor = 'interp';
p.Edgecolor = 'none';
4 comentarios
Akira Agata
el 28 de Nov. de 2019
I believe darova-san is reffering the following functions:
Abhishek Saini
el 28 de Nov. de 2019
Editada: Abhishek Saini
el 28 de Nov. de 2019
Respuesta aceptada
Constantino Carlos Reyes-Aldasoro
el 28 de Nov. de 2019
Editada: Constantino Carlos Reyes-Aldasoro
el 29 de Nov. de 2019
What isosurface and isovalue are doing are generating a surface around those points that are above a certain value. All code you showed is good for visualising, but what you really want here is not a visual display but a number of the volume.
If you want the volume that is the same as how many points satisfy your condition of voxel intensity > value, so what you have to do is the following:
volumeOfInterest = (V >-2 );
That will generate a matrix of same dimensions as V with 1 for those points above the isovalue and 0 below, then simply sum those values
volume = sum (volumeOfInterest(:));
And then, if needed you will need to callibrate that value to the physical quantity of your interest (say mm^3) with a conversion between voxels and that quantity.
Hope that helps
3 comentarios
Walter Roberson
el 29 de Nov. de 2019
Constantino Carlos Reyes-Aldasoro
el 29 de Nov. de 2019
True, the code I wrote was only calculating the number of voxels, but if you want to callibrate that number into a certain physical quantity, like m^3 or mm^3 you will need to do that multiplication. Will edit my previous response so that it has the complete answer in case someone new arrives to this post.
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!