时间:2018-11-23 22:46:12

标签: image-processing computer-vision coordinates transform coordinate-transformation

我目前正在阅读有关交通摄像机自动校准(https://www.microsoft.com/en-us/research/wp-content/uploads/2017/09/AutoCalib.pdf)的文章。在某些时候,作者计算了多个校准并计算了这些矩阵的旋转部分的平均值。

因此,文本对过程进行了如下描述:

  

最后,我们计算剩余校准的“平均值”。我们   在所有过滤后的校准中平均Z轴单位矢量,   计算两个相互正交的X和Y轴单位向量。

因此,让我们假设我有两个要求平均的旋转矩阵。像这样:

r1 = [[-0.64375223,  0.63471324,  0.42746014],
        [-0.52107859, -0.77267423,  0.3625626 ],
        [ 0.56041072,  0.01066016,  0.82814624]]

r2 = [[-0.31267459, -0.0464914 ,  0.94872185],
        [-0.88839581, -0.33914166, -0.30941205],
        [ 0.3361361 , -0.93958581,  0.06473821]]

所以,首先我将z轴矢量平均值计算为:

import numpy as np

c = [r1, r2]
z_avg = np.mean(c, axis=0)[:, 2]

这将平均z轴创建为:

array([0.688091  , 0.02657528, 0.44644223])

然后我编写了用于计算基向量的函数:

def basis(v):
    v = v / np.linalg.norm(v)
   if v[0] > 0.9:
       b1 = np.asarray([0.0, 1.0, 0.0])
   else:
       b1 = np.asarray([1.0, 0.0, 0.0])

    b1 -= v * np.dot(b1, v)
    b1 /= np.linalg.norm(b1)
    b2 = np.cross(v, b1)
    return b1, b2, v

我可以将正交基向量计算为:

x, y, z = basis(z_avg)

现在,接下来的步骤让我感到困惑。文字继续说:

  

然后我们针对这三个单位矢量计算旋转矩阵,   形成我们的(平均)最终旋转矩阵以进行校准   估计

我真的不确定“为这三个单位矢量计算旋转矩阵”的含义。我也看不到这个过程如何以某种方式“平均”这些旋转矩阵。您能提供给我的任何见解将非常感激!

0 个答案:

没有答案