在本期基础转盘摄影测量系列教程中,我们将分析 Meshroom 项目的基本特性,以及如何利用照片重建几何体。


本教程不提供中文配音。您可以在下方观看英语配音的视频,并选择中文、英文或其他语言的字幕。视频下方提供了翻译成中文的文字稿。


视频文字稿

大家好!在本期基础转盘摄影测量系列教程中,我们将分析 Meshroom 项目的基本特性,以及如何利用照片重建几何体。

我将首先概述 Meshroom 的界面和工作流程,然后进入导入图像的实际操作步骤。

下载并安装 Meshroom 后,启动程序。此时会打开两个窗口。控制台窗口用于显示程序运行过程中的数据和信息,而主窗口则是我们进行项目操作的地方。关闭其中任意一个窗口都会导致程序退出,因此两者都必须保持开启状态。

实际上,Meshroom 支持不同类型的项目。点击 File 菜单中的 New Pipeline 即可查看。显然,我们关注的是 Photogrammetry 项目。

首先要做的是保存项目。我建议创建一个专门的文件夹来存放项目文件,因为运行摄影测量流程后,会自动生成完整的文件夹结构,稍后我们会对此进行查看。

项目文件使用 MG 扩展名,即 Meshroom Graphs。Pipeline 和 Graphs 这两个术语强调了 Meshroom 中的处理流程是按顺序逐步执行的。这一点可以在底部的 Graph Editor 面板中直观地看到,其中显示了各个节点及其连接关系。

在分析这个流程之前,我们先快速浏览一下程序界面。

Image Gallery 面板用于存放我们要用于重建的图像。初始状态下这里是空的,并提示我们可以直接将文件从文件夹拖放到此区域。如果我没记错的话,在 Windows 中以管理员模式运行 Meshroom 时,这个拖放功能无法使用。无论如何,也可以通过 File 菜单中的 Import Images 导入图像。

在 Image Viewer 面板中,我们可以逐张查看已加载的图像,从而剔除质量较差的照片或提取相关数据。之后,这个窗口还会显示 Meshroom 生成的一些数据,例如我们稍后会看到的 Depth Map。

3D Viewer 面板将显示点云,也就是重建场景的表示形式。在这里,我们还可以重新定义需要重建的区域范围,即所谓的 bounding box,从而只关注特定元素。

Graph Editor 面板显示需要执行的节点序列及其连接关系。每个节点代表一个特定任务,它会利用输入端口接收到的数据逐步执行,并通过输出端口生成一个或多个结果。

新建的 Photogrammetry 项目会包含一个带有默认参数的基础 Pipeline,这对于许多项目来说已经足够适用。当项目开始运行时,Meshroom 会创建一个名为 Cache 的子文件夹,并在其中为 Pipeline 中的每个节点生成对应的子文件夹。

Pipeline 并不一定要保持默认状态。正如我们稍后将在本期教程中看到的那样,它可以通过添加新节点或修改节点连接关系来进行调整。

无论如何,点击任意节点后,我们都可以在右侧的 Node 面板中查看其参数和设置。每个节点还会通过底部的 Attributes、Log 等选项卡提供多种类型的信息。

默认界面中的最后一个面板是 Task Manager,初始状态下为空。之后我们将在这里查看各个节点的执行情况。

在 View 菜单中,你可能会注意到 Live Reconstruction 面板没有启用。不过在这个入门系列中我不会使用它,因此可以保持禁用状态。

Fullscreen 选项顾名思义,可以让主程序窗口以全屏模式显示。

在进入实际操作之前,我先简要介绍一下 Pipeline,它代表节点的执行顺序。

整个 Pipeline 可以分为两个阶段。在第一阶段,也就是执行到 Structure From Motion 节点之前,Meshroom 会加载图像并提取称为 Features 的特征信息。这些特征能够帮助程序在多张照片之间识别对应的参考点。

随后,这些 Features 将用于重建场景几何结构,而这一过程发生在 Structure From Motion 节点之后。具体来说,在第二阶段中,Meshroom 会为检测到的 Features 计算深度数据,从而生成三维点云。接着,它会重建几何体,这种几何体被称为 Mesh,因为它由顶点组成,顶点通过边连接,而边进一步定义出三角形面。

最后,原始照片会被合成为一张称为 Texture 的图像。它表示原始三维物体各部分的颜色信息,并以二维图像的形式进行存储。

从照片中检测出的 Features 开始,我们最初得到的是空间中彼此独立的点。随后这些点会被连接起来形成几何结构,也就是由各种表面构成的 Mesh。之后再将 Texture 图像应用到这些表面上,从而让重建出的几何体呈现出原始物体的颜色。

关于 Pipeline、各个节点以及整个执行过程,还有很多内容值得讨论。不过随着项目的推进,我会逐步解释这些细节。

现在进入实际操作部分。首先,我将原始照片拖入 Image Gallery 面板。

在 Image Gallery 面板中,我们可以看到已添加照片的总数量,以及 Meshroom 根据图像中提取的内参数据所识别出的相机数量。这个数字显示在面板底部快门图标旁边。

对于每张照片,如果元数据存在,我们可以将鼠标悬停在预览图中的快门图标上查看这些信息。在当前案例中,元数据是存在的,因此快门图标显示为绿色。如果缺少元数据,图标则会显示为红色,而 Meshroom 会在缺乏这些信息的情况下尽可能完成重建。

在转盘摄影测量项目中,建议选中 Feature Matching 节点,并将 Minimal 2D Motion 参数设置为 2。完成该调整后,我会保存项目。

如果项目中的照片使用了绿幕背景,例如本案例这样,那么可以尝试让 Meshroom 在提取 Features 之前先排除绿色背景。这可以通过在 Graph Editor 中添加一个 Image Masking 节点来实现。只需在面板空白区域右键单击,然后插入该节点即可。

在新节点的 Structure From Motion Data 输入端,需要连接来自 Camera Init 节点的 Structure From Motion Data 输出端。只需在两个端口之间点击并拖动即可完成连接。

随后,新节点的输出端需要连接到 Feature Extraction 和 Prepare Dense Scene 两个节点的 Mask Folder 输入端。

现在选中 Image Masking 节点后,我们就可以在 Node 面板中定义需要排除的颜色,并调整色相、饱和度和亮度的容差参数。不过这种排除绿幕背景的方法并不十分实用,因为它无法提供良好的结果预览,也无法针对每张照片单独设置参数。在我们的案例中,这一点尤其重要,因为背景布上的光照并不均匀。

因此,我将通过右键单击并选择 Remove Node 来删除 Image Masking 节点。顺便说明一下,如果要删除节点之间的连接,可以右键单击连接线并选择 Remove。

我也会删除所有照片,因为在下一期教程中,我将向大家展示一个 Blender 小型工作流程,它不仅能够更方便地去除绿幕背景,还能够消除绿色溢色(green spill),也就是绿幕反射到被摄物体表面所产生的绿色偏色现象。

我唯一保留的自定义设置,就是 Feature Matching 节点中 Minimal 2D Motion 参数的数值 2。

现在我将使用这些设置保存项目,关闭 Meshroom,我们下期教程再见!

搜索教程

输入短语,或输入多个用逗号分隔的关键词进行搜索。

本站提供 Francesco Milanese 制作的 3D 模型、教程及计算机图形相关资源。3D 模型的使用许可可通过各模型页面上的链接前往第三方商店购买,并须遵守适用的许可条款。 Francesco Milanese — 意大利增值税号:06321250877。 联系方式:info@francescomilanese.com


高级隐私策略信息和cookie文件的使用