当多相机系统都应用刚性运动时,如何更新多相机系统的协方差?



例如,对于 6 自由度相机状态,两个相机具有12状态参数和一个12*12协方差矩阵(假设高斯分布)。当将 6 自由度刚性运动应用于相机时,这种协方差如何变化?

如果6自由度也是高斯分布呢?

您可以使用"前向传播"定理(您可以在Hartley和Zisserman的多视图几何书中找到它,第5章,第139页)。

基本上,如果你有一个具有平均x_m和协方差C的随机变量x,以及一个应用于x的微分函数f,那么f(x)的均值将是f(x_m)的,它的协方差C_f将是大约JCJ^t,其中^t表示转置,J是在x_m处评估的f的雅可比矩阵。

现在,让我们分别考虑相机位置和相机方向的协方差传播问题。

  • 首先看看在您的情况下相机的平移参数会发生什么变化,让我们用x_t表示它们。在您的情况下,f是一个刚性的转换,这意味着

    f(x_t)=Rx_t+T //R is a rotation and T a translation, x_t is the position of the camera
    

    现在f的雅可比关于x_t只是R,所以协方差由下式给出

    C_f=RCR^T
    

    这是一个有趣的结果:它表明 协方差仅取决于旋转。这是有道理的,因为 直观地说,平移(位置)数据实际上并没有改变轴 它沿着它的变化(关于主成分的事情 分析)。

    另请注意,如果C是各向同性的,对角矩阵lambda*Identity,然后C_f=lambda*Identity,这也是有道理的, 因为直觉上我们不希望各向同性协方差发生变化 旋转。

  • 现在考虑方向参数。让我们使用SO(3)群的李代数。在这种情况下,yaw, pitch, scale将被参数化为v=[alpha_1, alpha_2, alpha_3]^t(它们基本上是李代数系数)。在下文中,我们将使用从李代数so(3)到群SO(3)的指数和对数映射。我们可以将我们的函数写为

    f(v)=log(R*exp(v)) 
    

    在上面,exp(v) 是相机的旋转矩阵,R是刚性变换的旋转。 请注意,平移不会影响方向参数。计算f的雅可比v在数学上是复杂的。我怀疑你可以使用伴随代数或李代数来做到这一点,或者你可以使用贝克-坎贝尔-豪斯多夫公式来做到这一点,但是,你必须限制精度。在这里,我们将采用捷径并使用此问题中给出的结果。

    jacobian_f_with_respect_to_v=R*inverse(R*exp(v))
    =R*exp(v)^t*R^t
    

    因此,我们的协方差将是

    R*exp(v)^t*R^t *  Cov(v) * (R*exp(v)^t*R^t)^t
    =R*exp(v)^t*R^t * Cov(v) * R * exp(v) * R^t
    

    同样,我们观察到同样的事情:如果Cov(v)是各向同性的,那么f的协方差也是如此。

编辑:回答您在评论中提出的问题

  • 为什么假设平移/旋转之间的条件独立性?

    在许多著作中,通常假设平移/方向参数之间的条件独立性(特别是在姿势图上,例如参见Hauke Strasdat的论文),而且我总是发现在实践中,这要好得多(我知道,这不是一个很有说服力的论点)。但是,我承认在写这个答案时我没有花太多心思(如果有的话),因为我的主要观点是"使用前向传播定理"。你可以把它联合应用于方向/位置,所有这些变化都是你的雅可比矩阵看起来像

    J=[J_R J_T]//J_R Jacobian w.r.t orientation , J_T Jacobian w.r.t position
    

    然后协方差矩阵的"致密化"将作为传播的结果发生,就像J^T*C*J一样。

  • 为什么使用SO(3)而不是SE(3)

    你自己说的,我把平移参数和方向分开了。SE(3)是刚性转换的空间,其中包括翻译。对我来说,使用它没有意义,因为我已经处理了位置参数。

  • 两个相机之间的协方差如何?

    我认为我们仍然可以应用相同的定理。现在的区别在于,你的刚性变换将是12参数的函数M(x_1,x_2),而你的雅可比变换看起来像[J_R_1 J_R_2 J_T_1 J_T2]。如您所知,这些计算起来可能很乏味,因此,如果您可以尝试数字或自动微分。

相关内容

最新更新