How to create a isosurface with 3D binary array?

7 visualizaciones (últimos 30 días)
Camilo Costa
Camilo Costa el 5 de Abr. de 2016
Editada: darova el 22 de Mzo. de 2021
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!!!

Respuestas (2)

Sabrina Smith
Sabrina Smith el 11 de Sept. de 2018
hi! did you ever solve this problem? I have the same thing!

Francesca Lorenzutti
Francesca Lorenzutti el 19 de Mzo. de 2021
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 comentarios
darova
darova el 21 de Mzo. de 2021
I'd love to see the solution. Please post it
Francesca Lorenzutti
Francesca Lorenzutti el 22 de Mzo. de 2021
Editada: darova el 22 de Mzo. de 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)

Iniciar sesión para comentar.

Community Treasure Hunt

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

Start Hunting!

Translated by