例如,对于 6 自由度相机状态,两个相机具有12
状态参数和12*12
协方差矩阵(假设高斯分布)。当对相机应用 6 自由度刚性运动时,该协方差如何变化?
如果 6 自由度也是高斯分布怎么办?
例如,对于 6 自由度相机状态,两个相机具有12
状态参数和12*12
协方差矩阵(假设高斯分布)。当对相机应用 6 自由度刚性运动时,该协方差如何变化?
如果 6 自由度也是高斯分布怎么办?
您可以使用“前向传播”定理(您可以在 Hartley 和 Zisserman 的多视图几何书,第 5 章,第 139 页中找到它)。
基本上,如果您有一个x
具有均值x_m
和协方差的随机变量,以及一个应用于C
的微分函数,则 的均值将是,其协方差将近似为,其中 表示转置,并且是在 处评估的雅可比矩阵。f
x
f(x)
f(x_m)
C_f
JCJ^t
^t
J
f
x_m
现在让我们分别考虑相机位置和相机方向的协方差传播问题。
首先看看在你的情况下相机的平移参数会发生什么,让我们用 来表示它们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
这是一个有趣的结果:它表明协方差的变化仅取决于旋转。这是有道理的,因为直观地说,翻译(位置)数据实际上并没有改变它改变的轴(关于主成分分析的事情)。
还要注意 ifC
是各向同性的,即对角矩阵
lambda*Identity
, then 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
我怀疑您可以使用伴随或李代数来做到这一点,或者您可以使用Baker-Campbell-Hausdorff 公式来做到这一点,但是,您将不得不限制精度。在这里,我们将采取捷径并使用此问题中给出的结果。
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)
是刚性变换空间,包括平移。使用它对我来说没有意义,因为我已经处理了位置参数。
两个相机之间的协方差呢?
我认为我们仍然可以应用相同的定理。现在的区别是您的刚性变换将是参数的函数M(x_1,x_2)
,12
并且您的雅可比行列式看起来像[J_R_1 J_R_2 J_T_1 J_T2]
. 如您所知,这些计算可能很繁琐,所以如果您可以尝试数字或自动微分。