Getting points back from convexhull/trisurf, or 'how to find the closest point on a 3d surface to a given point.

10 visualizaciones (últimos 30 días)
I'm trying to find the outside surface of a 3D matrix (an MRI of the scalp), The matrix contains all the points of the scalp and I need to be able to calculate the distance to the outside surface from a given internal coordinate.
If I use a delaunay triangulation and create a convexhull of those points I can successfully visualize just the outside surface, but I'm not sure how to a) get those points back in the true coordinate system/b) get the closest point on the surface of the formed convex hull to a given coordinate. Figuring out a) is not necessary if I can directly find b). If there's another way and this makes no sense at all, I'm open to suggestion. TIA
% rcv, or [r c v] is a 75,120 x 3 matrix
DT = delaunayTriangulation([r c v]);
[K,~] = convexHull(DT);
trisurf(K,DT.Points(:,1),DT.Points(:,2),DT.Points(:,3))
  2 comentarios
John D'Errico
John D'Errico el 30 de En. de 2024
Note that a delaunay triangulation (and therefore a convex hull) for the surface of a skull is probably a poor approximation.
Cameron
Cameron el 1 de Feb. de 2024
with the amount of points I have it's very close to exact as an approximation, if you have another suggested method I'm open to it.

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 30 de En. de 2024

Más respuestas (0)

Categorías

Más información sobre Delaunay Triangulation en Help Center y File Exchange.

Productos


Versión

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by