How to create a isosurface with 3D binary array?

3 ビュー (過去 30 日間)
Camilo Costa
Camilo Costa 2016 年 4 月 5 日
編集済み: darova 2021 年 3 月 22 日
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!!!

回答 (2 件)

Sabrina Smith
Sabrina Smith 2018 年 9 月 11 日
hi! did you ever solve this problem? I have the same thing!

Francesca Lorenzutti
Francesca Lorenzutti 2021 年 3 月 19 日
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 件のコメント
darova
darova 2021 年 3 月 21 日
I'd love to see the solution. Please post it
Francesca Lorenzutti
Francesca Lorenzutti 2021 年 3 月 22 日
編集済み: darova 2021 年 3 月 22 日
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)

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLighting, Transparency, and Shading についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by