跳到主要内容
AI 3D LEARNING SERIES · 03

照片记录方向,
却不会自动给出距离。

手机视频为什么有机会变成 3D?关键不是拍了多少张,而是有没有从不同位置看见同一批细节。

本课的三个问题
单张照片为什么缺深度?移动相机怎样增加线索?怎样拍摄才能让相邻画面连接起来?
PINHOLE CAMERA / 投影示意O → x
成像平面 O / 相机 x X₁ 近 X₂ 远 焦距 f
同一像点 x 可以对应同一视线上的不同深度概念示意,非比例图
01 / IMAGE FORMATION

一张照片,少了哪个维度?

二维照片告诉我们像素在画面中的左右和上下位置,却不会自动给出物体离相机多远。

PINHOLE CAMERA MODEL / 针孔相机

从三维点到二维像点

在简化模型中,光线通过相机光心 O,投影到成像平面。焦距 f 决定投影的尺度,物体距离 Z 也会影响它在画面里的大小。

h = f × H / Z

h 为像素高度;H 为物体真实高度;Z 为物体沿相机光轴的深度;f 为以像素为单位的焦距。这里假设物体方向与像平面平行。

WHY DEPTH IS AMBIGUOUS

一个像点,对应一条视线

远一点的物体和近一点的物体,可能恰好投影到同一个像素。仅凭一张普通照片,一个像点只能约束观察方向,不能唯一确定三维位置。

重要区别:单张图像仍能借助阴影、遮挡、透视和模型先验猜测深度,但这不同于依靠多视角几何测得的深度。

02 / INTERACTIVE EXPERIMENT A

变焦,与走近物体,有什么不同?

实验假设:两个箱子同高 0.5 米,分别距离相机 3 米和 7 米。观察它们投影高度与近远比例的变化。

焦距 × 相机位置

可操作 · 实时计算

调整焦距或把相机向前移动。两个参数相互独立,因此可以直接比较它们对画面的影响。

400 px
0.00 m
CAMERA VIEW / 投影高度对比
近
近处箱子
远
远处箱子
近:66.7 px远:28.6 px近/远:2.33
当前距离:近 3.00m / 远 7.00m
先试试“仅把焦距加倍”,再选“仅向前走 1.5m”,看近远比例是否相同。
你应该观察到:焦距从 400→800 px 时,近处和远处投影高度一起变成两倍,近/远比例不变;相机前移 1.5m 时,近处物体放大得更明显,近/远比例发生变化。这里采用简化针孔相机模型。
03 / INTERACTIVE EXPERIMENT B

换一个拍摄位置,为什么会出现深度线索?

左右移动相机,比较两个相机视角中同一个点的位置。相机位置之间的距离称为基线(Baseline)。

平移产生视差

PARALLAX / 视差
0.60 m
视角 A / 相机位置 1
左侧相机观测
视角 B / 相机位置 2
右侧相机观测
橘色:近点(深度 3m)蓝色:远点(深度 7m)
近点视差:80.0 px远点视差:34.3 px
近点的视差通常比远点大。两张照片都能看到同一个点,才能把观测联系起来。
演示采用两个方向一致、水平平移的理想化相机,焦距 400 px,且被摄场景保持静止。真实视频重建需要估计相机姿态并匹配特征。
CONCEPT 01

特征匹配

从多张图片中认出同一个桌角、花纹或叶尖,让不同视角之间形成对应关系。

回答“是不是同一个点?”
CONCEPT 02

三角测量

当相机位置和成像参数已知时,利用不同视角中的对应像点,估计三维位置。

回答“它在空间哪里?”
CONCEPT 03

SfM

运动恢复结构(Structure from Motion)利用多张重叠图像联合估计相机姿态与稀疏三维结构。

回答“相机在哪、场景在哪?”
原地旋转的局限:只有相机朝向变化,光心基本不动时,通常缺少足够的平移视差来进行标准的双目三角测量。旋转可以增加可见方向,但不能用来代替多位置采集。
04 / PRACTICAL CHECKLIST

怎样安排一条能用于重建的拍摄路线?

拍得完整,不只是把每个方向都扫一遍。还要让相邻画面有重叠,并从不同位置观察同一处细节。

CAPTURE ROUTE / 顶视示意
静止花盆 沿路线移动,并让连续画面保留共同细节
拍室内空间时,可沿可通行边缘移动并面向室内;路线不要求完全闭合,但应避免视角断裂。
采集要点自查0 / 6 项
勾选采集要点,形成自己的拍摄检查清单。
采集难点:大面积纯色墙面、反光镜面、透明物体、快速运动和严重模糊,都可能让特征匹配或重建变得困难。具体要求随重建方法而不同。
05 / SINGLE-IMAGE DEPTH

