解释相机校准矩阵

时间:2013-10-01 08:55:27

标签: camera-calibration calibration

我在解释http://www.cvg.reading.ac.uk/PETS2001/pets2001-cameracalib.html#dataset2处找到的相机校准数据时遇到问题 并想知道是否有人可以提供帮助。基本上我理解了这个例子,当我尝试计算3D对象的2D图像坐标时,它正常工作。我得到的2D坐标在图像边界内,这很好。

问题是当我尝试将工作应用于其他矩阵时。为了让您了解,这些校准矩阵适用于

中的视频

例如,考虑数据集2相机2的转换矩阵:

FocalLength f=792
ImageCentre (u,v) = (384, 288)
Homogeneous Transform T =



 -0.94194 0.33537 -0.01657 0.00000;
    -0.33152 -0.93668 -0.11278 0.00000;
    -0.05334 -0.10073 0.99348 0.00000;
    11791.10000 22920.20000 6642.89000 1.00000;

根据数据集顶部的说明,第一步是将矩阵反转得到:

  -0.94194 -0.33152 -0.05334 0;
    0.33538 -0.93669 -0.10074 0;
    -0.01657 -0.11277 0.99348 0;
    3529.67074 26127.15587 -3661.65672 1;

然后以世界坐标中的点x =(0,0,0)为例。

xT = (3529.67074,26127.15587,-3661.65672) and the point in 2D coordinates is given by

(792 x 3529.67074 / -3661.65672 + 384, 792 x 26127.15587 / -3661.65672 + 288)
= (-763.45 + 384 , -5651.187 + 288)
= (-379.45, -5363.187)

现在这个答案显然不正确,因为答案应该在图像边界内。事实上,当我试图在我的程序中使用这些信息时,3D世界中地平面上的点被错误地转换为2D图像坐标。

如果有人能对如何正确应用工作提出任何想法,我将非常感激。

谢谢,

2 个答案:

答案 0 :(得分:0)

听起来你可以使用tsai算法将2d lat lon映射到2d x,y。看这里:Projection of 3D Coordinates onto a 2D image with known points

答案 1 :(得分:0)

我认为你的计算没有错。如果您获得超出图像边界的投影,则表示相机无法看到该点。

我根据您提到的网页中的数据为相机位置制作了一些图表。 (X,Y,Z)是世界参考系的轴,(x,y,z)是摄像机参考系的轴。

以下是您提到的网页中的第一个示例,他们将点(0,0,0)投影到(244,253.8)。注意z轴的方向:摄像机朝向世界参考框架的原点:

enter image description here

对于数据集2,摄像机2,请注意z轴的方向:摄像机无法看到世界参考框架的原点:

enter image description here

这种取向是否有意取决于您的应用和(X,Y,Z)参考框架的选择。数据集2的摄像机1以类似的方式定向。