基于摄影测量的三维重建【终极指南】

我们生活的时代非常令人兴奋,如果你对 3D 东西感兴趣,更是如此。 我们有能力使用任何相机,从感兴趣的物体中捕捉一些图像数据,并在眨眼间将它们变成 3D 资产! 这种通过简单的数据采集阶段进行的 3D 重建过程是许多行业的游戏规则改变者。

随着神经辐射场(又名 NeRF)等新的尖端 3D 重建方法的兴起,有必要回到某些不太基础的“基础”,这应该可以帮助你减轻炒作(除其他外) 😄)。

在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

图像 3D 重建是一个广泛研究的领域,有一个非常激动人心的故事,它在历史上通过三个研究“氛围”来解决:具有立体视觉和运动结构 (SFM) 的计算机视觉,具有各种同时定位和映射的机器人 (SLAM) 迭代和地理信息,以及摄影测量视角。 这些术语本质上是针对传感器相对于周围环境的同步定位(位置和方向),同时构建相同环境的 3D 地图。

而今天,我们对度量方法感兴趣,它可以建立在一组非结构化重叠图像上并将它们转换为 3D 对象。 还有什么比我们自己动手做更好的理解方式呢?

让我们开始吧!

1、三维重建简介

在此终极 3D 重建指南中,我们将详细探索两个摄影测量项目,并解释导致最终美丽结果的所有步骤。 我们将研究一个小型项目(通过摄影测量重建一个简单的物体)和一个大型项目(使用地面激光扫描仪和摄影测量重建一个废弃的羊毛工厂)。

对于每个项目,我们将完成采集设置和处理步骤,展示带有付费选项 (Reality Capture) 和开源软件 (Meshroom) 的工作流程。

为了便于复制,我有意专注于提供最多的细节和插图。 因此,语气比平时更浓一些,但希望当你的日常活动变得模糊时,它会成为一个精确的方法😁。

在这里插入图片描述

如果你有时间,请准备好按照流程创建今天感兴趣的对象和场景的数字副本。

2、小尺度物体的三维重建

让我们首先研究一个轻松的项目,你可以在家中使用普通相机和计算机轻松复制。 该项目旨在获得一个简单对象(更准确地说,是一个迷你矿井装饰)的 3D 重建。 物体的大小大约为15 x 10 x 10厘米。 该物体为灰色和棕色,表面无光泽。
在这里插入图片描述

2.1 数据采集

正如承诺的那样,必要的设备很容易获得。 只需要一个相机(你的智能手机可以),如果需要更高的稳定性和控制力,可以使用三脚架,但没有它也可以工作。 使用的相机是带有佳能超声波镜头的佳能 EOS 50D。 照片以JPG格式保存,大小为4752*3168像素。 在开始采集之前,我们拍摄几张照片以确定应使用哪些设置。 在我们的实验中,我们将相机参数设置如下:

  • 焦距:28mm的固定焦距,在与拍摄对象的距离和可工作区域之间取得了良好的平衡;
  • ISO:400,这是一个很好的开始值,但如果你的场景显得太暗,你可以将这个值提高到 1600(后果自负😁);
  • 光圈:F/3.5,以有限的景深为代价获得足够的光线。 在我们的例子中,因为我们只关注一个小物体,所以这个光圈足够了。
  • 快门速度:125 毫秒(1/8 秒),由于稳定性更高,我们的三脚架可以做到这一点。 没有三脚架,低于 1/200s 是非常棘手的;
  • 白平衡:4000 K。这适应了我们场景的环境照明。

以上参数在整个采集过程中保持不变。
在这里插入图片描述

采集策略本身很简单。 我们将相机放在三脚架上,调整高度和角度,使物体完全适合视野。 在这种情况下,由于物体比较低,我们可以让相机的角度向下,这样我们也可以拍摄到顶部。 我们使用自动对焦来确保照片不会模糊,然后切换到手动模式。
在这里插入图片描述

然后我们沿着物体周围的圆形轨迹移动三脚架。 我们需要与物体保持恒定的距离,以便焦点保持正确。 我们边走边检查照片。 一旦我们完成了围绕物体的第一个圆圈,我们就减少了三脚架的腿并降低了相机的向下角度。 我们调整焦点,然后再次切换到手动模式。 我们围绕这个主题再拍几张照片。

