10.1 三维重建方法概览
来源:Richard Hartley 与 Andrew Zisserman 的 Multiple View Geometry in Computer Vision,第 10 章 3D Rec"+onstruction of Cameras and Structure,10.1 小节 Outline of reconstruction method。
这一节给出从两张图像进行三维重建的概念流程:先由匹配点估计基础矩阵,再由基础矩阵恢复相机矩阵,最后对每一组匹配点三角化得到三维点。
书中特别提醒:本节只是概念性流程,不应直接照着实现真实图像的重建系统。真实图像有噪声,需要第 11 章和第 12 章中的更稳定方法。
重建任务是什么
给定两张图像中的匹配点:
假设这些匹配点来自未知的三维点:
同时,两台相机的参数也未知:
三维重建的任务是求出:
- 两个相机矩阵 和
- 一组三维点
使得每个三维点都能投影回对应的两个图像点:
为什么需要足够多的匹配点
如果匹配点太少,重建是不可能的。
原因是:
- 基础矩阵 需要足够多的对应点才能确定。
- 没有 ,就无法确定两视图之间的对极几何。
- 没有对极几何,就无法稳定恢复相机关系和三维结构。
书中的关键结论是:如果有足够多的点对应,使得基础矩阵 能被唯一计算,那么场景可以被重建到一个 projective ambiguity。
也就是说,可以得到一个射影意义下正确的三维重建。
“up to a projective ambiguity” 可以理解为:重建出来的点和相机与真实世界之间还差一个未知的三维射影变换。
方法总览
从两视图重建相机和结构,概念上分三步:
匹配点 -> 基础矩阵 F -> 相机矩阵 P, P' -> 三维点 X_i
更具体地说:
- 从点对应计算基础矩阵 。
- 从基础矩阵 计算一对相机矩阵 和 。
- 对每组匹配点 ,计算能投影到这两个点的三维点 。
如果相机已标定,则通常不直接计算 ,而是计算 essential matrix 。
第一步:计算基础矩阵 F
由第 9 章可知,对应点满足:
当 和 已知时,这个式子对 的元素是线性的。
基础矩阵是:
每一对匹配点提供一个线性方程。
理论上:
- 7 对点可以用非线性方法求解。
- 8 对点可以线性求解 ,差一个整体尺度。
- 多于 8 对点时,通常用最小二乘求解。
实际工程中通常会用 RANSAC 先剔除错误匹配,再用归一化 8 点算法估计 。
第二步:由 F 计算相机矩阵
一旦有了基础矩阵 ,就可以构造与它一致的一对相机矩阵:
这里的“相机矩阵”不是唯一的,因为未标定两视图重建只能恢复到射影歧义。
也就是说,存在某个三维射影变换 ,使得:
图像投影不变,但三维坐标系已经被射影变换改变了。
这就是后面 10.2 会详细讨论的 reconstruction ambiguity。
第三步:三角化
给定相机矩阵 和一对匹配点:
可以分别从两张图像反投影出两条空间射线。
如果对极约束满足:
那么这两条射线位于同一个对极平面内,并且理论上相交于一个三维点:
这个过程叫做 triangulation,中文常译为“三角化”。
概念流程:
图像点 x -> 第一台相机反投影射线
图像点 x' -> 第二台相机反投影射线
两条射线交点 -> 三维点 X
在理想无噪声情况下,两条射线准确相交。
在真实图像中,因为匹配误差、标定误差和数值误差,两条射线通常不会精确相交,所以实际三角化需要求一个最优点。
baseline 上的点无法唯一确定
有一个特殊退化情况:如果三维点位于两个相机中心的 baseline 上,那么它在两张图像中都会投影到 epipole。
此时两条反投影射线都等于 baseline 本身:
它们不是在唯一点处相交,而是整条线都重合。
因此,这个三维点无法被唯一确定。
baseline 上的点会投影到两个图像中的 epipole,因此仅凭两视图无法确定它在 baseline 上的具体位置。
和第 9 章的关系
第 9 章提供两视图几何的核心约束:
第 10 章开始把这个约束用于重建:
- 用匹配点估计 。
- 用 构造相机矩阵。
- 用相机矩阵和匹配点三角化三维点。
所以 10.1 可以看作从“几何约束”走向“重建算法”的入口。
已标定与未标定的区别
如果相机未标定:
得到的是射影重建。
如果相机已标定:
通常会使用 essential matrix ,并且可以恢复更接近欧氏意义的相机运动和三维结构。
本节记忆点
- 两视图三维重建的输入是匹配点 。
- 输出是相机矩阵 和三维点 。
- 概念流程是:
- 每对匹配点给 一个线性约束。
- 至少 8 对点可以线性估计 。
- 三角化是用两条反投影射线求三维点。
- baseline 上的点无法由两视图唯一确定。
- 未标定重建只能得到射影意义下的结构。
后续问题
读完 10.1 后,可以继续追问:
- 从 构造 的具体公式是什么?
- 为什么未标定重建只能恢复到射影变换?
- 真实图像中两条射线不相交时,如何三角化?
- 如何把射影重建升级到仿射重建、度量重建?
- 为什么 essential matrix 可以用于已标定相机?