-->

如何计算相机相对的一个外部参数第二相机?(How to calculate extrinsic pa

2019-06-27 20:30发布

我已校准的2个摄像头相对于一些世界坐标系。 我知道,相对于世界坐标系他们每个人的旋转矩阵和平移向量。 从这些基质如何计算旋转矩阵和一个照相机的平移矢量相对于其他??

任何帮助或建议,请。 谢谢!

Answer 1:

首先将您的旋转矩阵成旋转向量。 现在,你必须为每个摄像机2个3D矢量,称他们为A1,A2,B1,B2。 你把所有的4它们相对于一些原点O您所需要的规则是

A relative to B = (A relative to O)- (B relative to O)

将该规则应用于你的2个向量,你将有自己的姿态彼此相对。

从旋转矩阵转换为欧拉角的一些文件可以发现这里还有很多其他地方。 如果你正在使用的OpenCV你可以只使用罗德里格斯 。 下面是一些MATLAB /八度代码,我发现。



Answer 2:

这里有一个简单的解决方案,因为你已经有3×3的旋转矩阵R1和R2,以及3X1平移向量T1和T2。

这些表达来自世界上运动坐标系到每个摄像机,即,是这样的,如果p是在世界上所表示的点的坐标帧,则相同点表达在,比方说,矩阵,照相机1帧为p1 = R1 * P + T1。

从照相机1至2中的运动然后简单地(a)由照相机1的运动对于世界坐标系的组成,和(b)从所述世界坐标系TO照相机2的运动的如下可以很容易地计算该组合物:

  1. 形成4×4旋转 - 平移矩阵QW1 = [R1 T1]和QW2 = [R2 T2],均与第4行等于[0 0 0 1]。 这些矩阵完全表达该旋转 - 平移从世界坐标分别帧TO照相机1和2。
  2. FROM相机1 TO世界帧的运动是简单地Q1W = INV(QW1)。 这里INV()是代数逆矩阵,即一个,使得INV(X)* X = X * INV(X)=​​ IdentityMatrix,对于每一个非奇异矩阵X.
  3. 所述旋转 - 平移从照相机1至2是然后Q12 = Q1W * QW2,反之亦然,从照相机2的一个为1是Q21 = Q2W * QW1 = INV(QW2)* QW1。

一旦你有Q12,你可以从中提取的旋转和平移部分,如果你愿意的话,分别从上3×3子矩阵和右3X1子列。



Answer 3:

这里是非常简单和容易的解决方案。 我假设你的第一相机具有R1和T1,第二照相机根据共同的参考点具有R2和T2旋转矩阵和平移矢量。

从第一到第二相机,旋转从第一到第二相机翻译可以通过以下两种线matlab代码计算;

R=R2*R1';
T=T2-R*T1;

但要注意,如果你必须为每个摄像头只有一个R和T这是真的。 (我的意思是一个独特的世界参考的旋转和平移)。 如果你有更多的参考平移和旋转,你应该calcuate R,T为每一个参考点。 也许他们会非常接近对方。 但是,这些可能是不同sligtly。 然后,你可以计算平移向量的平均值和所有发现旋转矩阵转换成旋转向量,caluculate其平均,然后将其转换为旋转矩阵。



文章来源: How to calculate extrinsic parameters of one camera relative to the second camera?