最后,我们从三脚架上取下相机,拍摄完整物体的垂直照片。 为此,我们再次调整焦点。 然后,我们拍摄细节照片,以确保物体所有部分的纹理都很好。 这个想法基本上是拍摄足够的照片以允许完整和详细的重建,同时记住不必要的大量输入只会减慢过程并使过程复杂化。 理想情况下,对于这样的对象,你有 25 张图片(8 个水平位置乘以三层高度,再加上一个在顶部)。

现在,我们可以将照片复制到计算机上并开始处理! 👌

2.2 摄影测量处理

首先对照片进行分类,以消除只会干扰后续步骤的质量差的图像(模糊、失帧、曝光错误)。 在 50 张照片中,我们剔除了两张稍微失焦的照片。 对于处理,我必须找到一台具有相当标准组件的旧笔记本电脑来证明可复制性😁:笔记本电脑是 Acer Aspire,Windows 10 64 位; 第七代英特尔酷睿 i5 处理器; 12 Gb 内存和 NVIDIA GeForce 940 MX GPU。 比起下一个要审核的项目,考虑到投入少,用一台高性能的电脑还是有余的!

现在所有的测试台都清楚了,让我们通过使用 Reality Capture 和 Meshroom 的工作流程深入研究 3D 摄影测量处理细节。

选项 A:Reality Capture。

Reality Capture 的选择非常简单:可以免费做任何事情……只要不导出任何内容。 因此,没有什么比展示最先进的专业软件更好的了。

你可以使用此链接直接下载 Reality capture。 安装该程序后,可以通过注册为“匿名”以 PPI 模式(按输入付费)免费试用。 许多在线教程和讨论有助于开始使用 Reality Capture。 第一步是创建一个新项目并导入我们的 48 张图像。 这是通过拖放或单击“输入”图标来完成的。

在这里插入图片描述

然后,我们从“对齐”选项卡中的第一个图标开始对齐。 对于这个项目,我们保留默认参数。
在这里插入图片描述

由于输入数量较少,对齐仅需 30 秒即可完成。 在这一步之后,我们有一个由点云和相机的估计位置组成的组件。 哇哦! 🎉

在这里插入图片描述

我们可以检查所有输入是否对齐,并看到估计了 48 个摄像机中的 48 个的位置。 我们还检查对齐报告。 此报告提供对齐持续时间、对齐输入的数量、点计数以及以像素为单位的平均和最大重投影误差。 也可以检索使用过的对齐设置。

在这里插入图片描述

💡 提示:最好将最大投影误差设为 2 像素,将平均投影误差设为 0.5 像素以下。 当然是越低越好。 有趣的是,你可以看到我们在这里回答了这两个标准。 最重要的是,我们获得了一个平均轨道长度信息,可以清楚地了解相机到物体的距离。

最后,完成点云的目视检查。 如果一切正常,我们就可以进行下一步,重建。 我们保留默认参数,除了“图像缩小”因子设置为 2。

💡 提示:缩减因子是图片在使用前被缩小的因子。 可以将 downscale 保持在 1(这意味着图像以其原始大小使用),但重建可能需要更多时间。 当使用更高的缩减因子时,结果可能更嘈杂或更不详细。 然而,差异有时非常微妙。 使用可提供令人满意的结果和可接受的处理时间的降比例因子确实很重要(在这种情况下,它并不重要,但对于更重要的项目来说是必不可少的)。

通过单击“重建”选项卡中的“正常细节重建”图标开始重建。 此步骤仅需五分钟,生成约 100 万个三角形面的网格。 与地球上的国家数量(2023 年为 195 个)相比很多,但与我们通常使用的国家相比非常小。 使用“高级”选择工具,我们选择边缘和大三角形,然后过滤选择。 我们还调整了重建框,以消除属于放置对象的家具的部分(“框”选择工具)
在这里插入图片描述

我们现在可以看看我们的过滤模型。 在此步骤中分析你获得的质量很重要,因为在此模式下,很容易发现应修复的几何问题。 据我所知,我对这一步的结果很满意。 你呢? 你的实验进行得怎么样了?
在这里插入图片描述

最后一步是对网格进行纹理化。 为此,我们保留默认参数并单击“重建”选项卡中的“纹理”按钮。 默认情况下,缩减因子 2 用于纹理。
在这里插入图片描述

再过两分钟后,我们终于获得了对象的数字复制品。
在这里插入图片描述