只有一张照片,AI 还能猜深度吗?

可以估计,但要区分“模型推测出的深度”和“已经通过几何观测或标定验证的实际尺寸”。

输入:普通单张图像(示意)

SCENE / 场景

照片提供颜色、轮廓、纹理、透视、遮挡等线索,却没有显式记录每个像素离相机的实际距离。

输出:预测深度图(概念演示)

PREDICTED DEPTH / 示意
远(示意)近(示意)

模型可估计画面不同区域的相对深度;某些模型在特定条件下也能输出公制深度,但需要核验单位、标定和误差。

不要把色彩当作尺子:深度图的颜色对应关系取决于色标。单目深度并不会自动补全照片中看不见的真实背面,做尺寸判断前需要确认尺度与误差。
06 / LEARNED MULTI-VIEW RECONSTRUCTION

VGGT:模型怎样联合理解多张照片?

从“逐步匹配和优化”到“网络一次预测多种几何信息”。理解 VGGT,重点不是记住模型名字,而是看清输入、内部处理和输出之间的关系。

THE CORE IDEA / 核心思路

把多张照片放在一起理解,而不是孤立地处理每一张。

VGGT(Visual Geometry Grounded Transformer)是牛津大学 Visual Geometry Group 与 Meta AI 团队提出的前馈式视觉几何模型。它可以接收同一场景的一张、少量或数百张不同视角图像,并联合预测相机参数、深度图、三维点图,以及用于跨图像点跟踪的特征。

这里的“联合”很重要:相机位置、像素深度和三维点不是互不相关的答案。它们描述的是同一个场景的不同侧面,可以相互约束、相互校验。

先记住:VGGT 不是把照片简单拼接起来,也不是直接把照片变成一份已经精修好的 3D 模型。它先预测场景几何,再由后续流程决定如何整理和展示。
VGGT / HOUSE RECONSTRUCTION
相机标记重建的三维房屋
房屋三维结果与周围的相机标记(示意重绘)。相机标记表示模型估计出的观察位置和方向。原图见观猹课程资料。

一张流程图看懂 VGGT 的工作过程

STEP 01 / INPUT多视角图像

输入同一个静止场景的多张 RGB 照片。每张照片来自不同位置或朝向。

STEP 02 / TOKENS图像切成特征块

图像经视觉编码器转换为 tokens,并加入相机 token,作为网络处理的信息单元。

STEP 03 / ATTENTION跨图像交换信息

帧内注意力与全局注意力交替工作,让模型同时理解单张图内部和不同照片之间的关系。

STEP 04 / OUTPUT多个预测分支

不同预测头输出相机参数、深度图、点图和点跟踪所需的特征。

帧内注意力 / Frame-wise Attention先理解一张照片内部的结构:哪些像素属于同一物体、边缘在哪里、局部特征如何组织。
全局注意力 / Global Attention让不同照片交换信息:同一个窗户、门框或墙角,如何在多个视角中对应起来。
可以把它想成:先分别读懂每张照片,再让所有照片互相“对答案”,最后共同推断相机和场景的三维关系。这里是帮助理解的比喻,实际网络通过 Transformer 注意力层完成特征交互。
WHAT DOES IT PREDICT?

模型输出的四类信息

它们不是四个互不相干的文件,而是从不同角度描述相机与场景几何。

01 / CAMERA相机参数

估计相机内参与外参。内参描述镜头投影关系,外参描述相机的位置和朝向。

02 / DEPTH MAP深度图

为图像中的像素预测深度。它回答每个可见位置大致离当前相机多远。

03 / POINT MAP三维点图

把图像像素对应到三维坐标。多个像素的三维点可以组成稠密点云。

04 / TRACK FEATURES点跟踪特征

帮助追踪同一个图像点在其他视角中的位置,观察对应关系与可见性变化。

两个容易混淆的词:相机内参包括焦距、主点等投影参数;外参描述相机相对参考坐标系的旋转与平移。深度图是“从这台相机看有多远”,点图则进一步给出“这个像素对应三维空间里的哪个点”。
VGGT VS COLMAP

两条路线,思路有什么不同?

COLMAP:几何求解与迭代优化

传统 SfM 流程的代表。它主要根据图像中实际检测和匹配到的特征,逐步估计相机与三维结构。

