用户指南

第9章 — SfM 后端

专家模式下的检查器,显示六个部分:Presets、Cameras & Capture、Training、Progress、Look 和 Export ——每个部分都带有一行说明它何时生效
专家模式下的检查器(Inspector)。它分为六个部分 — Presets、Cameras & Capture、Training、Progress、Look 和 Export —, 每个部分都带有一行副标题,说明该设置何时生效。SfM 方法的选择位于「Cameras & Capture」部分。
展开的 Camera Alignment 菜单,正好包含两个条目:Apple Photogrammetry 和 Native
发行版本中展开的 Camera Alignment 菜单: 正好两个条目 — Apple Photogrammetry 和 Native。这里没有 COLMAP, 「Native」也不再带有 Beta 后缀。

Camera Alignment 选择器位于 检查器的「Cameras & Capture」部分,是一个下拉菜单,而不是分段控件(后端名称对分段来说太长,会撑破狭窄的检查器栏)。它有多少个条目取决于构建版本: App Store 版本正好显示两个 — Apple Photogrammetry(默认)和 Native。COLMAP 在那里完全没有作为后端出现, 只在开发者版/DMG 构建中作为第三个 条目出现(参见 Q2)。原生条目的名称就叫「Native」;此前的附加说明「(experimental)」或「(Beta)」已被移除 — Native 不再是试验性路径,而是质量路径。它在近距离环绕拍摄和照片场景中表现出色,但目前在 空中/无人机测绘方面较弱(点云过于稀疏);Apple Photogrammetry 仍然是可靠的默认选项。如果拍摄类型选择的是无序照片集,应用会始终用 Native 进行对齐,无论选择器显示什么 — 选择器下方有一行提示明确说明这一点,选择器本身仍可操作,因为它的值不是不可用,只是被覆盖了。来自 Metashape、COLMAP 或其他摄影测量软件的外部 SfM 结果 还可以通过文件菜单导入(Q3 COLMAP 文本格式, Q6 工作空间导入)— 选择器不会切换,但导入的姿态 会替代 SfM 结果。这种导入与 COLMAP 后端问题无关,在任何构建版本中都可用。

SfM 代表 Structure from Motion(运动恢复结构)。软件根据一组 重叠的照片,为每张图像重建相机 在共同 3D 坐标系中的位置和朝向。 为此会生成一个粗糙的 3D 点云,用于初始化 Gaussian Splatting 的训练。SfM 结果是 实际训练的输入,对后续的图像质量 起着决定性作用。

RadianceKit 提供五种 SfM 途径:两个内置于应用中的后端 (Q1 Apple Photogrammetry、Q4/Q5 Native)、两个来自外部 工具的导入路径(Q3 COLMAP 文本格式、Q6 二进制工作空间导入), 以及 Q2 COLMAP 二进制程序,后者仅在 App Store 之外的开发者构建中 可用。哪一种适合取决于场景类型(围绕物体 环绕拍摄、室内、无人机飞行)以及 是否已有外部软件提供了重建结果。

Q1 — Apple Photogrammetry

位置

专家视图 → 检查器 → 「Cameras & Capture」部分 → Camera Alignment 选择器,条目「Apple Photogrammetry」。 在每个构建版本中都是默认设置。

技术细节

封装了苹果内置的 Photogrammetry 框架,该框架最初 是为 Object Capture 开发的。苹果内部通过专有流程 提取特征(各步骤未公开文档说明), 通过多视图匹配进行验证,并在 Apple Silicon 神经网络引擎 + GPU 上求解 Bundle Adjustment。该后端 完全符合 App Store 规范(没有外部二进制文件,Sandbox=true, 设备本地运行),但只提供相机姿态和一个粗糙的点云 — 没有诸如轨迹长度或重投影误差之类的诊断指标。 按照苹果的建议,可扩展到几百张图像。当 超过约 500 帧的线性无人机飞行或大型室外场景时, 观察到可重现的崩溃或静默丢弃某些相机的情况。

