How to create a isosurface with 3D binary array?
Afficher commentaires plus anciens
Dears friends,
How do I create a isosurface using a 3D matrix? I spent a whole week and it still did not get . ehehehehhe My code is:
% Start here clearvars close all clc
A(:,:,1) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1];
A(:,:,2) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0];
A(:,:,3) = [0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0];
A(:,:,4) = [0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0];
A(:,:,5) = [0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
[m,n,p] = size(A); [X,Y,Z] = meshgrid(1:n,1:m,1:p); p = patch(isosurface(X,Y,Z,A,0.999)); isonormals(X,Y,Z,A,p) % end
I was hoping to see a straight up plan. Best Regards!!!
Réponses (2)
Sabrina Smith
le 11 Sep 2018
0 votes
hi! did you ever solve this problem? I have the same thing!
Francesca Lorenzutti
le 19 Mar 2021
0 votes
I'm going to answer just in case someone else needs it.
In my case I solved this problem by choosing an isovalue=0.5 instead of 1 (or something very close to 1).
2 commentaires
darova
le 21 Mar 2021
I'd love to see the solution. Please post it
Francesca Lorenzutti
le 22 Mar 2021
Modifié(e) : darova
le 22 Mar 2021
There you go, tiff_stack is my mask:
[nX,nY,nZ] = size(tiff_stack);
[X,Y,Z] = meshgrid(1:nX,1:nY,1:nZ);
[f v] = isosurface(X,Y,Z,tiff_stack,0.5);
patch('Faces',f,'Vertices',v)
Catégories
En savoir plus sur Lighting, Transparency, and Shading dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!