在不到一个小时的时间内(包括采集和处理时间),我们成功地获得了一个完整且高度逼真的实物的 3D 模型。 最大重投影误差设置为低于 2 个像素,我们获得了 0.46 个像素的平均误差。 模型的某些区域比其他区域具有更好的纹理。 在这种情况下,由于我们手头有物体并准备好采集设置,纹理问题可以通过拍摄缺少信息的部分的免费照片轻松解决。 这表明使用 Reality Capture 的 3D 摄影测量可以非常高效并且相对容易使用,无需成为专家。 我们保留了默认参数并得到了令人满意的结果。 显然,对于更广泛或更复杂的项目,了解和调整每个任务的设置以获得最佳结果至关重要。 这就是我们将在第二章中检查的内容。 😉

🦚注意:如果你想导出模型,你要么必须购买许可证,要么在 PPI 模式下免费使用程序,只为最终结果付费。

选项 B:Meshroom。

Meshroom 是一个开源程序,可以在这个地址下载, 在线提供用户手册。

通过拖放或单击“文件”顶部菜单中的“导入图像”将图像导入 Meshroom。 在 Meshroom 中,你可以轻松地将管道和为获得最终结果而执行的不同任务可视化。 管道可以通过添加或修改节点的参数来适应用户的需求。

在这里插入图片描述

我们可以看到执行的连续任务是特征提取、图像匹配、特征匹配、运动结构、深度图的创建、网格划分和纹理化(有关每个步骤的详细说明,请参见第 2 章)。 对于这个项目,我们保留默认管道,这通常会产生良好的效果,只需单击屏幕顶部的“开始”按钮即可。 2 小时后,处理完成,我们可以研究 3D 视图中的稀疏点云结果,以及相机的估计位置。

在这里插入图片描述

如果我们点击管道节点,会得到关于每项任务的简短报告。 例如,我们可以看到估计了所有 48 个摄像机的位置。 我们还可以查看网格划分任务的报告,它告诉我们重建是由将近 2M 个三角形组成的。
在这里插入图片描述

在文件资源管理器中,我们现在可以查找“Meshroom Cache”文件夹,其中已经包含所有处理结果(无需显式导出模型)。 在“Meshing”文件夹中,我们可以找到我们的模型作为 OBJ 文件。 在“Texturing”文件夹中,我们找到了纹理模型的 OBJ 文件。
在这里插入图片描述

💡 提示:在 Windows 10+ 中,OBJ 模型可以直接使用 3D Viewer 应用程序打开,否则我们将在第 2 章中看到如何使用 Blender 或 MeshLab 处理这些文件。
在这里插入图片描述

使用 Meshroom,处理时间要长得多。 三角形的数量也是我们使用 Reality Capture 时的两倍,这并不奇怪,因为我们使用了缩小因子进行重建,这在此处有所不同。 然而,模型的方面(纹理)可能看起来更好,即使在这种情况下,使用的缩小因子是相同的 (2)。 可以使用 Meshroom 对模型进行后处理,或者可以更改节点的参数(而不是保持默认值)以获得更好的结果。 该模型也可以导入到另一个软件(如 Blender)中,以清洁属于放置该对象的家具的部件。 与 Reality Capture 不同,借助 Meshroom,我们可以直接将模型作为 OBJ 获取,没有隐藏成本。 我们甚至可以 3D 打印它(但那是另一次了 😉)!

3、大型项目的三维重建

现在让我们来看一个更大规模的项目,并更详细地了解处理工作流程。 这个项目发生在比利时韦尔维耶市,特别是在一个废弃的羊毛厂。 工作环境由几栋建筑组成。 这些建筑物的室内和室外部分都被考虑在内。

由于这个地方被遗弃了,因此不对公众开放。 这个地方的建模是作为一个项目的一部分完成的,该项目旨在在它们崩溃之前捕捉不寻常的地方,这样人们就可以(虚拟地)和我的朋友 Roman Robroek 一起参观它们。

3.1 3D 数据采集

整个采集过程由两个人在2小时内完成。 一个人拍照。 该项目中使用了两个摄像头:

  • 焦距为 16 至 36 毫米的索尼相机;
  • 焦距为 24 毫米的佳能相机。

索尼相机拍摄 393 张照片,佳能相机拍摄 384 张照片。 照片以 HDR(高动态范围)拍摄。 格式为 JPEG。 所以,我们总共有 777 张照片。

在战略要地,三脚架会在一个圆圈上以短角度间隔拍摄照片。 更多的照片是徒手拍摄的,以完全覆盖工作环境。