Q3 — COLMAP 文本格式(Metashape / ETH3D)

位置

菜单「File → Import COLMAP / Metashape Workspace…」 (Cmd+⇧+I),或将包含 sparse/0/cameras.txt 的文件夹拖放进来。

技术细节

读取标准化的 COLMAP 文本导出格式 — sparse/0/ 子文件夹下的三个文本文件 cameras.txtimages.txtpoints3D.txt — 并转换为内部的 SfM 结果模型。与 COLMAP 二进制导出使用相同的格式定义, 只是以 ASCII 而非二进制形式呈现。Agisoft Metashape、RealityCapture、 PolyCam 和 ETH3D 基准测试都以这种确切布局输出结果。 解析器与二进制解析器共享相机模型识别逻辑,能识别 COLMAP 全部十一种标准相机模型 — 从 SIMPLE_PINHOLE 和 PINHOLE,到 SIMPLE_RADIAL(COLMAP 自己的默认值)和 OPENCV, 再到鱼眼变体。对注释行和空行有很好的兼容性。在测试中可扩展 到约 1400 台相机(ETH3D Tunnel)而不出问题。

Q4 — 原生 SfM(增量式)

位置

专家视图 → 检查器 → 「Cameras & Capture」部分 → Camera Alignment 选择器,条目「Native」(不再带有此前的 附加说明「(experimental)」)。增量式是该后端的 默认模式;Native 没有 Mapper 选项。下方的「Mapper」一行 只属于 COLMAP:在开发者构建中,当选择 Native 时,该行 可见但呈灰显状态;在 App Store 版本中则完全没有该行。真正属于原生的几行 — 「FOV Override」、「High-Quality」和「Native SfM Recipe」 — 在其他后端下 不会再消失,而是保持灰显,并在下方一行说明 需要更改什么才能重新启用它们。你无法自行在 增量式和全局式方法之间切换:增量式是固定的默认设置, 应用只会自主切换到全局方法(参见 Q5)。

技术细节

完整 SfM 流程的自研 GPU 加速实现:FAST+BRIEF 特征,或 通过 CoreML 的 SuperPoint+LightGlue(通过「High-Quality」 开关开启;对于无序照片集则默认启用), 随后是 Hamming-KNN 匹配、RANSAC 基础矩阵求解、轨迹构建、 初始图像对选择、双视图自举(F→E 加 DLT)、带 PnP 配准和 多视图三角化的贪心增量式 Mapper,以及最终通过 Schur 消元的 Levenberg-Marquardt 配合 Huber 损失函数和 基于 Cholesky 求解的解析雅可比矩阵进行的 Bundle Adjustment。完全 符合 App Store 规范:没有外部二进制文件,Sandbox=true。内置 崩溃检测器:当注册的输入帧少于 60%、 每相机点数比率低于 13,或点云 几乎是平面时,会将结果判定为退化。此时不会立即 切换方法 — 应用首先会重复增量式运行 (采用第一个无异常的结果,否则采用尝试中最好的结果), 只有当最好的尝试仍然退化时,才会转向 全局 Mapper(Q5)。经验上 在环绕/转台场景中效果干净;在 更一般的运动(无人机飞行、几何复杂的室内场景)中, 成功率较低 — 但检测器能捕获这些 情况。可可靠扩展到约 200 台相机,更多的话 运行时间会明显延长。

Q5 — 原生 SfM(全局式)

位置

当增量式 Mapper(Q4)触发崩溃检测器时 会被自动调用(注册的输入帧少于 60%、 每相机点数比率低于 13,或点云几乎是 平面)— 而且只有在增量式运行被 重复过、最好的尝试仍然退化之后才会调用。 无法手动请求:检查器中没有对应的 选择器,也没有其他任何开关 — 应用自行 决定何时切换。

技术细节

