3D表面重建算法

4

我有一个3D表面(例如圆锥体)。它被投影到2D平面上,以等高线的形式呈现,这意味着不同的Z值将在2D平面上具有不同的线条。问题是如何通过插值使用等高线来恢复3D表面?我们只知道不同等高线之间的z差异。

2个回答

7
你所提到的“轮廓线”的技术术语是“等高线”。 在给定一组等高线之后,您首先需要构建一个三维点云(即三维空间中的点集合)。这可以分为两个阶段。首先,在等高线上均匀采样,得到二维点,然后通过适当的高度将点升高。 通过追踪等高线的位置,可以轻松地在均匀间隔上对其进行采样。您可以从最外层开始逐个追踪线条,移除每条追踪的线条,并跟踪您追踪的线条数量,以确定该线条的高度。 当然,您需要事先了解线条之间的高度差以及最外层线条(或任何其他可用作参考的线条)的高度。
一旦您拥有了三维点云,就可以使用众多表面重建算法之一。例如,这家公司开发了一款应用程序,可以执行此操作,并且您可以从其网站下载命令行演示版,该版可处理高达30,000个点。

2
在这种情况下,如果您的点在z = f(x,y)中或者您的形状是凸面体,表面重建算法将是浪费时间。
对于 z = f(x,y),有一个简单的解决方案:
1. 只使用x,y坐标进行Delaunay三角剖分 2. 使用先前的三角剖分绘制表面,这次也使用z。工作完成!
如果您的形状是凸面体,则使用convhull算法。
如果您的形状是凹面体,则使用: http://www.advancedmcode.org/surface-recostruction-from-scattered-points-cloud-mycrust-robust.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接