第二个人负责激光扫描部分并使用 BLK 360 激光扫描仪,该扫描仪体积小,因此可以在狭窄区域进行扫描。 因此,该项目是一个混合项目。 来自 156 次激光扫描的数据被收集并添加到处理中,以完成照片中的信息。

BLK 中的原始文件采用 .e57 格式。 黑色和白色目标用于将扫描链接在一起。

3.2 3D 数据处理

这次,为了处理,我们使用了一台高端计算机:它是一台配备 Intel Core i9–10900X 处理器、256 Gb RAM 和 NVIDIA GeForce RTX 3090(很酷,我知道😊)的塔式计算机。

选项 A. Reality Capture

在 Reality Capture 中,我们首先导入 156 个激光扫描(由软件从 .e57 转换为 .lsp 文件)。 可以对所有输入或逐个部分进行对齐。 在最后一种情况下,我们然后对齐组件(“合并组件”工具)。

对齐也可以在扫描件上单独完成,然后在图像上完成。 如果扫描是地理参考的,则对齐只是元素定位信息的视图,因此是即时的。 我们可以使用“匹配地理参考组件”选项来仅获取一个组件,即使我们的环境中有未链接但地理参考的部分也是如此。 另一个有用的选项是“强制组件重新匹配”。 随着越来越多的相机对齐,在已经匹配的相机之间执行重新对齐以增强结果。 但是,如果我们有要链接的组件,则不应将此选项设置为“是”:这会修改每个组件已经很好的对齐,并可能引入错误。

首先,我们对齐激光扫描。 由于它们是地理参考的(因此已经链接在一起),因此只需几秒钟。 我们在一个组件中对齐了 156 次扫描中的 156 次。 我们导入我们的 777 图像并在开始该过程之前更改对齐设置。 我们将“每幅图像检测到的特征数量”和“每 mpx 检测到的特征数量”(百万像素)参数设置为 100k,并将“图像重叠”设置为“高”。

💡 提示:检测到的特征的最大数量越高,有助于获得更少的组件,但对更多特征的研究可能会减慢这个过程。 必须根据数据集定义图像重叠。 如果设置为“Low”,处理速度较慢,我们可能会获得多个单独的组件。
在这里插入图片描述

经过 36 分钟的处理,我们得到了 933 个元素中的 897 个对齐的主成分。 我们还有六个包含 3 到 6 个对齐图像的小组件。 当然,我们感兴趣的是更重要的组件,但为了完整起见,让我向您展示我们如何链接回其他组件(如果它们包含所需信息,则很有用)。 我们将添加控制点以对齐尽可能多的图像。 控制点是其位置位于不同图像中的点。 添加控制点的目的是添加使对齐更容易的约束。 我们可以查看每个小组件中对齐的图像,决定在哪里添加控制点,然后尝试在主要组件中对齐的图像中找到相同的点,以确保当我们进行新的对齐时所有内容都将链接在一起 .

通过打开 2D 视图,然后进入“场景”选项卡,我们可以选择仅查看未配准的图像(即根本未对齐的图像)。 这向我们展示了哪些其他区域需要控制点。

在这里插入图片描述

在 Reality Capture 中,我们可以通过单击“Alignment”选项卡中的“Control Points”按钮来添加控制点。

在这里插入图片描述

然后,通过按住鼠标左键,我们可以调整图像中的位置。 我们还可以使用鼠标滚轮进行缩放。 释放鼠标左键时,添加控制点。 可以添加另一个控制点,或者通过预先选择有问题的控制点,可以将相同的控制点定位在另一个图像中。

在这里插入图片描述

在这个项目中,使用了 18 个控制点。 每个控制点位于 3 到 18 个图像中。 使用与以前相同的设置开始新的对齐。 11 分钟后,对齐完成。 现在我们已经对齐了 98% 的输入(933 张图像中的 918 张),让我们检查一下定量结果。 这是首先通过查看对齐报告来完成的。 平均重投影误差为 0.57 像素。 通过再对齐 21 张图像,点数从 1280 万点增加到 1350 万点。

在这里插入图片描述

然后,我们还可以通过检查点云来直观地检查对齐结果。 我们正在寻找奇怪放置的元素、双层墙或未充分缩放的部分。
在这里插入图片描述

我们注意到三个摄像头没有对齐(它们的位置没有意义)。 当发生这种情况时,我们可以尝试将这些相机与新的控制点对齐或禁用它们以进行进一步处理。 当我们在这些照片所覆盖的区域中已经有足够的信息时,选择最后一个选项,因此使用它们并不重要。

