Yas*_*sif 1 math 3d covariance computer-vision kalman-filter
我有一个三维点的3x3协方差矩阵,我想知道相当于2D协方差(为U,V图像平面)给出的图像姿势,[Xc,Yc,Zc,q0,q1,q2,q3],
有一种很长的(几何)方式,即3d协方差可以是3d椭圆,然后将其投影到平面中可以得到2d椭圆,最后将椭圆转换为2d矩阵,但这很长,
任何直接方式,以代数方式解决都将有所帮助
P. S:任何线索或对解决方案的引用(无需代码)也将有所帮助,我将用代码重写答案(在c ++中)
我也标记了卡尔曼过滤器,因为我认为它与此有关
通过使用不确定性传播方程,您可以解析得到一阶近似值。特别是,关于非线性组合的段落基本上解释了以下内容:
知道
C_x变量的协方差x和J_f函数的雅可比矩阵,f协方差的一阶近似值由下式f(x)给出:C_f(x) = J_f . C_x . J_f^T其中,.^T是转置算符。
如果我完全理解您的问题,则可以在世界坐标系中表示的3D点上具有协方差,表示为C_Xw。您想要该点在像平面中的投影的协方差,表示为C_xi。让我们通过f将3D世界坐标映射到图像坐标的功能来表示。然后我们有:C_xi = J_f . C_Xw . J_f^T。
J_f?实际上f是针孔投影函数,可以分解如下:f = f_intr o f_persp o f_pose,其中:
f_intr应用相机固有的系数(即,水平和垂直焦距fx和fy,偏斜s,主点坐标cx和cy):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
如果
f = f_intr o f_persp o f_pose,并表示Xc=f_pose(Xw),xn=f_persp(Xc)并且xi=f_intr(xn),我们有以下几点:
J_f( Xw ) = J_f_intr( xn ) . J_f_persp( Xc ) . J_f_pose( Xw )
的雅可比矩阵f_intr,f_persp并且f_pose是很容易分析表示:
f_intr是线性的xn,因此J_f_intr = [fx, s; 0, fy]是一个常数
J_f_persp( Xc ) = [1/Zc, 0, -Xc/Zc²; 0, 1/Zc, -Yc/Zc²]
f_pose是线性的Xw,因此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
同样,这是一阶近似,但是针孔投影函数“不是很非线性”,这意味着对于大多数应用来说,这种近似通常足够接近。