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

4 次查看(过去 30 天)
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 个评论
darova
darova 2019-5-15
What kind of data do you have and what do you expect to reach?
Can't you just scale your data?
img.png

请先登录,再进行评论。

采纳的回答

Alexander Dumont
Alexander Dumont 2019-5-15
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.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by