💡 提示:可以通过选择并按下 CTRL+R 来一次性禁用所有任务的输入。 然后将这些输入交叉到输入列表中,并以红色显示。

我们现在可以继续进行网格划分。 我们使用默认参数在 Normal 细节中开始重建,除了在 3M 上设置的“Maximal vertex count by part”。 在“Normal detail”中,“Image downscale”的值默认为2。
在这里插入图片描述

经过 5 小时 30 分钟的处理,我们得到了一个由 616.6M 个三角形组成的模型。

在这里插入图片描述

该模型太大而无法在“Solid”模式下完整显示,因此我们截取其中的一小部分来检查结果。 裁剪是通过调整感兴趣区域周围的重建框,选择框外的三角形(使用“框”选择工具)并过滤选择来完成的。 结果是一个可以在“实体”模式下显示的新模型
在这里插入图片描述

裁剪还有助于对模型的小部分执行测试,而不是同时对整个模型应用更改,这可能会导致处理时间过长。 例如,我们可以测试“Image downscale”值的影响。 我们禁用重建框外的输入并连续启动三个重建,每次“图像缩小”参数的值不同。

处理时间和每个值获得的三角形计数在下表中给出。
在这里插入图片描述

“图像缩小”增加得越多(即图像缩小得越多),处理时间越多,处理时间就越短。 然而,随着“图像缩小”的增加,某些区域的细节会丢失。
在这里插入图片描述

对于更大的部分,差异非常微妙,如下图所示。
在这里插入图片描述

另一个有用的测试是研究支持三角测量的合格点数。 在诸如“两个顶点之间的最小距离”为 0.01 m 而不是 0.002 m 的约束下,它要低得多。 这导致模型包含更少的三角形(2M,而我们之前有 27.4M)

在这里插入图片描述

这也会导致模型中出现更大尺寸的三角形,因此可能会在非平面区域中丢失清晰的几何形状。
在这里插入图片描述

我们也可以尝试减小“Maximal vertex count by part”参数的值。 三角形数没有改变,但我们现在有 61 个零件而不是 20 个。好处是处理时间要短得多(2 分钟对 13 分钟)。
在这里插入图片描述

💡提示:可以根据使用的激光扫描设置三个重建参数。 这些参数是“两点之间的最小距离”、“点云裁剪半径”(比取决于激光扫描的范围更远的点被认为是不可靠的,不用于计算),以及“ 点的最小强度”(强度较低的点不用于计算)。 要找到应使用的设置,请参阅激光扫描用户手册。

现在,让我们用本章前一节提到的“高级”选择工具做一些清理并选择边缘三角形和大三角形。 该函数需要1分钟来推送结果。 我们还平滑模型以去除噪声。 要调整的设置是“平滑类型”(“噪声消除”或“强”)、“平滑样式”(边界顶点、表面顶点表面或两者的平滑)、“平滑权重”和 算法的“迭代次数”。 权重越大,平滑越激进(因此,可能会擦除更多细节)。 我们对模型的一小部分进行了一些测试,如下所示和解释。

在这里插入图片描述

我们可以观察到一些变化,但它们并不明显,因为模型一开始就不是很嘈杂。
在这里插入图片描述

如果我们看一个噪声较大的数据集,我们可以更好地看到平滑的效果。 平滑是在表面而不是边缘上完成的,执行了 100 次算法迭代,权重设置为 0.5。 平滑在 10 分钟内完成。
在这里插入图片描述

这些参数可确保高效平滑而不会丢失太多细节。

在这里插入图片描述

此时可以使用的另一个工具是“简化工具”。 可以简化模型以达到固定数量的三角形(类型:“绝对”)或保留一定百分比的三角形。
在这里插入图片描述

在此项目中,我们不使用此工具,因为我们不打算导出并继续处理模型。 否则,简化对于减轻 3D 模型的重量以将其导入其他软件非常有用。 例如,我们的模型可以简化为 2000 万个三角形(“目标三角形数”),同时保持令人满意的质量。 我们应用颜色校正来标准化图像的外观。 为此,我们禁用扫描,因为颜色不自然并且会扰乱归一化。 扫描也不用于纹理化。 色彩校正在 3 分钟后完成。
在这里插入图片描述

最后,我们继续纹理化。 这一次,我们也保留默认的“图像缩小”系数,设置为 2。我们使用 16k 的纹理分辨率和 1 毫米的纹素大小,这在我们的案例研究中给出了极好的结果。
在这里插入图片描述

