如何从一堆 2D 照片中获得 3D 模型?

3D打印 3d模型 图形
2021-05-12 01:17:53

我是一名物理学研究生,我想为我的晶体样品创建一些 3D 模型。我们的实验室有一台 X 射线衍射仪。它里面有一个测角仪,所以基本上我可以从任何角度拍摄尽可能多的照片。(我已经包含了一个由机器拍摄的10张照片组成的gif动画作为下面的例子)

由机器拍摄的十张照片组成的gif动画

我的问题是,鉴于这些 2D 照片,我能否在 AutoCAD 或类似软件中为我的晶体构建 3D 模型,以便我可以更精确地确定角度、边长和体积。

我是 3D 打印部分的新手。我只是想也许这里有人遇到过类似的问题。如果有人能告诉我可以完成此类工作的任何 Github 代码、MATLAB 脚本、Mathematica 脚本或软件,那将非常有帮助。我可以试着自己弄清楚。

3个回答

是的,如果您知道图片之间的旋转角度,则可以通过多张照片制作模型。

大多数 CAD 程序允许插入图片,例如作为背景或跟踪它。我们对后面的使用感兴趣:

我们插入图片,在图片的图层中追踪它,然后插入下一张图片,围绕图片的旋转轴旋转,并追踪它。这我们一次又一次地重复。由此产生的轮廓云在很大程度上接近了拍摄的身体。

但是有一个很大的警告:所有照片必须在相同的比例和距离上,对象的旋转必须围绕项目本身的一个轴(没有摆动)并且图片之间的旋转必须非常准确。顺便说一下,这个原理在光栅扫描中非常有用。

由于水晶和背景之间的对比非常强烈,软件可能能够自动跟踪过程(例如,使用白色背景和黑色水晶并确保没有反射击中相机)。

使用 Fusion360 的示例

让我们假设我有一个像这个八面体一样有两个切割尖端的完美晶体 具有上下尖端切割的八面体

要对此建模,我们至少需要一张 XZ 和 YZ 形状的照片(即相互旋转 90°),如下所示:

XZ 和 YZ 平面投影勾勒出的轮廓

但这种形状也将匹配双锥体!所以我们需要一些中间照片,在这种情况下,位于(XY 对角线)Z 平面上的 45° 镜头

对角线-Z 平面投影追踪的轮廓

如您所见,您拥有的轮廓越多,伪体变得越详细——但它只是顶点和线的集合!但是,我们可以取 3 个点并在这些点上创建一个构造区域,然后绘制面以合并这些面上的所有点......

构造层

现在,我们将这些构造面变成造型面,然后创建一个太大的对象并将整个物体切掉......

制作模特脸 创建切口 结果模型

对于 4 张图片(0°、45°、90°、135°),整个工作流程如下所示

工作流程

实际的 f3D 设计文件在这里

受到@Trish 给出的答案和以下YouTube 视频的启发,我终于找到了在 AutoCAD 中重建 3D 晶体模型的方法。

  1. 将 6 个图像导入 AutoCAD。这些照片是从 6 个不同角度拍摄的,间隔 30 度。 在此处输入图片说明

  2. 在 XY 平面中沿 Y 轴绘制 6 条长度为 100 的线。 在此处输入图片说明

  3. 使用 ALINE 命令将照片中的旋转轴与添加的垂直线对齐。 在此处输入图片说明

  4. 使用 SCALE 命令将所有 6 张照片重新缩放为统一大小。 在此处输入图片说明

  5. 使用 POLYLINE 命令跟踪 6 个光栅图像的横截面。 在此处输入图片说明

  6. 使用 3DROTATE 命令旋转 6 个图像和相应的旋转轴,并沿 Y 轴跟踪横截面。第一张图片沿 +Y 轴观看时顺时针旋转 75 度,第二张 45 度,第三张 15 度,第四张 -15 度...(提示:旋转 Gizmo 将仅在 3D 视图中显示。如果您没有看到 Gizmo,拖动右上角的视图立方体以更改视点并重试。)(从 Y 轴在此处输入图片说明 查看(从 Z 轴查看) 在此处输入图片说明

  7. 使用 3DMOVE 命令移动 6 个图像,使每个图像的旋转轴在 YZ 平面上对齐在同一圆上。(你需要一点计算来完成这一步)(从 Y 轴看) 在此处输入图片说明 (从 Z 轴看) 在此处输入图片说明

  8. 使用 EXTRUDE 命令将 6 个横截面挤压成 6 个圆柱体,每个圆柱体的高度应足够长,以便 6 个圆柱体相交。 在此处输入图片说明

  9. 使用 INTERSECT 命令从 6 个圆柱体中获取相交部分,这将是想要的晶体模型。 在此处输入图片说明

您可能想要搜索“摄影测量”。这是使用许多照片来构建 3D 模型的软件。Falkingham 博士在他的博客上对自由软件做了很好的评论:

https://peterfalkingham.com/2016/09/14/trying-all-the-free-photogrammetry/ https://peterfalkingham.com/2017/12/17/free-photogrammetry-software-review-2017/

他的结论对我来说非常有效,使用 COLMAP 拍摄照片并构建点云,然后使用 OpenMVS 从点云构建和纹理网格。

https://colmap.github.io/ https://github.com/cdcseacave/openMVS/wiki/Usage

我没有使用过很多商业软件包,但 Pix4D 对我来说效果很好。

https://www.pix4d.com/

我希望这能让你开始。