Computer vision 当刚性运动应用于多摄像机系统时,如何更新多摄像机系统的协方差?

Computer vision 当刚性运动应用于多摄像机系统时,如何更新多摄像机系统的协方差?,computer-vision,kalman-filter,slam,Computer Vision,Kalman Filter,Slam,例如,对于6自由度相机状态,两个相机具有12状态参数和12*12协方差矩阵(假设高斯分布)。当6自由度刚体运动应用于相机时,协方差如何变化 如果六自由度也是高斯分布呢?你可以使用“正向传播”定理(你可以在Hartley和Zisserman的《多视图几何》一书第5章第139页中找到) 基本上,如果你有一个随机变量x,其均值x_m和协方差C,并且你对x应用了一个不同的函数f,那么f(x)的均值将是f(x_m),其协方差C_f将大约是JCJ^t>,其中,^t表示转置,J是f在xum处计算的雅可比矩阵

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

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

你可以使用“正向传播”定理(你可以在Hartley和Zisserman的《多视图几何》一书第5章第139页中找到)

基本上,如果你有一个随机变量
x
,其均值
x_m
和协方差
C
,并且你对
x
应用了一个不同的函数
f
,那么
f(x)
的均值将是
f(x_m)
,其协方差
C_f
将大约是
JCJ^t>,其中,
^t
表示转置,
J
f
xum
处计算的雅可比矩阵

现在考虑摄像机位置和摄像机方位的协方差传播问题。

  • 首先看看在你的例子中相机的平移参数会发生什么变化,让我们用
    x\u t
    来表示它们。在你的例子中,
    f
    是一个刚性变换,这意味着

    f(x_t)=Rx_t+T //R is a rotation and T a translation, x_t is the position of the camera
    
    现在关于
    x\u t
    f
    的雅可比矩阵就是
    R
    ,因此协方差由下式给出

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

    还要注意,如果
    C
    是各向同性的,即对角矩阵
    lambda*Identity
    ,然后
    C\u f=lambda*Identity
    ,这也是有意义的, 因为直觉上我们并不期望各向同性协方差发生变化 旋转

  • 现在考虑方向参数。让我们使用
    SO(3)
    群的李代数。在这种情况下,
    偏航、俯仰、缩放
    将参数化为
    v=[alpha_1,alpha_2,alpha_3]^t
    (它们基本上是李代数系数)。在下面,我们将使用从李代数
    so(3)
    到组
    so(3)
    的指数和对数映射。我们可以把函数写成

    f(v)=log(R*exp(v)) 
    
    在上面的例子中,exp(v)是相机的旋转矩阵,
    R
    是刚性变换的旋转。 请注意,平移不会影响方向参数。计算关于
    v
    f
    的雅可比矩阵涉及数学。我怀疑你可以使用伴随或李代数,或者你可以使用,但是,你必须限制精度。在这里,我们将采用快捷方式并使用中给出的结果

    所以,我们的协方差是

    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
    的协方差也是各向同性的

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

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

    在许多作品中,平移/方向参数之间的条件独立性经常被假设(特别是在姿势图示中,例如,see),我总是发现在实践中,这效果更好(我知道这不是一个非常令人信服的论点)。然而,我承认我在写这个答案的时候并没有考虑太多(如果有的话),因为我的主要观点是“使用正向传播定理”。您可以将其联合应用于方向/位置,所有这些更改都是您的雅可比矩阵的外观

    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\u 1,x\u 2)
    ,而雅可比矩阵将看起来像
    [J\u R\u 1 J\u R\u 2 J\u T\u 1 J\u T2]
    。正如您所知,计算这些可能会很繁琐,所以如果您可以尝试数字或自动微分


感谢您的详细解释。但我有一个问题,你考虑的位置和方向分开,如果它们是对应的呢?你为什么用so3而不是se3。更重要的是,如果我有两个摄像头作为我的问题的解释,我认为转换会影响它们之间的协方差,如何推断这种变化?@Guo先生,我很高兴,感谢这些观察!我尽可能地更新了答案以解决您的问题。如果您发现一些不合理的地方,请不要犹豫,纠正我。谢谢您的补充,我认为se3可能是刚性转换的更紧凑的表达式。但在实践中,大多数slam使用so3+位置参数化而不是se3,如中的等式(21),我不知道这个参数化方法是否与您的推断相同?看起来很像:)@Guo先生哦,不,又不是那张纸了!在过去的几周里,我经历的xD是如此之多,以至于当我看到它时,我只想自杀。但是什么是SVO2?它是一个开源的实现还是什么的(如果是的话,你能分享一下链接吗)?无论如何,我可能弄错了,但我认为SO(3)+翻译与SE(3)完全相同,所以哪一个都不重要
J=[J_R J_T]//J_R Jacobian w.r.t orientation , J_T Jacobian w.r.t position