纹理在 1h30 中执行,我们通过裁剪显示它,就像我们为重建所做的那样。
在这里插入图片描述

现在,为了科学起见,让我们测试其中一个纹理参数对模型的一小部分的影响。 定义的重建框外的相机以及所有激光扫描都被禁用。 如果增加 Image downscale,处理时间会有所不同,但我们可以看到结果可能会更好。 如下所示。

在这里插入图片描述

在开始纹理化之前可以完成一个步骤:展开。 当纹理化开始时默认执行解包,但也可以显式执行以获得更好的结果并使纹理化更快。 在展开选项中,可以设置“最大纹理分辨率”,以及展开的“样式”。
在这里插入图片描述

展开样式是用于创建 UV 贴图的策略。 可以设置“最大纹理大小”,以便计算满足此约束所需的纹素大小。 相反,可以固定“Texel 大小”。 最佳纹素大小由程序计算。 使用此纹素大小的纹理会提供 100% 的“纹理质量”,而使用较小的纹素大小会导致纹理质量大于 100%。 因此,使用较大的纹素尺寸会导致纹理质量低于 100%。 纹理质量不是纹理质量的良好指标,而只是最佳纹素大小与使用的纹素大小之间的比率。
在这里插入图片描述

纹理质量可以在下面的纹理报告中找到。 我们可以看到我们的纹素等于每个纹素 0.001 毫米,这正是我们想要的。 最后,如果我们有许可证,我们可以将我们的模型导出为 OBJ 文件。 坐标系可以在项目设置中设置并检索以供导出。 我们可以选择是否导出纹理,我们可以选择它们的文件格式
在这里插入图片描述

在总共 8 小时内,我们获得了一个几何精确的纹理模型,并且很好地代表了物理环境。 这一次,我们没有系统地保留默认参数,而是调整它们以获得最佳结果。 虽然我们没有测试每个参数,但我们已经检查了最关键的参数,并且看到它们的影响相对容易理解。 我们还审查了一些允许获得干净模型的工具。

最后,这是我们使用 Reality Capture 进行的重建的一些效果图。

在这里插入图片描述

选项 B. Meshroom

哈哈,如果你需要大量的咖啡因,现在是时候了🤗。 我们现在将研究相同的过程并评估可以用 Meshroom 做什么。 在 Meshroom 中,我们只能导入 777 张图像(而不是 156 张激光扫描图)。 因此,仅由激光扫描覆盖的部分将不会被建模。 由于本节仅旨在展示更大规模的项目也可以在不需要像 Reality Capture 这样的付费软件的情况下进行,所以这不是问题。 但是,采集方法应适应为处理选择的软件,反之亦然。 换句话说,如果你没有可以处理激光扫描的软件,则必须小心地使用摄影测量法收集所有数据。 导入数据后,我们就可以开始处理了。 这一次,我们也保留默认管道。
在这里插入图片描述

13个多小时后,处理完毕,可以看结果了。 首先,我们可以直观地检查 structure-from-motion 节点的结果。

在这里插入图片描述

在报告中,我们看到 777 个摄像机位置中只有 554 个被估计(71% 的摄像机)。 这对应于场景的主要建筑。
在这里插入图片描述

接下来,我们可以检查网格。 我们在“Meshroom Cache”文件夹内的“Meshing”文件夹中找到 OBJ 文件,并使用 3D Viewer 应用程序打开它。 这比使用小型模型需要更多的时间。
在这里插入图片描述

该报告表明该网格包含 680 万个三角形的近 350 万个顶点。
在这里插入图片描述

最后,我们可以看一下在“Texturing”文件夹中找到的纹理网格。
在这里插入图片描述

可以将节点添加到管道中以进行后处理或测试不同的参数,然后将最佳参数保留在最终的工作流程中,这非常方便! 不过这一集,我要给大家介绍的是如何使用另外一款非常强大的后期处理软件:Blender。

🎵 注意:Blender 还可用于对使用 Reality Capture 或任何导出 3D 网格的软件制作的模型进行后处理。

安装程序后,我们导入纹理网格。

在这里插入图片描述

模型需要清理:重建边缘的三角形必须移除(就像我们使用 Reality Capture 过滤边缘和大三角形时一样)。
在这里插入图片描述

要修改几何图形,我们切换到“编辑模式”。 首先,我们使用“删除”工具,顾名思义,该工具用于删除选定的顶点、边或面。
在这里插入图片描述

我们用它来去除网格边界处的伪影和三角形并使其更干净。
在这里插入图片描述

