0

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

问题是当我尝试将工作应用于其他矩阵时。为了让您深入了解,这些校准矩阵适用于在以下位置找到的视频

例如考虑 Dataset 2 Camera 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 图像坐标。

如果有人能就如何正确应用工作提供任何想法,我将不胜感激。

谢谢,

4

2 回答 2

0

听起来您可以使用 tsai 算法将 2d lat lon 映射到 2d x,y。看这里:将 3D 坐标投影到具有已知点的 2D 图像上

于 2013-10-01T11:59:29.687 回答
0

我认为你的计算没有问题。如果您得到超出图像边界的投影,则意味着相机无法看到该点。

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

以下是您提到的网页中的第一个示例,他们对点 (0,0,0) 进行投影以获得 (244, 253.8)。注意 z 轴的方向:相机正朝向世界参考系的原点:

在此处输入图像描述

对于数据集 2,相机 2,注意 z 轴的方向:相机看不到世界参考系的原点:

在此处输入图像描述

这个方向是否有意义取决于您的应用和(X、Y、Z)参考系的选择。数据集 2 的相机 1 以类似的方式定向。

于 2013-10-09T22:36:17.130 回答