鉴于第一摄像机姿势,对校准立体装备的第二摄像机进行姿态估计

时间:2013-10-21 19:41:56

标签: opencv 3d computer-vision

使用opencv我已经校准了一对立体声相机。这导致两个摄像机之间的旋转和平移。

我使用第一台相机拍摄图像(左)并使用solvePnp计算左相机相对于零件的姿势(rvec和tvec)。

我的问题是如何使用左摄像头的姿势和给定的R& R来计算右摄像头的姿势。立体声校准的T值是什么?

感谢。

1 个答案:

答案 0 :(得分:3)

问题有点不清楚,但我你想找到关于该部分的正确相机的姿势。如果是这种情况,最简单的方法如下:

  • 让Q_pl成为左相机相对于该部分的姿势。这由4×4矩阵表示,其前3行和列是部分w.r.t的旋转矩阵R_pl。左侧摄像头(您的rvec),底行是[0,0,0,1],并且4列的前3行是来自摄像机的平移向量t_pl 的组成部分em> to 部分(你的tvec)。为了澄清,你通过在相机框架中将部件的x,y和z轴单位矢量(从相机中看到)作为列矢量,然后是来自来编写Q_pl。 em>摄像机部分,然后将[0,0,0,1]写为第四行。
  • 同样,让Q_lr成为左相机相对于右相机的姿势(从校准中获得)。你编写这个4x4矩阵,将左相机的x,y,z单位矢量的组成部分(如右图所示)作为列向量,然后是来自右侧相机的平移向量 em> to 左边的那个,然后写[0,0,0 1]作为第四行。
  • 部分的姿势w.r.t.然后,正确的相机就是两个矩阵的乘积:

    Q_pr = Q_pl * Q_lr

请注意因素的顺序很重要。这个表达式只是说从右镜头到零件,你可以先从右镜头到左镜头再从那里到镜头。同样,此转换的旋转部分位于Q_pr的前3行和3列中,而从右相机到部件的平移矢量位于第4列。

请注意,您的校准程序可能已经为您提供了Q_rl,而不是Q_lr。如果是这种情况,您只需将其反转即可。逆算很容易计算:

R_lr = transpose(R_rl)
t_lr = -(R_lr * t_rl)

同样,如果这是你的solvePnP产生的,而不是Q_pl,你将反转Q_lp。