“删除松散”工具删除断开连接的顶点、边或面。 该工具位于“网格”选项卡的“清理”部分。 我们可以应用的另一个工具是“Fill holes”。 根据周围的几何形状和纹理填充孔。 我们选择“边缘选择”模式来选择我们想要填充孔的模型部分。
在这里插入图片描述

选择完成后,我们按 ALT+F。 所选零件中的孔被填充。

在这里插入图片描述

其他有趣的工具是“Dissolve”和“Decimate”工具。 溶解(dissolve)允许将小平面合并为一个小平面,以便保留原始几何形状。 抽取(decimate)可以将三角形的数量减少到特定比例,同时保持形状尽可能接近原始形状。
在这里插入图片描述

我们可以打开“Texture Paint”选项卡来查看我们的纹理模型并修改纹理贴图。
在这里插入图片描述

Meshroom 和 Blender 让我们在经过 15 个多小时的处理后获得了带纹理的网格。 使用 Blender,我们解决了 Meshroom 使用默认参数生成的模型的一些问题,并获得了一个干净的模型,而无需对管道的每个步骤进行参数化。 然而,根据最终的应用,使用 Meshroom 进行后处理可能会更有效并提供更好的结果,尽管这需要事先更加熟悉该程序。

4、结束语

真诚的,如果你一直读到这里,恭喜你! 这是一本超级密集的3D动手指南,绝对可以作为你未来项目的参考! 如果我必须用 4 个要点来总结这两个软件上说明的 3D 摄影测量过程:

你需要调整采集策略,这在很大程度上取决于感兴趣对象的规模、范围和材料,以及应用程序所需的详细程度和精度。
对于大型项目,激光扫描是对通过摄影测量收集的信息的极好补充,并且可以避免精度的大漂移。 但是,并非所有软件都允许处理此信息。
相机、计算机和软件应适应输入和所需的输出。 你现在可以很好地参考处理时间和取决于所有这些参数的约束。
各种处理步骤和参数允许根据项目的最终目标进行足够的灵活性调整。 对于经常性项目,将它们分类以建立整个自动工作流程的预设是很有趣的。


原文链接:三维重建终极指南 — BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/26996.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

泰克AFG31000系列任意波函数发生器应用

模拟电路检定 这是一个模拟世界。所有物理量均使用模拟信号捕获和表示。因此,需要检定放大器、滤波器和转换器等模拟电路的性能。 InstaView? 技术避免在阻抗不匹配的 DUT 上增加的波形不确定性频率范围为 25 MHz 至 250 MHz由于信号保真度高,无需使…

# 车载软件架构 —— 闲聊几句AUTOSAR OS(三)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕的就是把别人的眼光当成自己生活的唯一标准。到最…

SpringBoot整合OSS文件上传

一、注册阿里云账号并开通OSS服务 1、登录阿里云账号 2、创建一个bucket 3、创建子用户 对自用户分配权限,打开操作OSS的全部权限(也可根据业务需求进行更改) 4、配置上传跨域规则 任何来源: *允许方法: POST任何请求头Headers: * 二、…

sklearn中的roc_auc_score(二分类或多分类)

官方API地址: sklearn.metrics.roc_auc_score — scikit-learn 1.2.2 documentationExamples using sklearn.metrics.roc_auc_score: Release Highlights for scikit-learn 0.22 Release Highlights for scikit-learn 0.22 Probability Calibration curves Probabi…

如何查询期刊的SCI分区

好消息是CSDN AI写作助手上线了 我不用自己一个字一个字去写SCI分区是啥(x) 然而—— 麻了还是自己写吧, 在人工智能这条路上,CSDN还是需要努力。 简单来说,我们做科研、发文章,肯定是需要比较的 谁的…

创客匠人CEO蒋洪波:用门店思维做直播

互联网时代,转型线上做知识付费成为教育培训行业的主流,直播教学成为新型的教学模式受到了广泛认可。很多老师在线下培训深耕多年,知识储备丰富,但想要转型线上又缺少方法,缺少去改变的欲望,怕转型做线上直…

docker安装golang

最近玩 docker 比较多,试试安装 golang 操作系统:Linux 第一步 先看一下镜像: docker images 看一下我们目前的镜像中,是不是有go 如果有,版本不合适等,可以考虑删除,重新安装,也…

Linux之进程间通信——管道

