Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Code to extract center curve (medial axis or topological skeleton) of a mesh or point cloud? [closed]

Would you know any existing code to extract the center curve of a mesh or a point cloud? The center curve of a mesh is equidistant to its boundaries.

I looked at several questions/answers posted already such as this one on a planar polygon but could not find one that explains results in 3D such as the one shown in this paper and this one on "point cloud skeletonization through Laplacian-Based Contraction" where this quadratic equation comes back in both.

There is also the approach described in this paper on 3D Mesh Skeleton Extraction using prominent Segmentation based on "connecting rings".

So far the closest i got to making it work is the Skeletonize3D plugin for ImageJ but I could not make it works for an .obj mesh yet.


1 Answers

Unfortunately, in general such a curve does not exist. It only exists under very special circumstances, for example, if the boundary of your cloud can be generated by sweeping a sphere along a curve, e.g., this shape produced in POVRay (from this web page):
          Swept Sphere
So you will have to accept some type of approximation.

One idea is to first, compute the boundary somehow. Since you mention mesh, maybe you already have the boundary. Second, find maximal inscribed spheres. Third, approximate their centers by a best-fit curve.

As bo^4 suggests, and your title acknowledges, you are really looking for the medial axis, which is both difficult to compute and in general a multisheeted surface. Essentially you want to approximate the medial axis by a single curve.

like image 179
Joseph O'Rourke Avatar answered Dec 09 '25 00:12

Joseph O'Rourke



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!