从其基本矩阵重建两个摄像机的相对欧氏姿势时,存在理论上的歧义。这种歧义与以下事实有关:给定图像中的2D点,经典针孔相机模型无法分辨对应的3D点是在相机前面还是在相机后面。为了消除这种歧义,您需要知道图像中的一个点对应关系:因为假定这两个2D点是位于两个摄像机前面的单个3D点的投影(因为在两个图像中都可见),这样可以选择正确的R和T。
为此,在以下博士学位论文的6.1.4(p47)中解释了一种方法:C.Ressl(PDF)编写的“三焦点张量的几何,约束和计算”
。下面概述了此方法。我将用x1和x2表示两个相应的2D点,用K1和K2表示两个相机矩阵,并用E12表示基本矩阵。
一世。计算基本矩阵的SVD
E12 = U * S * V'。如果
det(U) < 0设置
U = -U。如果
det(V) < 0设置
V =-V。
ii。定义
W = [0,-1,0; 1,0,0; 0,0,1],
R2 = U * W * V'和
T2 = third column of U
iii。定义
M = [ R2'*T2 ]x,
X1 = M * inv(K1) * x1和
X2 = M * R2' * inv(K2) * x2
iv。如果
X1(3) * X2(3) < 0,请设置
R2 = U * W' * V'并重新计算,
M然后
X1
v。如果已
X1(3) < 0设置
T2 = -T2
vi。定义
P1_E = K1 * [ I | 0 ]和
P2_E = K2 * [ R2 | T2 ]
符号
'表示
[.]x步骤iii中使用的转置和符号。对应于斜对称运算符。在3x1向量上应用偏斜对称算子
e = [e_1; e_2;e_3]将产生以下结果(请参阅Wikipedia关于叉积的文章):
[e]x = [0,-e_3,e_2; e_3,0,-e_1; -e_2,e_1,0]
最后,请注意,范数
T2将始终为1,因为它是正交矩阵的列之一。这意味着您将无法恢复两个摄像机之间的真实距离。为此,您需要知道场景中两个点之间的真实距离,并考虑该距离以计算摄像机之间的真实距离。