文章目录 前言一、进程间通信1.概念2.目的3.进程间通信分类 二、管道1.管道介绍2.管道分类1.匿名管道pipi创建管道文件,打开读写端fork子进程关闭父进程的读取端,关闭子进程的写入端读写特征管道特征 2.命名管道mkfifo创建管道文件删除管道文件通信 三、…

Blindly Assess Image Quality in the Wild Guided by ASelf-Adaptive Hyper Network

Abstract 真实失真图像的盲图像质量评估(BIQA)一直是一个具有挑战性的问题,因为在野外采集的图像包含各种各样的内容和各种类型的失真。目前绝大多数的BIQA方法都专注于如何预测合成图像的质量,但当应用于真实世界的失真图像时却失败了。为了应对这一挑…

一站式完成车牌识别任务:从模型优化到端侧部署

交通领域的应用智能化不断往纵深发展,其中最为成熟的车牌识别早已融入人们的日常生活之中,在高速公路电子收费系统、停车场等场景中随处可见。一些企业在具体业务中倾向采用开源方案降低研发成本,但现有公开的方案中少有完成端到端的车牌应用…

DMBOK知识梳理for CDGA/CDGP——第三章数据治理

关 注gzh“大数据食铁兽” 回复“知识点”获取《DMBOK知识梳理for CDGA/CDGP》常考知识点(第三章数据治理) 第三章 数据治理 第三章在是CDGA|CDGP考试的重点考核章节之一,知识点比较密集,本章重点为语境关系图及数据治理概念…

给电脑重装系统的时间需要多久才能装好

在进行电脑重装系统时,如果遇到系统安装时间过长的情况,可能会引起用户的困惑和不安。本文将介绍一些常见的原因和解决方法,以帮助您理解并应对系统安装时间过长的情况。 ​工具/原料: 系统版本:Windows 10 专业版 品…

Python数据攻略-Pandas的数据创建与基础特性

大家好,我是Mr数据杨!今天将进入Python的Pandas数据世界,就像三国演义中的英雄们,用聪明才智塑造自己的命运。 记得三国中,周瑜曾利用兵法巧妙策划火烧赤壁,击败曹军。这就像创建一个Pandas DataFrame&…

JavaSE笔记(七)重制版

多线程与反射 前面我们已经讲解了JavaSE的大部分核心内容,最后一章,我们还将继续学习JavaSE中提供的各种高级特性。这些高级特性对于我们之后的学习,会有着举足轻重的作用。 多线程 **注意:**本章节会涉及到 操作系统 相关知识…

宝塔面板搭建网站教程:Linux下使用宝塔一键搭建网站,内网穿透发布公网上线

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 转载自cpolar内网穿透的文章:使用宝塔面板快速搭建网站,并内网穿透实现公网远程访问 前言 宝塔面板作为简单好用的服务器运维管理面板&…

Spring为什么默认是单例的?

目录 一、五种作用域 二、单例bean与原型bean的区别 三、单例Bean的优势与劣势 一、五种作用域 1.singleton: singleton是Spring Bean的默认作用域,也就是单例模式。在整个应用程序中,只会创建一个实例,Bean的所有请求都会共享这个实例。 …

简单上手!快速将另一个报表的页面添加到 FastReport .NET!

FastReport 是功能齐全的报表控件,可以帮助开发者可以快速并高效地为.NET,VCL,COM,ActiveX应用程序添加报表支持,由于其独特的编程原则,现在已经成为了Delphi平台最优秀的报表控件,支持将编程开…

人车网租赁软件开发|人车网租赁系统|租赁系统源码功能

经过租赁小程序不只可以使物品得到充沛的运用,还能减少一些资源的浪费,租赁行业这两年因为互联网技术的完善,发展也在不断进步,租赁系统定制开发功能也在不断完善,那么企业想要开发租赁小程序的时分需求留意哪些方面呢…

长尾词挖掘,长尾词的优化方法有哪些

我们都知道,长尾词能给我们带来较高的流量和转化率,且优化难度低,成本低。今天就来分享长尾词的优化方法。 首先需要挖掘长尾词,挖掘长尾词的方法以下3种比较实用: 1、使用长尾词挖掘工具 可以通过第三方工…

小波和小波变换(应试)

零基础小白共计花费2小时38分04秒完成对小波的“平地起高楼”学习。 记录所有学习过程。 一、大致浏览PPT 这个阶段跳着看,太难的跳过 1.总结知识点 共四个部分 1.小波介绍 2.小波变换 小波变换的定义连续小波变换的定义离散小波变换小波重构 3.哈尔小波变换 …