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

9 visualizzazioni (ultimi 30 giorni)
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 Commenti
John D'Errico
John D'Errico il 30 Gen 2024
Note that a delaunay triangulation (and therefore a convex hull) for the surface of a skull is probably a poor approximation.
Cameron
Cameron il 1 Feb 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.

Accedi per commentare.

Risposta accettata

Matt J
Matt J il 30 Gen 2024

Più risposte (0)

Categorie

Scopri di più su Delaunay Triangulation in Help Center e File Exchange

Prodotti


Release

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by