例如,对于 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]
。如您所知,这些计算起来可能很乏味,因此,如果您可以尝试数字或自动微分。