如何计算一台摄像机相对于第二台摄像机的外部参数?

Kar*_*mar 8 calibration computer-vision camera-calibration rotational-matrices extrinsic-parameters

我已根据某个世界坐标系校准了2个摄像头.我知道相对于世界框架的每一个的旋转矩阵和平移向量.从这些矩阵如何计算一个摄像机相对于另一个摄像机的旋转矩阵和平移矢量?

请给我任何帮助或建议.谢谢!

Fra*_*ari 5

这是一个更简单的解决方案,因为您已经有3x3旋转矩阵R1和R2,以及3x1平移向量t1和t2.

这些表示从世界坐标系到每个摄像机的运动,即矩阵,使得如果p是以世界坐标系表示的点,那么在相机1帧中表示的相同点是p1 = R1*p + T1.

从摄像机1到2的运动简单地是(a)从摄像机1到世界帧的运动,以及(b)从世界帧到摄像机2的运动的组成.您可以如下轻松计算该组成:

  1. 形成4x4旋转平移矩阵Qw1 = [R1 t1]和Qw2 = [R2 t2],第4行均等于[0 0 0 1].这些矩阵分别完全表示从世界坐标框到相机1和2的旋转平移.
  2. 从摄像机1到世界帧的运动仅仅是Q1w = inv(Qw1).这里inv()是代数逆矩阵,即对于每个非奇异矩阵X,inv(X)*X = X*inv(X)= IdentityMatrix.
  3. 然后,从摄像机1到2的旋转平移是Q12 = Q1w*Qw2,反之,从摄像机2到1的旋转平移是Q21 = Q2w*Qw1 = inv(Qw2)*Qw1.

一旦你有Q12,你可以从它的上3x3子矩阵和右3x1子列中分别从中提取旋转和平移部分.


Ham*_*mer 0

首先将旋转矩阵转换为旋转向量。现在每个摄像机都有 2 个 3d 矢量,将它们称为 A1、A2、B1、B2。对于某个起源 O,您拥有全部 4 个。您需要的规则是

A relative to B = (A relative to O)- (B relative to O)
Run Code Online (Sandbox Code Playgroud)

将这一规则应用到您的 2 个向量上,您将获得它们相对于彼此的姿势。

可以在此处以及许多其他地方找到有关从旋转矩阵转换为欧拉角的一些文档。如果您使用 openCV 您可以只使用Rodrigues是我找到的一些 matlab/octave 代码。