三维表面重建算法

时间:2008-12-05 07:18:06

标签: algorithm math 3d interpolation

我有一个3D表面(如锥形)。它以轮廓的形式投射到2D平面图,这意味着不同的Z在2D平面图上将具有不同的线。问题来自轮廓,如何通过插值恢复3D表面?我们只知道不同对照线之间的z差异。

2 个答案:

答案 0 :(得分:7)

您提到的“轮廓”的技术术语是“等值线” 给定一组等值线,首先需要在3D中构建点云(只是3D空间中的点集合)。你分两个阶段做到这一点。首先以均匀的间隔对每个等值线进行采样,得到2D点,然后将点提高到适当的高度 以均匀的间隔对一条线进行采样可以通过在任何地方进行跟踪来轻松完成。您可以通过从最外面的线开始并逐行向内扫描线来了解线的高度,移除您追踪的每条线并跟踪您追踪的线数。
当然,您需要事先知道线条之间的高度差以及最外线(或任何其他可用作参考的线条)的高度是多少

拥有3D点云后,您可以使用多种曲面重建算法中的任何一种。例如,This company创建了一个应用程序来执行该操作,您可以从他们的站点下载命令行演示,该演示将最多可以工作30,000个点。

答案 1 :(得分:2)

如果你的点位于z = f(x,y)或你的形状是凸的,那么表面重建算法会浪费时间。

对于z = f(x,y)是简单的解决方案

  1. 仅使用delaunay三角测量 x,y坐标
  2. 使用先前的三角测量绘制曲面,此时也使用z。工作完成了!
  3. 你的形状是凸的使用convhull算法

    你的形状是凹形的: http://www.advancedmcode.org/surface-recostruction-from-scattered-points-cloud-mycrust-robust.html