从多个视角重建
我们现在转向本次博文的议题- 从几幅图像重建场景。 最简单的情况是两个图像,我们将首先考虑。 作为一种数学抽象,我们将讨论局限于仅由点组成的“场景”。
对于重建的许多算法,通常输入是一组点对应关系。
因此,在两视图的情况下,我们在两个图像中考虑一组对应关系 。 假设存在一些相机矩阵, 和 以及一组3D点 ,由这些图像上产生对应关系,满足于 和 。
因此,点 投射到两个给定的数据点。 但是,摄像机(由投影矩阵 和 表示)和点 都不是已知的。 我们的任务是确定它们。
我们的已知条件是对应图像中的匹配点对,我们的目标是计算所谓的camera matrix和3D空间中的实际点云!
从一开始就很清楚,不可能唯一地确定点的位置。 这是一个普遍的模糊性,无论我们给出了多少图像,即使我们不仅仅有点对应数据。
例如,给定几个立方体的图像,不可能分辨它的绝对位置(它位于Addis Ababa的夜总会,还是大英博物馆),它的方向(面朝北)或其大小。
通过这个例子我们想说的是,重建最多可能达到世界的相似变换。 然而,事实证明,除非已知关于两个相机的校准,否则重建中的模糊性由更一般的变换类 -射影变换表示。
产生这种模糊性是因为可能将射影变换(由4×4矩阵H表示)应用于每个点 ,并且在每个相机矩阵 的右侧,而不改变射影图像点,因此:
没有令人信服的理由选择一组点和相机矩阵而不是另一组。 H的选择基本上是任意的,我们说重建具有射影模糊性,或者是射影重建。
然而,好消息是这是可能发生的最坏情况。 可以从两个视图重建一组点,直到不可避免的投影模糊。为了能够这样说,我们需要做一些条件限制; 必须有足够多的点,至少七个,并且它们不能位于各种明确定义的关键配置(critical configurations)中。
从两个视图重建点集的基本工具是基础矩阵(fundamental matrix),它表示如果它们是相同3D点的图像,则图像点 和 所要遵循的约束。
这种约束源于两个视图的相机中心,图像点和空间点的共面性。
给定基本矩阵 ,一对匹配点 , 必须满足
其中 是秩为2的3×3矩阵。这些方程在矩阵 的元素(entries)中是线性的,这意味着如果 是未知的,则可以从一组点对应计算它。
一对相机矩阵 和 唯一地确定基本矩阵 ,相反,基本矩阵确定一对相机矩阵,直到3D射影模糊度。 因此,基本矩阵封装了这对相机的完整投影几何,并且通过3D的射影变换而不变。
重建步骤
用于重建场景的基础矩阵方法非常简单,包括以下步骤:
- 给定两个视图中的几个点对应关系 ,基于共面方程 在F的元素中形成线性方程。
- 找到 作为一组线性方程的解
- 根据某些给出的简单公式(后期博文若有需求则更新)计算 中的一对相机矩阵。
- 鉴于两个相机( , )和相应的图像点对 ,找到射影到给定图像点的3D点 。 以这种方式求解 被称为三角测量。
这里给出的算法只是一个大纲,以后会详细讨论了它的每个部分。 该算法不应直接从该简要描述中实现。