TUM-多视图几何-八点法和四点法
讨论了多视几何中的八点算法和四点算法,重点在于如何从两个视图中估计相机的运动和三维结构。八点算法通过至少八个对应点来解耦相机运动和三维点坐标的重建,利用极线约束来建立2D坐标与相机运动参数之间的关系。四点算法则假设所有点均位于同一平面上,仅需四个点便可实现重建,这在许多实际应用中非常有效。通过线性代数方法,这些算法能够有效地解决结构与运动估计问题。
八点算法概述
八点算法是由 Longuet-Higgins 在1981年提出的。这一算法能够通过观察两个视图中的至少八个对应点,估计出相机的运动和三维结构。八点算法不需要已知的3D坐标信息,而是通过极线几何约束来推导出相机的运动参数。
极线几何约束
极线几何是多视几何中的一个重要概念。给定一对点在两个图像中的匹配,点在一个图像中的对应极线定义了它在另一个图像中的潜在位置。八点算法通过以下步骤来实现:
- 构建矩阵系统:使用至少八对点,构建一个矩阵系统来表达图像坐标之间的关系。
- 解方程:通过线性代数方法求解该矩阵系统,提取出基础矩阵 \( F \),并由此推导出相机的运动参数。
本质矩阵与奇异值分解
本质矩阵 \( E \) 是描述两个摄像机间相对运动的关键矩阵,它具有以下特征:
- 本质矩阵的第三个奇异值为零,前两个相同。
- 可以通过将非零奇异值归一化为1,简化计算。
利用奇异值分解(SVD),能够从本质矩阵中提取相机的旋转和平移信息。旋转矩阵 \( R \) 和平移向量 \( t \) 可以从本质矩阵的分解中得到,进而确定相机运动的多个可能解。
深度估计与尺度参数
为了恢复三维结构,需要同时估计深度值和缩放参数。这通常通过最小二乘法来求解,将所有点的深度值作为一个整体来计算,以确保一致性。最小二乘法通过最小化目标函数,获得解析解,即最小特征值对应的特征向量,简化计算过程。
四点算法概述
四点算法是一种简化的算法,适用于所有点都位于同一平面的情况。与八点算法相比,四点算法假设至少四个点在同一平面上,因此仅需四个点即可实现重建。
平面假设与单应性矩阵
在计算机视觉中,单应性矩阵用于描述两个相机在同一平面上观察到的点之间的关系。该矩阵是一个 \( 3 \times 3 \) 矩阵,包含了平面上的旋转和平移参数,能够简化二维坐标之间的转换过程。
- 平面极线约束:在平面假设下,利用单应性矩阵可以从一个二维坐标系转换到另一个。通过消除与三维世界相关的缩放参数,这个过程帮助建立更简洁的约束关系。
奇异值分解的应用
尽管四点算法所观测到的点数量较少,但依然能够构造出足够的独立方程。通过奇异值分解,可以从矩阵中提取旋转、平移和平面参数。这些参数的提取虽然具有挑战性,但对于实现准确的相机运动估计是至关重要的。
退化配置与关键表面
在八点算法中,通常需要至少八个点进行重建,但如果这些点处于退化配置中(即所有点共面),算法将失效。这种情况在人工环境中非常常见。为解决此问题,四点算法假设所有点位于同一平面上,从而避免了八点算法所需的更大计算负担。
主要挑战与解决方案
不准确的点对应关系
在实际应用中,不准确的点对应关系会导致相机运动和三维结构重建的误差。尽管可以通过三角测量技术进行重建,但点数不足往往导致效果不佳。
束调整方法
为了提高重建精度,**束调整方法(Bundle Adjustment)**被引入,用于优化满足极点约束下的几何一致性。通过最小化估计坐标和真实坐标之间的误差,能够实现更精确的重建。
参数化方法的选择
优化过程中,选择在图像平面或三维空间中进行参数化会影响结果的对称性。无约束优化问题通常比有约束优化问题更容易解决,但在处理旋转矩阵时,虽然表面上看似无约束,实际上存在一定的约束条件,使得问题处理更加复杂。
总结
通过八点算法和四点算法,能够有效地解决多视几何中的结构与运动估计问题。这些算法利用线性代数和奇异值分解等数学工具,能够在不同的假设下实现相机运动参数和三维结构的估计。在实际应用中,根据具体场景选择合适的算法和参数化方法,可以提高计算效率和重建精度。