基本矩阵的投影矩阵

时间:2013-08-02 14:05:51

标签: matlab opencv computer-vision camera-calibration

我已经获得了两台相机之间的基本矩阵。我也将其内部参数放在3 X 3矩阵中,这是我之前通过国际象棋棋盘获得的。使用基本矩阵,我获得了P1P2

P1 = [I | 0]P2 = [ [e']x * F | e']

这些投影矩阵在获取精确的3D位置方面并不真正有用。 由于我有内部参数K1K2,我将P1P2更改为

P1 = K1 * [I | 0]P2 = K2 * [ [e']x * F | e']

  • 这是获得真实投影矩阵的正确方法吗?它提供了3D世界和图像之间的实际关系?
  • 如果没有,请帮助我了解正确的方法以及我出错的地方。
  • 如果这是正确的方法,我该如何验证这些矩阵?

1 个答案:

答案 0 :(得分:7)

一本好的参考书是"计算机视觉中的多视图几何"来自哈特利和齐瑟曼。 首先,你的P公式是错误的。如果你想要K里面的公式,那就相当

P = K * [R | t]

P = [ [e']x * F | e']

但不是两者的混合。

如果你从8点算法计算出F,那么你只能恢复投影几何直到3D单应性(即4x4变换)。

要升级到欧几里德空间,有两种可能性,都是从计算基本矩阵开始。

第一种可能性是从F计算基本矩阵:E =转置(K2)* F * K1。

第二种可能性是直接估计这两种观点的基本矩阵:

  • 通过预先乘以每个图像的K的倒数来标准化您的2D点("标准化图像坐标")
  • 在这些标准化点上应用(与F相同)8点算法
  • 通过SVD分解和强制对角线值,强制基本矩阵的2个奇异值等于1,最后为0,这是事实。

一旦你有了必要的矩阵,我们就可以用

的形式计算投影矩阵
P = K * [R | t]

由于E的SVD元素,可以找到R和t(参见前面提到的书)。 但是,您将有4种可能性。其中只有一个项目指向两个摄像头前面,所以你应该测试一个点(如果你确定的话)去除4中的模糊性。 在这种情况下,您将能够将相机及其方向(使用投影的R和t)放置在3D场景中。

不是那么明显,确实......