我有一个3x点的3x3协方差矩阵,并且我想知道给定的图像姿势[Xc,Yc,Zc,q0,q1,q2,q3]的等效2d协方差(对于像平面中的u,v)

有一种很长的(几何)方式,即3d协方差可以是3d椭圆,然后将其投影到平面中可以得到2d椭圆,最后将椭圆转换为2d矩阵,但这很长,

任何直接方式,以代数方式解决都将有所帮助

P. S:任何线索或对解决方案的引用(无需代码),也有帮助,我将用代码重写答案(在c++中)

我也标记了卡尔曼过滤器,因为我认为它与此有关

最佳答案

如何解析地表示转换变量的协方差?

您可以使用uncertainty propagation equations从分析上获得一阶近似值。特别是,关于非线性组合的段落基本上解释了以下内容:



如果我完全理解您的问题,那么您在世界坐标系中表示的3D点具有协方差,表示为C_Xw。您需要该点在图像平面中的投影的协方差,表示为C_xi。让我们用f表示将3D世界坐标映射到图像坐标的函数。然后我们有:C_xi = J_f . C_Xw . J_f^T

如何计算jacobian矩阵J_f

实际上,f是针孔投影函数,可以如下分解:f = f_intr o f_persp o f_pose,其中:

  • f_intr应用内在相机系数(即水平和垂直焦距fxfy,偏斜s,主点坐标cxcy):f_intr( [xn; yn] ) = [fx, s, cx; 0, fy, cy] . [xn; yn; 1] = [fx . xn + s . yn + cx; fy . yn + cy]
  • f_persp将针孔透视模型应用于相机坐标系中的3D点:f_persp( [Xc; Yc; Zc] ) = [Xc/Zc; Yc/Zc]
  • f_pose应用3D刚性变换(即,旋转R_cw,平移t_cw),将世界坐标系中的3D点映射到摄像机坐标系中的3D点:f_pose( [Xw; Yw; Zw] ) = R_cw . [Xw; Yw; Zw] + t_cw

  • chain rule of derivatives帮助表达组合函数的派生:



    通过解析可以很容易地表达f_intrf_perspf_pose的雅各布矩阵:
  • f_intrxn中是线性的,因此J_f_intr = [fx, s; 0, fy]是常数
  • J_f_persp( Xc ) = [1/Zc, 0, -Xc/Zc²; 0, 1/Zc, -Yc/Zc²]
  • f_poseXw中是线性的,因此J_f_pose = R_cw是常数

  • 最终表达

    最后,我们得到以下解析表达式:
    C_xi = J_f . C_Xw . J_f^T
    其中J_f = [fx, s; 0, fy] . [1/Zc, 0, -Xc/Zc²; 0, 1/Zc, -Yc/Zc²] . R_cw
    同样,这是一阶近似,但是针孔投影函数“不是很非线性”,这意味着对于大多数应用来说,这种近似通常足够接近。

    09-27 06:34
    查看更多