10.6 第 10 章小结
来源:Richard Hartley 与 Andrew Zisserman 的 Multiple View Geometry in Computer Vision,第 10 章 3D Reconstruction of Cameras and Structure,10.6 小节 Closure。
这一节总结第 10 章:如何从两张未标定图像出发,得到相机和场景的三维重建。
核心问题是:
给定两张未标定图像,如何得到一个与真实场景只差相似变换的 metric reconstruction?
第 10 章主线
第 10 章可以按下面的路线理解:
点对应
-> 基础矩阵 F
-> 射影相机 P, P'
-> 射影三维点 X_i
-> 额外约束
-> 度量重建
最重要的概念不是某一个具体算法,而是不同信息量对应不同重建层次:
| 已知信息 | 可得到的关系 | 三维对象 | 重建层次 |
|---|---|---|---|
| 点对应 | 无 | projective | |
| 点对应 + 消失点等仿射信息 | affine | ||
| 点对应 + 相机内参或度量约束 | metric |
第一步:计算射影重建
从两张图像中的匹配点开始:
先计算基础矩阵:
然后由 构造一对射影相机:
最后对每一组匹配点三角化,得到射影空间中的三维点:
这一步得到:
它不是欧氏重建,而是 projective reconstruction。
为什么第一步只能到射影重建
仅靠点对应,能确定的是两视图之间的对极几何:
但未知相机内参、未知尺度、未知无穷远平面、未知角度结构。
因此真实欧氏重建与当前射影重建之间可能相差一个未知 单应矩阵:
也就是:
这正是 10.3 射影重建定理 的结论。
第二步:把射影重建校正到度量重建
第 10 章给出两种大路线。
路线 A:直接法
如果有真实三维坐标已知的控制点:
并且能把它们和射影重建中的点对应起来:
就可以直接估计 。
至少需要 5 个非退化控制点,因为 有 15 个自由度,而每个三维点对应提供 3 个独立约束。
求出 后:
这就是 10.5 使用真实控制点的直接重建。
路线 B:分层法
如果没有真实三维控制点,可以走分层路线:
projective -> affine -> metric
第一层,从射影到仿射:
找到无穷远平面:
然后用:
把它放回标准位置,得到仿射重建。
第二层,从仿射到度量:
找到绝对二次曲线或它的图像:
如果仿射相机写成:
则可用:
其中:
这就是 10.4 分层重建 的主线。
Algorithm 10.1 的整理
书中把两视图未标定图像到度量重建的过程总结为:
输入:两张未标定图像及其匹配点
目标:得到 metric reconstruction
步骤一,计算射影重建:
- 从匹配点计算基础矩阵 。
- 由 恢复一对相机矩阵 。
- 对每组匹配点三角化得到 。
步骤二,把射影重建校正到度量重建,二选一:
- 直接法:使用 5 个或更多真实三维控制点估计 。
- 分层法:先确定 得到仿射重建,再确定 或 得到度量重建。
最终输出:
它与真实相机和场景只差一个相似变换。
三个核心三维对象
第 10 章反复出现三个关键对象。
基础矩阵 F
是两视图对极几何的图像层表达:
它足以支持射影重建。
无穷远平面 π∞
是仿射结构的关键。
知道 等价于知道哪些点是无穷远点,也就恢复了平行性。
图像层对应物是无穷远单应:
可以理解为:
绝对二次曲线 Ω∞
是度量结构的关键。
知道它就能恢复角度和长度比例。
图像层对应物是 IAC:
并且:
可以理解为:
几种重建层次对比
| 重建 | 剩余歧义 | 已恢复 | 仍未恢复 |
|---|---|---|---|
| projective | 射影变换 | 点线面关联 | 平行、角度、长度 |
| affine | 仿射变换 | 平行、中点、仿射比例 | 角度、真实长度比例 |
| metric | 相似变换 | 角度、长度比例、形状 | 绝对位置、朝向、尺度 |
度量重建并不等于绝对真实世界坐标完全确定。它仍然差一个:
也就是整体旋转、平移和尺度。
准欧氏重建
书中最后提到一个实用观点:如果目标只是可视化,不追求严格度量精度,那么可以猜一个大致合理的相机内参,直接从射影重建得到一个看起来可接受的 quasi-Euclidean reconstruction。
这在工程中很常见:
- 只是为了生成可视化模型。
- 只需要大概形状。
- 没有高精度测量需求。
- 相机内参近似值已经足够。
但如果要做测量、定位、工程建模,就不能依赖这种近似,需要严谨的标定、控制点或几何约束。
本章总记忆点
- 两视图重建的起点是匹配点和基础矩阵 。
- 没有额外信息时,只能得到 projective reconstruction。
- 要得到 affine reconstruction,需要识别无穷远平面 或无穷远单应 。
- 要得到 metric reconstruction,需要识别绝对二次曲线 或 IAC 。
- 有 5 个或更多非退化 ground control points 时,可以直接估计 ,从射影重建跳到度量重建。
- 第 10 章是总体框架,后续章节会讨论更稳定的数值算法和真实噪声下的实现细节。
后续学习方向
第 10 章主要是概念总览。继续往后读时,应重点关注:
- 如何在有噪声的图像中稳健估计 ?
- 如何稳定地从 恢复相机矩阵?
- 三角化如何处理两条射线不精确相交的问题?
- 如何用 bundle adjustment 同时优化相机和三维点?
- 如何在多视图中做自标定和度量升级?