① 检测照片中的特征点 ② 在不同照片之间匹配特征 ③ 三角测量,估计稀疏三维点 ④ Bundle Adjustment 反复优化相机和三维点
优势:几何过程明确,可通过优化提高一致性。
挑战:依赖可匹配特征、图像重叠和较好的采集条件。

VGGT:训练好的网络前馈预测

将多张图像输入训练好的模型,通过一次前向推理联合预测多种几何属性。

① 输入同一场景的多视角照片 ② Transformer 交互不同图像的特征 ③ 多个预测头输出相机、深度和点图 ④ 按需再做几何优化、融合或格式转换
优势:预测速度快,多个几何任务共享特征。
挑战:预测仍可能有误,不能替代采集质量和结果验证。
不是“新模型彻底取代旧方法”。VGGT 可以直接给出有用的预测,也可以再接 Bundle Adjustment 等几何优化来提高一致性。官方实现还支持将预测结果保存为 COLMAP 格式,供后续 3DGS 等流程使用。
WHAT IT DOES NOT GUARANTEE

预测出了三维形状,不等于测量准确

纹理不足纯色墙面、白色桌面缺少稳定特征,模型可能难以判断精确对应关系。
反光与透明镜面、玻璃和水面会让外观随视角变化,破坏常见的静态表面假设。
动态物体行人、宠物、移动的椅子会让不同照片中的场景不再完全一致。
遮挡与漏拍没有被任何照片观察到的区域,不能当作已经真实重建。
尺度与精度视觉上连贯不代表尺寸准确;要量实际长度,需核对尺度、标定和误差。
输出形式点图或点云不等于干净的网格、完整贴图模型或可直接部署的网页场景。
PRACTICAL WORKFLOW

把 VGGT 用到自己的场景,怎么检查?

以寝室一角为例:先按上一节的采集路线拍摄,让相邻照片有重叠、相机真正移动,并尽量保持桌椅和其他物体静止。之后再把照片交给重建模型。

01先检查输入:是否同一场景、是否清晰、是否有足够视角变化。
02查看相机标记:相机位置是否沿合理路线分布,有没有异常跳点。
03旋转点云:检查墙角、桌腿、窗框是否拉长、错位或缺失。
04对照实物:用已知长度或测量值核对尺度,不凭视觉观感认定准确。
05发现缺块:回到现场补拍缺少观察的区域,并与已有视角保留重叠。
06准备展示:根据用途继续做点云清理、网格化、贴图或转成 Viewer 支持的格式。
本节最重要的判断:模型可以帮助你从有限照片中推断几何,但不能让没拍到的真实细节凭空变成可靠测量。输入质量、几何检查和实际核验仍然不可省略。
07 / CONCEPT DICTIONARY

本课术语速查

针孔相机模型Pinhole Camera Model

用光心、投影平面和焦距描述三维点怎样映射为二维像点。

焦距Focal Length

决定投影尺度的相机参数;计算机视觉中常用像素作为单位。

视差Parallax / Disparity

同一三维点在不同拍摄位置的图像中出现的位置差异。

三角测量Triangulation

根据不同视角的对应像点及相机几何关系估计三维位置。

运动恢复结构Structure from Motion · SfM

用重叠图像联合恢复相机位姿和场景的稀疏三维结构。

单目深度估计Monocular Depth Estimation

根据单张图像中的视觉线索和模型先验推断画面各区域的深度。

08 / KNOWLEDGE CHECK

知识检测

四道题,检验能否区分投影、视差、相机运动以及 AI 深度估计的边界。

3D 视觉基础 · 自测

已完成 0 / 4

01. 为什么知道叶尖在照片上的像素位置,还不能唯一确定其三维位置?

针孔相机中的同一像点对应一条从光心出发的视线;需要额外几何观测或其他先验才能估计深度。

02. 从不同位置拍摄时,为什么需要相邻画面具有重叠内容?

共同细节支持特征匹配,使多个视角之间能够建立对应关系。

03. 站在房间中央原地转圈后,想改善多视角重建,哪种补拍更有帮助?

真正的位置变化提供平移视差,连续画面的重叠帮助软件把视角接起来。

04. 要用单张照片预测的深度图估计桌子尺寸,应先做什么?

有些单目模型只输出相对深度;要量实际尺寸,必须核对单位、尺度与误差。
本页整理自观猹《3D 视觉导论》,知识学习版;VGGT 表述以官方论文与项目页为准。