根据相机位置找到两个原点之间的平移

Find the translation between two origins based on the camera positions

我已经根据相机视野中的两个原点确定了相机位置。假设原点 1 位于 (140,200),原点 2 位于 (70,180)。

以下是相对于原点 1 和原点 2 的相机位置。

X1,Y1,Z1,X2,Y2,Z2 = 0.8361721744324895,-0.5131803297263005,1.3708440418732257,0.09985411281689659,0.3329507542440152,1.342809058827907

而 (X1, Y1, Z1) 是相机相对于原点 1 的位置,而 (X2, Y2, Z2) 是相机相对于原点 2 的位置。

我使用以下代码来计算两个来源之间的翻译。

dist = math.sqrt((X1-X2) ** 2 + (Y1-Y2) **2 + (Z1-Z2)**2)

但是,该值是一个标量,而不是基于它们各自的相机位置的原点之间平移的矢量 (XYZ) 值。我怎样才能得到 XYZ 距离?

考虑除您的两个来源之外的第三个来源。

关于这个第三原点,让相机的位置向量,第一原点,第二原点分别为r_cr_1,和r_2

相对于第一个原点,令相机的位置向量为r_c_1

相对于第二个原点,令相机的位置向量为r_c_2

--作为向量减法的符号,我们有:

r_c_1 = r_c -- r_1

r_c_2 = r_c -- r_2

由以上两个方程,一个方程减去另一个方程,我们得到:

r_c_2 -- r_c_1 = (r_c -- r_2) -- (r_c -- r_1)

这在简化时给出:

r_c_2 -- r_c_1 = r_1 -- r_2

在上面的等式中,RHS 就是你想要的(两个原点之间的平移向量)。 LHS 是两个原点下相机位置之间的矢量减法。

因此,如果向量以三元组表示法表示,则令 r_c_1r_c_2 分别为 (x1, y1, z1)(x2, y2, z2)。然后,根据上面的等式,要求“origin-translation-vector”将 (x2-x1, y2-y1, z2-z1)