跳到主要内容

10.5 使用真实控制点的直接重建

来源:Richard Hartley 与 Andrew Zisserman 的 Multiple View Geometry in Computer Vision,第 10 章 3D Reconstruction of Cameras and Structure,10.5 小节 Direct reconstruction - using ground truth。

10.4 分层重建 的路线是:

projective -> affine -> metric

这一节讲另一条更直接的路线:如果场景中有若干个已知三维坐标的点,就可以直接从射影重建跳到度量重建。

这些已知三维坐标的点称为 ground control points,中文可理解为“地面控制点”或“真实控制点”。

本节核心

假设已经从两张未标定图像得到一个射影重建:

P,P,{Xi}P,\quad P',\quad \{\mathbf{X}_i\}

并且场景中有一组真实欧氏坐标已知的控制点:

{XEi}\{\mathbf{X}_{Ei}\}

这些控制点在两张图像中也能找到对应点:

xixi\mathbf{x}_i \leftrightarrow \mathbf{x}'_i

目标是求一个三维单应矩阵 HH,把射影重建坐标系中的点变换到真实欧氏坐标系:

XEi=HXi\mathbf{X}_{Ei} = H\mathbf{X}_i

一旦 HH 求出来,就能把整个射影重建升级到度量重建:

PM=PH1P_M = PH^{-1} PM=PH1P'_M = P'H^{-1} XMi=HXi\mathbf{X}_{Mi} = H\mathbf{X}_i

为什么控制点能直接确定 H

10.3 已经说明,真实欧氏重建和射影重建之间只差一个非奇异 4×44 \times 4 矩阵:

HH

因此,只要有足够多的点同时满足:

  • 在射影重建中坐标为 Xi\mathbf{X}_i
  • 在真实欧氏世界中坐标为 XEi\mathbf{X}_{Ei}

就可以直接估计这个 HH

每个三维点对应关系:

XEi=HXi\mathbf{X}_{Ei} = H\mathbf{X}_i

HH 提供 3 个线性独立约束。

而三维射影变换 HH4×44 \times 4 齐次矩阵,去掉整体尺度后有:

1515

个自由度。

所以理论上线性求解至少需要:

n5n \geq 5

个控制点。

注意

控制点不能退化。例如不能有 4 个控制点共面,否则约束不足以稳定确定完整三维射影变换。

方法一:先三角化控制点,再求 H

直接法的第一种实现方式是:

  1. 先由普通匹配点估计基础矩阵 FF
  2. FF 构造射影相机 P,PP,P'
  3. 对控制点的图像对应:
xixi\mathbf{x}_i \leftrightarrow \mathbf{x}'_i

三角化出它们在射影重建中的坐标:

Xi\mathbf{X}_i
  1. 使用真实坐标和射影坐标之间的对应:
XEi=HXi\mathbf{X}_{Ei} = H\mathbf{X}_i

求出 HH

  1. HH 变换所有相机和点。

这个方法的核心是先建立两个三维坐标系之间的对应关系:

射影重建坐标 X_i  ->  真实欧氏坐标 X_Ei

然后用三维单应变换把整个重建拉回真实坐标系。

方法二:绕过 Xi,直接从图像测量求 H

也可以不显式计算控制点在射影重建中的三维坐标 Xi\mathbf{X}_i

由于真实控制点 XEi\mathbf{X}_{Ei} 已知,且射影相机 PP 已知,可以直接写:

xi=PH1XEi\mathbf{x}_i = PH^{-1}\mathbf{X}_{Ei}

这里未知量是:

H1H^{-1}

这和相机 resection 中的 DLT 思路类似:已知三维点和图像投影,建立关于未知矩阵元素的线性方程。

单张图中的一个控制点投影关系提供 2 个线性独立约束。

如果同一个控制点在第二张图中也可见,则还能写:

xi=PH1XEi\mathbf{x}'_i = P'H^{-1}\mathbf{X}_{Ei}

但要注意:同一控制点在两张图中给出的 4 个方程并不全独立,因为两幅图像点之间还满足对极共面约束。

对于同一个控制点,如果两张图都可见,最终只有 3 个独立约束。

控制点不一定要两张图都可见

一个实用细节是:控制点不一定必须同时出现在两张图中。

如果某个控制点只在第一张图中可见,也能提供:

xi=PH1XEi\mathbf{x}_i = PH^{-1}\mathbf{X}_{Ei}

如果只在第二张图中可见,也能提供:

xi=PH1XEi\mathbf{x}'_i = P'H^{-1}\mathbf{X}_{Ei}

只要总约束足够,就可以估计 HH

这对实际工程很有用,因为真实控制点可能被遮挡,或者只出现在部分视图中。

完整流程

使用 ground truth 的直接重建可以概括为:

图像匹配点
-> 估计 F
-> 得到射影相机 P, P'
-> 用真实控制点估计 H
-> P_M = P H^{-1}
-> P'_M = P' H^{-1}
-> X_Mi = H X_i

其中:

  • PM,PMP_M,P'_M 是度量相机。
  • XMi\mathbf{X}_{Mi} 是度量重建点。
  • HH 把射影坐标系映射到真实欧氏坐标系。

和分层重建的区别

10.4 的分层法依赖几何结构:

  • 平行线。
  • 消失点。
  • 无穷远平面。
  • 绝对二次曲线。
  • 相机内参约束。

10.5 的直接法依赖真实三维控制点:

  • 已知坐标的标定点。
  • 已知尺寸和位置的人工标志。
  • 测量过的建筑角点。
  • 来自其他传感器或地图的三维点。

两者的目标相同,都是把射影重建升级到度量重建,但使用的信息不同。

方法额外信息关键未知量特点
分层法几何约束、内参约束π,Ω,ω\pi_\infty,\Omega_\infty,\omega不一定需要真实三维坐标
直接法已知三维控制点HH概念直接,依赖控制点质量

工程理解

从工程角度看,10.5 的方法很像把 SfM 得到的任意坐标系“对齐”到真实世界坐标系。

例如:

  1. 先用图像匹配做出一个任意尺度、任意坐标系下的重建。
  2. 找到若干个真实坐标已知的控制点。
  3. 求一个三维变换,把重建坐标系对齐到真实坐标系。

区别在于,这里未标定两视图的初始结果是射影重建,所以需要求的是三维射影变换 HH,而不是简单的相似变换。

本节记忆点

  • 如果有 ground control points,可以从 projective reconstruction 直接升级到 metric reconstruction。
  • 控制点满足:
XEi=HXi\mathbf{X}_{Ei} = H\mathbf{X}_i
  • 三维射影变换 HH 有 15 个自由度。
  • 每个三维点对应提供 3 个独立约束。
  • 至少需要 5 个控制点,且不能出现严重退化。
  • 求出 HH 后,用:
PM=PH1,PM=PH1,XMi=HXiP_M = PH^{-1}, \qquad P'_M = P'H^{-1}, \qquad \mathbf{X}_{Mi} = H\mathbf{X}_i

得到度量重建。

  • 控制点不必全部同时出现在两张图中,只要图像测量提供的总约束足够。

后续问题

进入 10.6 时可以把第 10 章的路线统一起来:

  1. 没有额外信息时,为什么只能得到 projective reconstruction?
  2. π\pi_\infty 时,为什么能得到 affine reconstruction?
  3. Ω\Omega_\inftyω\omega 时,为什么能得到 metric reconstruction?
  4. 有控制点时,为什么可以直接估计 HH