原生流程的全局式变体。首先 进行特征提取和匹配,与 Q4 相同,然后对 所有经过验证的图像对进行相对姿态估计,随后进行旋转平均 (在世界坐标系中同步所有相机旋转) 和平移平均(基于 LSQR,采用无矩阵的 稀疏公式,以避免大量相机时出现整数溢出)。 理论上可扩展到约 5000 台相机,但实践中质量 在超过几百台相机后会明显下降。作为「后备层」 处理:当增量式 Mapper 即使重复后仍然退化时才会 使用,它自身不会再次被提交给 崩溃检测器 — 如果它的结果仍然稀疏, 则会触发流程的通用质量警告。

Q6 — Metashape / COLMAP 文本工作空间导入

位置

文件菜单 → 「Import COLMAP / Metashape Workspace…」 (Cmd+⇧+I)。将包含 sparse/0/cameras.{bin,txt}images/ 的文件夹拖放进来。

技术细节

自动识别通过拖放或 打开面板选择的文件夹是否符合三种 COLMAP 工作空间布局之一 (sparse/0/sparse/,或根目录),以及重建结果是 二进制(cameras.bin)还是文本(cameras.txt)格式。二进制路径 使用 COLMAP 二进制解析器,文本路径使用 ETH3D 加载器 — 两者 都生成相同的 SfM 结果模型,流程的其余部分 (导入图片、启动 MCMC 训练)与来源 无关。图片通过应用沙盒书签系统以 security-scoped 方式打开,因此该导入功能在 App Store 版本中同样可用。特别是为「已有 Metashape 导出、 无需重新计算重建结果」这种情况设计。文件菜单条目中 提到的识别逻辑会在应用日志中警告,如果所选文件夹 不是可识别的工作空间。

Q7 — 原生方案(Standard / Professional / E3 High-Accuracy)

位置

专家视图 → 检查器 → 「Cameras & Capture」部分 → 「Native SfM Recipe」一行。只有当 Camera Alignment 选择了「Native」,且拍摄类型设置为无序照片集 时,该行才可操作 — 否则会呈灰显状态,并在下方说明 需要更改什么(可用性规则详见第 2 章)。

技术细节

同一个原生后端的三个档位。它们 不会改变算法本身,而是改变它工作的精细程度:

Standard — 不带任何附加阶段的基础方案。

Professional — 额外设置两项内容:识别出的 AprilTag 标记作为刚体参与 Mapping 和 Bundle Adjustment,并在最终姿态基础上进行密集 重新三角化(更密集的起始点云)。如果拍摄内容不含 标记,检测器不会找到任何东西, 只有密集重新三角化仍然生效。

E3 High-Accuracy — 在 Professional 基础上, 额外启用 HQ 前端(3×3 SuperPoint 分块、带 4096 个关键点的 LightGlue、共视性图像对),以及 所有相机的联合焦距细化。这能得到最清晰的 相机姿态,同时匹配运行时间也最长。

哪种后端适用于哪种场景?

场景推荐后端
第一次尝试,无需多想Q1 Apple Photogrammetry (预设选项)
物体扫描,50–200 张照片Q1 Apple Photogrammetry
同一场景追求最高质量预设「Maximum Quality (Native)」— Q4 Native + Q7 方案 E3
使用打印的 AprilTag 标记拍摄Q4 Native + Q7 方案 Professional
大型户外场景 / 无人机 / >500 张图片Q6 Workspace 导入(在 Metashape 或 COLMAP 中计算,然后导入)
已有 Metashape/RealityCapture 导出结果Q6 导入(无需 SfM)
ETH3D / 学术用 COLMAP 文本数据集Q3 COLMAP 文本导入
Q4 崩溃时Q5 Native global(自动切换)

快速对比

后端App Store沙盒外部 二进制文件最佳用途最大 ~相机数
Q1 Apple PG环绕对象~300
Q2 COLMAP 二进制❌ (仅限开发者构建)colmap/glomap户外大场景~5 000
Q3 COLMAP 文本导入台架采集~1 500
Q4 原生增量式环绕对象~200
Q5 原生全局式Q4 备用方案~5 000
Q6 工作区导入Metashape 复用取决于 来源