如何从相机校准数据绘制相机和图像位置?

Kev*_*oyd 5 language-agnostic math matrix camera-calibration extrinsic-parameters

我有相机的内在和外在参数.外在的是具有旋转和平移的4×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
Run Code Online (Sandbox Code Playgroud)

我想绘制Matlab校准工具包页面上给出的图像 相机居中 要么 世界为中心 但是我无法弄清楚如何绘制这两幅图像的数学.

我唯一的领导是来自这个页面http://en.wikipedia.org/wiki/Camera_resectioning.这告诉我相机位置可以通过C = - R`找到.Ť

知道如何实现这个任务吗?

Rul*_*lle 5

假设要绘制的平面的角点是 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 并绘制它来绘制相机。

  • 哇!你是怎么做到的,你是数学奇才还是什么?!抱歉,我不太明白其中的内容,所以我必须实际尝试一下。感谢您的精彩回复! (2认同)