How can I convert a surf plot into a binary volume mask?

2 visualizzazioni (ultimi 30 giorni)
I am trying to recreat a shape in MATLAB, specificaly, a capsule. I use MATLAB's piecewise function to produce a line that I want, and then I pass that line to the cylinder method of MATLAB. The resultant looks ike this:
And this is exactly the shape I want. However, I need to convert this surf plot with 2-dimensonal data for X,Y and Z into a volume plot, which I can then convert into a mask. I've tried surf2solid, which works but gets me no nearer to my answer, and I've tried polygon2voxel, which fails because when I use the patch function it returns different size vertices and faces. Any help would be greatly appreciated!
  1 Commento
darova
darova il 15 Mag 2019
What kind of data do you have and what do you expect to reach?
Can't you just scale your data?
img.png

Accedi per commentare.

Risposta accettata

Alexander Dumont
Alexander Dumont il 15 Mag 2019
THe best I've gotten so far is I linearize my meshgrid:
P = [X(:) Y(:) Z(:)]
I then do a delaunay triangulation followed by a convexhull
DT = delaunayTriangulation(P);
[C,v] = convexHull(DT);
And then use John D'Errico's function inhull to sample acrss points:
x = linspace(min(X(:)), max(X(:)), 50);
y = linspace(min(Y(:)), max(Y(:)), 50);
z = linspace(min(Z(:)), max(Z(:)), 50);
P = combvec(x,y,z)';
in = inhull(P,DT.Points);
To find points that are in or out of my cylinder
And I display them with
k = find(in==1);
plot3(P(k,1),P(k,2),P(k,3))
Doesn't seem great though.

Più risposte (0)

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by