3D表面重建算法

发布于 2024-07-09 12:38:13 字数 110 浏览 6 评论 0原文

我有一个 3D 表面(例如圆锥体)。 它以轮廓的形式投影到2D平面上,这意味着不同的Z在2D平面上将有不同的线。 问题是从轮廓开始,如何利用插值来恢复3D表面? 我们只知道不同轮廓线之间的 z 差异。

I have a 3D surface ( such as a cone). It is projected to a 2D plan in the form of contour, meaning that different Z will have different lines on 2D plan. The problem is from the contour, how to recover the 3D surface by using interpolation? We only know about the z difference between different contor lines.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黯然#的苍凉 2024-07-16 12:38:13

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

一旦您拥有 3D 点云,您就可以使用任何多种表面重建算法之一。 例如,该公司制作了一个可以执行此操作的应用程序,您可以从他们的网站下载命令行演示最多可获得 30,000 点。

The technical term for the "contours" you mentioned is "iso-lines".
Given the set of iso-lines you first need to construct a point cloud in 3D (just a collection of points in 3D space). You do that in two stages. first by sampling each iso-line at a uniform intervals, You get 2D points and then you raise the points by the appropriate height.
sampling a line at uniform intervals can be easily done by tracing it wherever it goes. You can know the height of a line by starting from the most outer line and tracing the lines one by one towards the inside, removing each line you trace and and keeping track of how many lines you traced.
Of course you need to know in advance what is the height difference between the lines and what is the height of the most outer line (or any other line which can be used as a reference)

Once you have a 3D point cloud you can use any one of a number of surface reconstruction algorithms. This company for instance makes an application which does that and you can download a command line demo from their site which will work for up to 30,000 points.

別甾虛僞 2024-07-16 12:38:13

在这种情况下,如果您的点位于 z=f(x,y) 中或者您的形状是凸的,则表面重建算法会浪费时间。

简单解决方案

  1. 对于 z=f(x,y) 是仅使用 delaunay 三角测量的
    x,y 坐标
  2. 用之前的三角测量绘制表面,这次也使用 z。 工作完成了!

你的形状是凸的,使用 convhull 算法

你的形状是凹的,使用:
http://www.advancedmcode.org/分散点的表面重建-cloud-mycrust-robust.html

A surface reconstruction algorithm would a waste of time in this case if your points are in the z=f(x,y) or your shape is convex.

For z=f(x,y) is the easy solution

  1. delaunay triangulation using only
    x,y coordinates
  2. plot the surface with previous triangulation, this time use z too. Job is done!

Your shape is convex use a convhull algorithm

Your shape is concave use:
http://www.advancedmcode.org/surface-recostruction-from-scattered-points-cloud-mycrust-robust.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文