7

我有相机的内在和外在参数。外部是一个带有旋转和平移的 4 x 4 矩阵。

我有下面的示例数据,每张相机图像我都有一个。

2.11e-001 -3.06e-001 -9.28e-001 7.89e-001 
6.62e-001 7.42e-001 -9.47e-002 1.47e-001 
7.18e-001 -5.95e-001 3.60e-001 3.26e+000 
0.00e+000 0.00e+000 0.00e+000 1.00e+000

我想绘制Matlab 校准工具包页面 相机居中上给出的图像,或者以世界为中心 但是我无法弄清楚如何绘制这两个图像的数学。

我唯一的线索来自这个页面http://en.wikipedia.org/wiki/Camera_resectioning。这告诉我可以通过 C = − R` 找到相机位置。吨

知道如何完成这项任务吗?

4

2 回答 2

3

假设您要绘制的平面的角是 3x1 列向量,a = [0 0 0]'、b = [w 0 0]'、c = [wh 0]' 和 d = [0 h 0]' .

假设您提供的校准矩阵是 A,由旋转矩阵 R = A(1:3, 1:3) 和平移 T = A(1:3, 4) 组成。

绘制第一个视图 对于具有旋转 R_i 和平移 T_i 的每个位姿 A_i,将平面的每个角 x_w(即 a、b、c 或 d)转换为其在相机中的坐标 x_c

x_c = R_i*x_w + T_i

然后绘制具有变形角的平面。

要绘制相机,其在相机坐标中的投影中心为 [0 0 0]',相机 x 轴为 [1 0 0]',y 轴为 [0 1 0]',z 轴为 [0 0 1] '。

请注意,在图中,相机 y 轴指向下方,因此您可能希望通过乘以 B = [1 0 0; 对所有计算坐标应用额外的旋转。0 0 1; 0 -1 0]。

绘制第二个视图 绘制平面很简单,因为我们处于世界坐标中。只需使用 a、b、c 和 d 绘制平面。

要绘制摄像机,每个摄像机中心是 c = -R'*T。相机轴是旋转矩阵 R 的行,例如,在您提供的矩阵中,x 轴是 [2.11e-001 -3.06e-001 -9.28e-001]'。您还可以通过 x_w = R'*(x_c - T) 将相机坐标中给定的每个点 x_c 转换为世界坐标 x_w 并绘制它来绘制相机。

于 2011-11-18T22:44:39.577 回答
1

现在在 opencv 中有一个示例,用于可视化从他们的相机校准示例生成的外部参数

它输出类似于原始问题的内容: **以相机为中心的即**

于 2020-06-05T20:54:56.183 回答