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`找到.Ť
知道如何实现这个任务吗?
假设要绘制的平面的角点是 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 并绘制它来绘制相机。