基本矩阵的最小化

信息处理 计算机视觉 3d 重建 立体视觉 几何学
2021-12-30 03:49:41

计算机视觉和 3D 重建中的一个问题是获取相机的内在参数。一个常见的解决方案是使用一个事先知道其形状测量值的对象,例如棋盘。这种方法的问题在于,每次相机参数(例如焦距和放大倍率)发生变化时都必须这样做。

我正在尝试实现A Simple Technique for Self-Calibration中讨论的相机自校准。本质矩阵受其两个奇异值的约束。这可用于在不进行手动校准(即使用棋盘格)的情况下恢复相机的内在特性。我对如何最小化成本函数感到有些困惑。到目前为止,这是我的理解:

基本矩阵

E=K2TFK1

内在矩阵

K=[αxsu00ϵαxv0001]

  • αx焦距和放大倍数的乘积 [求解]
  • ϵ纵横比 [假设提供,我猜来自相机或 EXIF 数据?]
  • u0v0是主点的坐标 [假设 0, 0]
  • s偏斜 [假设 0]

成本函数

C(Ki,i=1..n)=ijn(σ1ijσ2ij)/σ1ij
σs 是奇异值KjTFijKj

问题:如何最小化这个成本函数?

算法总结

1个回答

我想这是一个简单的非线性优化问题(用牛顿变体来解决,例如 Trust-Region 方法),您甚至不需要分析地计算雅可比行列式。在我看来,优化问题被改写了Ki,因此是成本函数的输入。为了计算成本,在每次调用这个函数时,你基本上计算奇异值Ki并根据等式计算成本4(在论文中)。因为您的输入参数是K, 导数是在元素上计算的K. 这使您的优化4维数(或5如果您考虑每台相机的偏斜)。导数是自动计算的,您无需关心。如果您使用的是 MATLAB,它lsqnonlin会为您工作。

论文中详细解释了权重计算,因此我跳过这一部分。

再次检查论文后,我注意到作者实际上正在使用我提到的数值微分方案。如果您想更深入地了解如何区分 SVD,您可能想查看这个这个