【ChatGPT】相机内参与外参在三维重建中的角色与历史脉络
深入探讨相机内参与外参在传统三维重建pipeline中的作用,从摄影测量到现代MVS的历史发展脉络。
相机内参与外参在三维重建中的角色与历史脉络
执行摘要
经典三维重建的 traditional pipeline 可以拆成两段:前半段用 SfM/SLAM 估计相机位姿并得到稀疏三维点,后半段在已知相机几何的条件下做 稠密匹配/代价体(cost volume) 得到深度图,再做融合与表面重建。相机内参与外参贯穿其中:内参把“像素坐标”与“相机坐标系下的射线”联系起来,外参把“世界坐标系/地图坐标系”与“相机坐标系”联系起来;两者一起决定投影与重投影误差,也就决定了三角化、BA、稠密几何一致性约束的形状。OpenCV 用 $\mathbf A$(也常写 $\mathbf K$)表示内参矩阵,$[\mathbf R|\mathbf t]$ 表示外参,并明确焦距以像素单位表达、主点通常靠近图像中心。 12 经典多视图几何把两视图约束写成基本矩阵 $\mathbf F$ 与(标定后)本质矩阵 $\mathbf E$,并给出 $\mathbf E=\mathbf K'^{\top}\mathbf F\mathbf K$、$\mathbf E=[\mathbf t]_{\times}\mathbf R$。 34 从术语史看,“内/外参”在摄影测量里长期对应 inner/outer orientation(内/外方位元素):Abdel‑Aziz & Karara 的 DLT 文章在摘要与引言中直接使用 “inner and outer orientation parameters”。 5 机器视觉语境里,Tsai 的相机标定论文清晰把 camera calibration 描述成同时确定 intrinsic 与 extrinsic parameters。 6 进入九十年代到千禧年前后,多视图几何与 BA 的“矩阵化表达”被系统整理并成为 SfM 的标准后端。 47
内参与外参的定义与数学表示
成像模型与相机矩阵
在针孔模型里,三维点 $\mathbf X=[X,Y,Z,1]^{\top}$ 经外参变到相机坐标,再经内参投影到像素平面:
OpenCV 文档把内参矩阵写成
并明确 $(u,v)$ 是像素坐标,$(c_x,c_y)$ 通常接近图像中心,$f_x,f_y$ 以“像素相关单位”表达。 18
相机内参 intrinsic parameters
常见矩阵形式与符号
更一般的内参矩阵常写成
其中 $s$ 是 skew(像素轴不正交时出现)。Hartley–Zisserman 的教程把“相机标定矩阵”归结到图像方向尺度 $\alpha_x,\alpha_y$ 与主点 $(x_0,y_0)$ 等参数。 9
物理含义与单位
- $f_x,f_y$:等效焦距(以像素计)。在摄影测量/机器视觉里,常把“毫米焦距 $f$”与“像素尺寸 $s_x,s_y$”合并为 $f_x=f/s_x, f_y=f/s_y$。 1
- $(c_x,c_y)$:主点,近似是光轴与像平面的交点在像素坐标中的位置。 1
- $s$:skew,现代传感器与图像管线里通常非常接近零(工程上常固定为零,或在标定/BA 中弱优化)。这一点在 Zhang 标定中也常见:推导里常用 $\gamma\approx 0$ 的设定来简化。 10
畸变参数是否属于内参
OpenCV 明确把畸变系数视为“内参的一部分”,并给出径向 $k_i$、切向 $p_1,p_2$ 的模型与返回/传入顺序。 18 Zhang 的论文专门讨论“径向畸变处理”,给出从理想点 $(u,v)$ 到观测点 $(\breve{u},\breve{v})$ 的径向畸变公式,并提醒过度复杂的畸变建模可能导致数值不稳定。 10
可测量项与不可测量项(与任务相关)
- 在“有标定物/已知尺度”的标定里:$\mathbf K$ 与畸变参数可通过多视角平面标定闭式初始化 + 非线性优化得到;每张图(或每次拍摄姿态)对应的外参也可解出。 108
- 在“仅靠图像的 SfM”里:某些内参(尤其焦距)可被自标定或在 BA 里估计,但它和场景尺度、基线、畸变等会出现强耦合;数值上常会需要共享内参、加先验或固定部分参数。COLMAP 文档也提醒:若给每张图独立内参,自动估计往往会失败。 11
典型数值范围(经验 + 工具示例)
- $f_x,f_y$ 的量级通常与图像宽高同数量级(几百到几千像素)。COLMAP 示例里,宽 $3072$ 的图像、针孔模型焦距约 $2559$ px,主点在 $(1536,1152)$(接近中心)。 11
- $(c_x,c_y)$ 常在 $(W/2,H/2)$ 附近;OpenCV 也把“主点初始化为图像中心”作为默认策略之一。 81
- 径向畸变系数大小取决于镜头,Zhang 的讨论指出桌面相机常见“显著径向畸变”,同时强调建模阶次过高会带来数值问题。 10
相机外参 extrinsic parameters
矩阵形式与符号
外参是从世界坐标到相机坐标的刚体变换:
OpenCV 的 solvePnP 文档把这写成齐次变换 ${}^{c}\mathbf T_w$,并说明输出 $rvec,tvec$ 就是把世界/物体坐标系点变到相机坐标系的旋转与平移。 2
物理含义与单位
- $\mathbf R$:相机朝向(无单位,可用矩阵/轴角/quaternion/Euler 表示)。
- $\mathbf t$:相机位置的代数表达(单位取决于世界坐标的单位:米、毫米或“任意尺度”)。
- 在仅靠单目 SfM 的重建里,$\mathbf t$ 的绝对尺度不可观测:本质矩阵只有“整体尺度自由度”,这是两视图几何里反复出现的结构性不确定性。 37
在传统三维重建 pipeline 中的作用
Traditional pipeline 可以概括为:特征—匹配—多视图几何(三角化)—BA(最小重投影误差)—稠密 MVS(深度图/代价体)—融合/表面。下面按步骤追踪内参与外参的“被使用/被估计”的位置。
投影与重投影误差示意
重投影误差把“观测到的像素点”与“由当前参数预测的像素点”对齐,是 BA、PnP、许多标定/自标定方法的共同目标函数核心。Triggs 等人的 BA 综述把 bundle adjustment 描述为对“图像重投影误差”的非线性最小二乘,并讨论了误差建模与 gauge(尺度等自由度)问题。 7
flowchart LR
X["3D点 X (世界坐标)"] -->|外参 [R|t]| Xc["X_c (相机坐标)"]
Xc -->|内参 K + 畸变| xhat["预测像素 x̂ = π(K, R, t, X)"]
xobs["观测像素 x"] --> e["误差 e = x - x̂"]
xhat --> e
把误差写成公式通常是
其中 $\pi(\cdot)$ 就是 OpenCV 文档给出的针孔投影与畸变扩展。 17
特征提取与描述子
SIFT 的目标是得到可跨视角稳定匹配的局部特征,用来支撑后续几何估计。Lowe 的论文强调这些特征在尺度、旋转、一定范围的视角与光照变化下保持鲁棒匹配。 12
这一阶段不“必须”知道 $\mathbf K,[\mathbf R|\mathbf t]$,但工程上常做两件事:
- 用已知内参/畸变先做去畸变或归一化,让特征点分布更接近针孔模型假设。OpenCV 把畸变显式建模并作为内参返回,正是为后续几何一致性服务。 1
- 若是视频 SLAM/VO,内参用于把像素点变成归一化相机射线,有利于稳定估计运动模型(这在 PnP/两视图约束里更直接)。
匹配、两视图几何与鲁棒估计
匹配得到的对应点通常包含大量外点。RANSAC 的经典文章提出在含大量 gross errors 的数据里鲁棒拟合模型,特别适用于“由易出错的局部特征检测器提供数据”的场景。 13
两视图几何里,Hartley–Zisserman 书的样章指出:对极几何独立于场景结构,只依赖相机内部参数与两相机的相对位姿。 4 若内参已知(标定相机),可用本质矩阵
并通过
把像素域的基本矩阵与标定后的本质矩阵联系起来。 34 这一步里,$\mathbf K$ 决定了“归一化坐标系”怎么定义,$[\mathbf R|\mathbf t]$ 则是要解出来的“相对外参”。
三角化
三角化把多视图对应点变成三维点,它需要每个视图的相机矩阵 $\mathbf P_i=\mathbf K_i[\mathbf R_i|\mathbf t_i]$。OpenCV 的投影链条把这个关系写得很直接:先用 $[\mathbf R|\mathbf t]$ 把世界点变到相机坐标,再经内参矩阵得到像素坐标。 12
openMVG 的 “ComputeStructureFromKnownPoses” 工具也把需求写成一句话:需要 internal + external camera calibration,然后按已知 intrinsics & poses 的几何关系做鲁棒三角化,并用像素重投影误差阈值筛选。 14
Bundle adjustment 与尺度自由度
BA 会联合优化三维点与相机参数。Triggs 等人的综述在历史章节里专门提到摄影测量语境下“calibration=interior orientation(内方位)”,外部 calibration 则对应 pose / exterior orientation,并强调 BA 的 gauge 自由度(欧氏/相似/射影变换下等价解)。 7
这也解释了为什么“外参的绝对值”在 SfM 中没有唯一意义:坐标系原点、整体旋转、整体尺度往往是人为选定的 gauge。
深度图、代价体与稠密重建
进入稠密 MVS 阶段,一般假设相机内外参已知或已被 SfM/BA 足够精确地估计。Seitz 等人的 MVS 评测论文就把目标定义为:从已知相机视点的多张图像重建完整三维模型。 15
在“代价体/体素正则化”类方法里,内外参用于把多视图信息对齐到参考相机的视锥体上。MVSNet 明确写出:它通过“可微单应性 warping”把相机几何编码进网络,在参考相机 frustum 上构建三维 cost volume,再回归深度图。 16
在传统工具链(如 COLMAP)里,稠密阶段也会输出每张参考图的 depth_maps/normal_maps,并通过 patch-match.cfg 控制每张参考图选多少 source images。 1117 这些配置背后依赖的就是已估计的相机内外参。
一页总览图:traditional pipeline 中内外参的“使用/估计点”
flowchart TD
I["输入图像序列"] --> U["(可选) 去畸变/归一化<br/>使用: 内参K+畸变"]
U --> F["特征提取/描述子 (如SIFT)<br/>主要在像素域"]
F --> M["特征匹配 + 几何验证(RANSAC)<br/>估计: F 或 E<br/>使用: K(若标定)"]
M --> P["相机相对位姿初始化<br/>估计: 外参 R,t (up-to-scale)"]
P --> T["三角化生成稀疏点云<br/>使用: P_i=K_i[R_i|t_i]"]
T --> BA["Bundle Adjustment<br/>优化: R,t, 3D点<br/>(可选) 优化K/畸变<br/>目标: 最小重投影误差"]
BA --> D["稠密MVS/深度图/代价体<br/>使用: K,R,t 做warp/几何一致性"]
D --> FU["深度融合/点云过滤<br/>使用: 相机几何"]
FU --> S["表面重建/网格/贴图"]
术语的起源与三维重建的历史发展
从摄影测量的“内外方位”到计算机视觉的“内外参”
“内参/外参”在摄影测量里更早以 inner/outer orientation(内/外方位元素)出现。Abdel‑Aziz & Karara 的 DLT 文章在摘要与引言中反复强调:传统解析摄影测量需要 outer orientation 的初值迭代,也可能需要 inner orientation;DLT 试图避免对这些初值的依赖。 5
这条线索也解释了“先有术语、后有统一矩阵形式”的历史感:摄影测量长期用共线方程与方位元素描述相机,而计算机视觉在九十年代把这些关系更系统地写成投影矩阵/分解形式。
Brown 系列与自标定 BA 的摄影测量根基
在摄影测量标定模型里,Brown 的工作常被视为现代畸变建模与自标定网络调整的重要起点。Clarke & Fryer 的校准史回顾写得很明确:Brown 的 1971 年论文详细介绍“plumb-line”方法,利用“无畸变时直线投影仍为直线”这一几何事实,把直线偏离直接联系到径向与去心(decentring)畸变,并给出相应数学模型;同一回顾也指出,随着 Brown 自六十年代中期发展并应用 bundle adjustment,镜头参数可以和三维点坐标在同一调整里共同估计,这被称为 self calibration。 18
进入后来的计算机视觉 BA 文献,Triggs 等人的综述仍会回溯并强调 Brown 在摄影测量自标定与 accuracy 提升中的带动作用。 7
两视图几何的“相对外参”与本质矩阵
两视图重建的关键是把“像点对应”转成“相机相对运动”。Longuet‑Higgins 的 Nature 短文给出从两幅透视投影恢复三维结构的算法框架,并把两视图关系写成旋转 $\mathbf R$ 与平移 $\mathbf T$ 的形式。 19 Hartley–Zisserman 的样章进一步把“标定相机”的两视图几何系统化为本质矩阵 $\mathbf E=[\mathbf t]_{\times}\mathbf R$,并强调它只有五个自由度且存在整体尺度不确定性。 3
当进入“多图 + 噪声 + 外点”的现实数据后,RANSAC 成为估计 $\mathbf F/\mathbf E$ 的事实标准套路之一。 134
SfM 展开:从特征匹配到 BA 的系统工程化
到二零零零年前后,SfM 的核心变为:用稳定特征做跨图匹配,按几何一致性逐步加入新视角,用 BA 反复重优化。SIFT 论文强调它可以产生大量、可高概率匹配的局部特征,这直接提升了“从多图恢复结构”这类任务的数据关联质量。 12
在规模化 SfM 系统里,Photo Tourism 论文指出其 SfM 流程估计的是“相对相机位置”,而整体运行时间往往被迭代 BA 主导。 20 这与 Triggs 综述把 BA 定位为“现代 SfM/摄影测量的共同后端”是一致的。 7
稠密 MVS:从“已知相机几何”到“深度图/代价体”
稠密阶段通常以“相机已标定/位姿已知”为前提。Seitz 等人在 MVS 评测中把这一点当作问题定义的一部分。 15
传统稠密方法依赖手工相似度与正则项(MVSNet 的引言里用 NCC、SGM 作为典型例子),并指出这类方法在理想朗伯条件下表现好,但在真实复杂材质下会遇到挑战。 16
时间线与工具生态对照
关键文献时间线表
| 文献 | 年份 | 内外参/矩阵化表达的关键点 | 代表性公式或位置 |
|---|---|---|---|
| Abdel‑Aziz & Karara, DLT | 一九七一 | 直接使用 inner and outer orientation parameters(摄影测量内外方位)作为相机未知量的组织方式 | 摘要与引言提到 inner/outer orientation,并讨论传统迭代对 outer orientation 初值的依赖 5 |
| Brown 系列(由 Clarke & Fryer 回顾串联) | 一九七一等 | plumb-line 方法用“直线应投影为直线”估径向/去心畸变;bundle adjustment 使“镜头参数 + 结构点 + 位姿”可联合估计(self calibration) | 校准史回顾中对 Brown 一九七一论文与 self calibration 的概述 18 |
| Longuet‑Higgins 两视图重建 | 一九八一 | 用 $\mathbf R,\mathbf T$ 连接两视图坐标系,建立两视图重建的代数框架 | Nature 文中直接给出 $\mathbf X'=\mathbf R(\mathbf X-\mathbf T)$ 形式与推导流程 19 |
| Fischler & Bolles, RANSAC | 一九八一 | 给出含大量外点时的鲁棒模型拟合范式,为后续 F/E/PnP 等几何估计提供通用外围框架 | 引言与结论强调对 gross errors 的容忍与适用“误差特征检测器输出”的场景 13 |
| Tsai 相机标定 | 一九八七 | 在机器视觉语境里把标定定义为确定 intrinsic 与 extrinsic 参数 | 论文首页对 camera calibration 的定义段落 6 |
| Faugeras–Luong–Maybank 自标定 | 一九九二 | 把矩阵分成内参矩阵 $A$ 与位姿矩阵 $G$,明确 extrinsic 与 intrinsic 的区分,并用 Kruppa 方程从匹配点恢复内参(自标定) | 引言定义:$G$ 依赖 6 个 extrinsic;$A$ 依赖 intrinsic,并讨论纯平移等退化 21 |
| Hartley–Zisserman(MVG 样章) | 二零零四 | 系统给出 $\mathbf P=\mathbf K[\mathbf R|\mathbf t]$ 分解,说明对极几何依赖“internal params + relative pose”;给出 $\mathbf E=\mathbf K'^{\top}\mathbf F\mathbf K$ 与 $\mathbf E=[\mathbf t]_{\times}\mathbf R$ | 样章第九章:对极几何与本质矩阵定义与关系式 43 |
| Triggs 等,BA 综述 | 二零零零(研讨会论文集) | 把 BA 写成“最小重投影误差”的非线性最小二乘;指出摄影测量里 calibration=interior orientation,pose=exterior orientation;讨论 gauge(尺度等)自由度 | 误差建模与历史脚注,以及 gauge 章节 7 |
| Lowe, SIFT | 二零零四 | 提供可跨视角稳定匹配的特征,为 SfM 的 data association 提供“前端燃料” | 摘要与引言强调鲁棒匹配与跨视角稳定性 12 |
| Photo Tourism | 二零零六 | 工程化 SfM:相机位置估计为“相对”,BA 成为运行时间瓶颈之一 | 论文段落提到 SfM 估计相对相机位置、BA 主导耗时 20 |
| Seitz 等,多视图立体评测 | 二零零六 | 将 MVS 定义为“从已知相机视点的多图”恢复完整三维模型,推动稠密算法可比性 | 引言对问题定义的表述 15 |
| MVSNet | 二零一八 | 把相机几何以“可微单应性 warping”编码进网络,在参考相机 frustum 上建代价体并前馈回归深度图 | 摘要与方法动机段落 16 |
| CasMVSNet / PatchmatchNet 等 | 二零二零后 | 围绕 cost volume 的显存与分辨率瓶颈做高分辨率可扩展化(级联、递归、PatchMatch 迭代) | 级联代价体动机;PatchmatchNet 强调低显存高速度 2223 |
开源工具如何表示与估计内外参
下表按”表示方式/关键字段/估计阶段”对齐,对应从稀疏到稠密的主链路。
| 工具 | 内参表示 | 外参表示 | 估计/使用位置(典型) | 关键字段/接口 |
|---|---|---|---|---|
| OpenCV | $\mathbf A=\begin{bmatrix}f_x&0&c_x\\0&f_y&c_y\\0&0&1\end{bmatrix}$ + distCoeffs(径向/切向等) 18 | $rvec,tvec$ 或齐次 ${}^c\mathbf T_w$ 2 | 标定(calibrateCamera)估内参+畸变+每视角外参;PnP 以已知内参估外参;都以“最小重投影误差”为核心目标 82 | calibrateCamera(cameraMatrix, distCoeffs, rvecs, tvecs);solvePnP(cameraMatrix, distCoeffs, rvec, tvec) 82 |
| COLMAP | cameras.txt: MODEL, WIDTH, HEIGHT, PARAMS[],参数里包含焦距与主点等,单位为像素;可共享 CAMERA_ID 1124 | images.txt: QW,QX,QY,QZ, TX,TY,TZ 表示 world→camera 的投影;并给出相机中心 $-\mathbf R^{\top}\mathbf T$ 24 | 稀疏重建阶段估内参(可选)与外参并做全局 BA;稠密阶段在 stereo/depth_maps 输出深度图,patch-match.cfg 控制 source views 1117 | 导出文件:cameras.txt / images.txt / points3D.txt;稠密配置:stereo/patch-match.cfg 112417 |
| openMVG | sfm_data.json 的 Intrinsics 容器 25 | sfm_data.json 的 Poses(extrinsic camera parameters) 25 | 可在已知内外参时做“三角化生成稀疏点”,并可选择性触发 BA;按像素重投影阈值筛点 1425 | openMVG_main_ComputeStructureFromKnownPoses:要求 internal+external calibration;支持 -b 做 BA 14 |
| Bundler | 每相机估计 $f,k_1,k_2$ 等(等效“内参+畸变”) 26 | 每相机估计 $\mathbf R,\mathbf t$(外参)并给出相机中心 $-\mathbf R^{\top}\mathbf t$ 26 | 经典 SfM 工具链:输出稀疏相机与点,再对接 PMVS/CMVS 等稠密模块;支持“每张图独立焦距/用 EXIF 焦距先验” 26 | bundle.out 规格:f,k1,k2,R,t;选项:--variable_focal_length, --use_focal_estimate 26 |
| Ceres Solver(BA 求解器范式) | 常把 $f,c_x,c_y,k_i,p_i$ 作为相机参数块的一部分(实现自定义) 27 | 常用 angle-axis/四元数 + 平移;与内参共同进入残差函数 27 | 以重投影误差为残差,做非线性最小二乘;不同工程会选择不同参数化与约束(例如共享内参、固定部分参数) 277 | 示例代码说明参数顺序与投影:focal/principal point/distortion + R,t 27 |
简短示例片段
OpenCV(标定 + PnP)里,核心输入输出变量与文档一致:$\mathbf A/\mathbf K$、畸变、$rvec/tvec$。 12
1
2
3
4
5
# calibrateCamera: 返回内参K与畸变dist,以及每张标定图的外参(rvecs,tvecs)
ret, K, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, imageSize, None, None)
# solvePnP: 已知K与dist,用3D-2D对应估计外参(rvec,tvec)
ok, rvec, tvec = cv2.solvePnP(objectPoints, imagePoints, K, dist)
COLMAP 的内外参最常见落点是导出的 cameras.txt 与 images.txt:前者是 intrinsics,后者是用四元数+平移表达的 world→camera pose。 1124
1
2
3
4
colmap feature_extractor --database_path database.db --image_path images
colmap exhaustive_matcher --database_path database.db
colmap mapper --database_path database.db --image_path images --output_path sparse
# 导出后查看 sparse/0/cameras.txt 与 sparse/0/images.txt
openMVG 在“已知内外参”时可直接走“按几何关系三角化”的应用: 14
1
openMVG_main_ComputeStructureFromKnownPoses -i sfm_data.json -m matches_dir -o out_dir -b
从标定与几何优化到 Feedforward MVS
传统估计路径:从初始化到优化收敛
一条在工程上很稳的路径通常是:
- 标定板/平面标定(Zhang)初始化内参 + 畸变:Zhang 的流程里明确写出“估计五个内参 + 全部外参”,再估计径向畸变并做非线性 refinement。 10
- 两视图初始化外参:若内参已知,可从 $\mathbf F$ 得到 $\mathbf E=\mathbf K'^{\top}\mathbf F\mathbf K$,再由 $\mathbf E=[\mathbf t]_{\times}\mathbf R$ 恢复相对位姿(存在尺度不确定)。 34
- PnP(已有 3D–2D 对应)补齐新视角外参:PnP 的定义就是“给定内参 + 3D–2D 对应,求相机位姿”。EPnP 的引言把这一点说得很直接;OpenCV 也在 solvePnP 文档里把内参矩阵与外参齐次矩阵并排写进投影公式。 282
- BA 统一收敛:以重投影误差为目标,联合优化(可含)内参/畸变与外参/结构点,并处理 gauge 约束与鲁棒误差。 7
常见问题与注意事项(与内外参强相关)
- 尺度模糊与 gauge:本质矩阵与 BA 都天然存在尺度等价类,需要额外信息(双目已知基线、IMU、深度传感器、已知长度约束/GCP)才能定米制尺度。 37
- 径向畸变与主点强耦合:校准史回顾指出主点偏移与去心畸变会高度相关;Zhang 也强调畸变建模过复杂会带来数值不稳定。 1810
- 退化运动/几何退化:自标定文献里明确提到纯平移会导致退化并使估计对噪声极敏感。 21
- 非线性优化的初始化与收敛:OpenCV 的标定接口提供
CALIB_USE_INTRINSIC_GUESS等选项,反映了“初值质量”对全局优化的重要性;Zhang 的方法同样采用闭式初始化 + LM refinement 的结构。 810 - 稠密阶段对位姿精度更敏感:COLMAP 的稠密重建允许通过
patch-match.cfg调 source views 数量、通过 max_image_size 控内存与速度,并提醒这些设置会影响质量;背后其实就是“几何 warp 的误差会直接变成代价体的系统偏差”。 1711
Feedforward MVS 的落点
把“稠密几何”从传统优化推向前馈网络,关键变化在于:几何仍然由 $\mathbf K,[\mathbf R|\mathbf t]$ 提供,但匹配代价与正则化由网络学习并一次/少次前向推理输出深度。
- MVSNet 把相机几何写进可微单应性 warping,在参考相机视锥上构建 cost volume,3D 卷积正则化并回归深度图,强调端到端训练与推理。 16
- 随后工作围绕“代价体显存随分辨率立方增长”的瓶颈做结构改造:CasMVSNet 用级联/金字塔逐级缩小深度范围恢复高分辨率细节;PatchmatchNet 走“可学习 PatchMatch”的迭代传播与评估路线,用更低内存处理更高分辨率。 2223
这条路径把传统的”cost volume → depth map”进一步变成“可微几何 warp + learned regularizer → depth map”,因此 Feedforward MVS 并没有绕开内外参,反而更依赖它们提供稳定、可微、可复现的几何对齐坐标系。
结论要点
- 内参 $\mathbf K/\mathbf A$ 决定“像素—射线”的标尺与主点位置,畸变模型也通常被并入内参;外参 $[\mathbf R|\mathbf t]$ 决定“世界—相机”的刚体关系,两者共同决定投影与重投影误差。 12
- 摄影测量语境里,内外参长期对应 inner/outer orientation;DLT 在一九七一就以“inner and outer orientation parameters”组织相机未知量。 5
- 计算机视觉语境里,“intrinsic/extrinsic 参数 + 矩阵表达”在八十年代标定论文(如 Tsai)已清晰出现;九十年代到千禧年前后被 MVG 与 BA 文献系统化为 $\mathbf P=\mathbf K[\mathbf R|\mathbf t]$、以重投影误差为核心的统一优化框架。 674
- 两视图几何把相对外参浓缩进本质矩阵 $\mathbf E=[\mathbf t]_{\times}\mathbf R$,并由 $\mathbf E=\mathbf K'^{\top}\mathbf F\mathbf K$ 将“未标定”与“已标定”联系起来;尺度不确定是结构性自由度。 34
- 稀疏阶段(SfM/SLAM)里,内参影响归一化、对极约束与三角化;BA 在重投影误差下联合优化外参、结构点并处理 gauge。 714
- 稠密阶段(MVS/代价体)对位姿与内参更敏感:几何对齐(warp)误差会直接污染代价体;现代 Feedforward MVS(如 MVSNet 及其后续)仍以已知/估计的内外参作为”可微几何骨架”,再用网络学习匹配代价与正则化以快速输出深度。 161723
参考文献
OpenCV, “Camera Calibration and 3D Reconstruction,” OpenCV Documentation. 链接 ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5 ↩︎6 ↩︎7 ↩︎8 ↩︎9 ↩︎10 ↩︎11 ↩︎12
OpenCV, “solvePnP,” OpenCV Documentation. 链接 ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5 ↩︎6 ↩︎7 ↩︎8 ↩︎9
R. Hartley and A. Zisserman, Multiple View Geometry in Computer Vision, 2nd ed., Cambridge University Press, 2004, Ch. 9: The Essential Matrix. ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5 ↩︎6 ↩︎7 ↩︎8
R. Hartley and A. Zisserman, Multiple View Geometry in Computer Vision, 2nd ed., Cambridge University Press, 2004, Ch. 9: Epipolar Geometry and the Fundamental Matrix. ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5 ↩︎6 ↩︎7 ↩︎8 ↩︎9
Y. I. Abdel-Aziz and H. M. Karara, “Direct Linear Transformation from Comparator Coordinates into Object Space Coordinates in Close-Range Photogrammetry,” Photogrammetric Engineering and Remote Sensing, 1971. ↩︎ ↩︎2 ↩︎3 ↩︎4
R. Y. Tsai, “A Versatile Camera Calibration Technique for High-Accuracy 3D Machine Vision Metrology Using Off-the-Shelf TV Cameras and Lenses,” IEEE Journal of Robotics and Automation, vol. 3, no. 4, pp. 323–344, 1987. ↩︎ ↩︎2 ↩︎3
B. Triggs, P. McLauchlan, R. Hartley, and A. Fitzgibbon, “Bundle Adjustment — A Modern Synthesis,” in Vision Algorithms: Theory and Practice, LNCS 1883, Springer, 2000. ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5 ↩︎6 ↩︎7 ↩︎8 ↩︎9 ↩︎10 ↩︎11 ↩︎12 ↩︎13
OpenCV, “calibrateCamera,” OpenCV Documentation. 链接 ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5 ↩︎6 ↩︎7 ↩︎8
R. Hartley and A. Zisserman, Multiple View Geometry in Computer Vision, 2nd ed., Cambridge University Press, 2004, Ch. 6: Camera Models. ↩︎
Z. Zhang, “A Flexible New Technique for Camera Calibration,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 22, no. 11, pp. 1330–1334, 2000. ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5 ↩︎6 ↩︎7
D. G. Lowe, “Distinctive Image Features from Scale-Invariant Keypoints,” International Journal of Computer Vision, vol. 60, no. 2, pp. 91–110, 2004. ↩︎ ↩︎2 ↩︎3
M. A. Fischler and R. C. Bolles, “Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography,” Communications of the ACM, vol. 24, no. 6, pp. 381–395, 1981. ↩︎ ↩︎2 ↩︎3
openMVG, “ComputeStructureFromKnownPoses,” openMVG Documentation. 链接 ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5
S. M. Seitz, B. Curless, J. Diebel, D. Scharstein, and R. Szeliski, “A Comparison and Evaluation of Multi-View Stereo Reconstruction Algorithms,” in Proc. CVPR, 2006. ↩︎ ↩︎2 ↩︎3
Y. Yao, Z. Luo, S. Li, T. Fang, and L. Quan, “MVSNet: Depth Inference for Unstructured Multi-view Stereo,” in Proc. ECCV, 2018. ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5
COLMAP, “Dense Reconstruction (Stereo + Fusion),” COLMAP Documentation. 链接 ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5
T. A. Clarke and J. G. Fryer, “The Development of Camera Calibration Methods and Models,” Photogrammetric Record, vol. 16, no. 91, pp. 51–66, 1998. ↩︎ ↩︎2 ↩︎3
H. C. Longuet-Higgins, “A Computer Algorithm for Reconstructing a Scene from Two Projections,” Nature, vol. 293, pp. 133–135, 1981. ↩︎ ↩︎2
N. Snavely, S. M. Seitz, and R. Szeliski, “Photo Tourism: Exploring Photo Collections in 3D,” ACM Transactions on Graphics (SIGGRAPH), vol. 25, no. 3, pp. 835–846, 2006. ↩︎ ↩︎2
O. D. Faugeras, Q.-T. Luong, and S. J. Maybank, “Camera Self-Calibration: Theory and Experiments,” in Proc. ECCV, 1992. ↩︎ ↩︎2
X. Gu, Z. Fan, S. Zhu, Z. Dai, F. Tan, and P. Tan, “Cascade Cost Volume for High-Resolution Multi-View Stereo and Stereo Matching,” in Proc. CVPR, 2020. ↩︎ ↩︎2
F. Wang, S. Galliani, C. Vogel, P. Specber, and M. Pollefeys, “PatchmatchNet: Learned Multi-View Patchmatch Stereo,” in Proc. CVPR, 2021. ↩︎ ↩︎2 ↩︎3
COLMAP, “Output Format,” COLMAP Documentation. 链接 ↩︎ ↩︎2 ↩︎3 ↩︎4
openMVG, “SfM Output Format,” openMVG Documentation. 链接 ↩︎ ↩︎2 ↩︎3
N. Snavely, “Bundler: Structure from Motion (SfM) for Unordered Image Collections,” Bundler User’s Manual. 链接 ↩︎ ↩︎2 ↩︎3 ↩︎4
Ceres Solver, “Bundle Adjustment Example.” 链接 ↩︎ ↩︎2 ↩︎3 ↩︎4
V. Lepetit, F. Moreno-Noguer, and P. Fua, “EPnP: An Accurate O(n) Solution to the PnP Problem,” International Journal of Computer Vision, vol. 81, no. 2, pp. 155–166, 2009. ↩︎