DSO窗口优化详解:变量与结构解析

2 下载量 118 浏览量 更新于2024-08-29 收藏 119KB PDF 举报
"这篇文档详细介绍了DSO(Visual SLAM的一种方法)中的窗口优化机制,涉及到关键帧管理、变量定义、优化过程以及误差计算等多个核心概念。" 在DSO(Direct Sparse Odometry)中,窗口优化是实现实时、高精度视觉定位的关键步骤。窗口优化涉及对一系列关键帧的数据进行处理,通过最小化误差函数来不断更新和优化相机的位姿估计,从而提高SLAM系统的稳定性。 首先,`EnergyFunction`是整个优化问题的核心,它持有前端的`keyframes`,这些关键帧包含了大量的特征点及其对应测量值。`HM`和`bM`存储了边缘化之后的先验信息,用于后续的优化计算。`adHost`和`adTarget`则涉及到了向量空间的矩阵伴随操作,它们用于将坐标变换到相应的参考系中。`adHTdeltaF`则是通过伴随运算将host和target的增量变化映射到特定坐标变换下。 在DSO中,`FrameHessian`是用于描述帧间几何关系的矩阵,其中的`ζ0`代表线性化的点,`x0`是margin时刻的增量,而`xxx`表示k时刻的增量。`worldToCam_evalPT`表示经过帧跟踪后的相机位姿,同时也是FEJ的线性化点。`state`和`state_scale`是包含了尺度信息的相机状态,`PRE_worldToCam`是在LM(Levenberg-Marquardt)迭代中用到的变量,包含了线性化点加上增量信息。`state_zero`是初始状态,`get_state_minus_stateZero()`返回的是在线性化方向上的增量。 `dIp`和`dI`分别存储了不同层图像的灰度值和梯度信息,这对于计算残差至关重要。`step`和`step_backup`是优化过程中使用的变量,记录了每次迭代的更新量。`delta`表示当前状态与初始状态的差异。 `FrameFramePrecalc`结构体中,`PRE_RTll`和`PRE_tTll`是相对位姿,用于计算相邻帧之间的变换;`PRE_RTll_0`和`PRE_RTll_0`则是线性化点对应的相对位姿;`PRE_KRKiTll`和`PRE_RKiTll`是校正后的内参矩阵与相对位姿的乘积。 在残差计算部分,`Residual`节点的状态由`state_state`表示,`state_NewState`则记录了优化后的新状态。`isActiveAndIsGoodNEW`函数检查误差是否低于阈值,决定是否将该节点视为有效。`isLinearized`标记了节点是否已经经过线性化。`JpJdF`是Hessian矩阵的一部分,`centerProjectedTo`和`projectedTo`用于计算特征点在不同帧中的投影位置,`RawResidualJacobia`则是原始的残差雅可比矩阵,用于误差反向传播。 窗口优化的整个流程包括选择关键帧、构建优化图、线性化误差函数、执行LM算法求解最小化问题以及更新系统状态等步骤。这一系列操作保证了DSO在动态环境中能快速适应并保持稳定。
2012-10-06 上传
定义   A的伴随矩阵可按如下步骤定义:   1.把A的每个元素都换成它的代数余子式;   (代数余子式定义:在一个n级行列式D中,把元素第i行第j列元素aij (i,j=1,2,.....n)所在的行与列划去后,剩下   的(n-1)^2个元素按照原来的次序组成的一个n-1阶行列式Mij,称为元素aij的余子式,Mij带上符号(-1)^(i+j)称   为aij的代数余子式,记作Aij=(-1)^(i+j) Mij. )   2.将所得到的矩阵转置便得到A的伴随矩阵,   即: n阶方阵的伴随矩阵A*为   A11 A21 A31....An1   A12.................. An2   A13 ..................An3   .... .....   A1n................ Ann   例如:A是一个2x2矩阵,   a11,a12   a21,a22   则A的伴随矩阵 A* 为   a11,-a12   -a21, a22    (余子式定义:A关于第i 行第j 列的余子式(记作Mij)是去掉A的第i行第j列之后得到的(m -1)×(n - 1)矩阵的行列式。特殊规定:一阶矩阵的伴随矩阵为一阶单位方阵)   伴随矩阵的性质:   原矩阵中的值与伴随矩阵中的值一一映射,例如   1 2 3   2 2 1 ------->   3 4 3   +2 6 -4   -3 -6 5   2 2 -2   其中1对应5 ;2 2 对应-3; 3对应2; 等等   伴随矩阵的求法:   ① 当矩阵是大于等于二阶时:   主对角元素是将原矩阵该元素所在行列去掉再求行列式.   非主对角元素 是原矩阵该元素的共轭位置的元素去掉所在行列求行列式乘以(-1)^(x+y) x,y为该元素的共轭位置的元素的行和列的序号,序号从1开始的.   主对角元素实际上是非主对角元素的特殊情况,因为x=y,所以(-1)^(x+y)=(-1)^(2x)=1,一直是正数,没必要考虑主对角元素的符号问题。   常用的可以记一下:   a b   —— 1/(ad-bc) (d -c c d -b a)   ②当矩阵的阶数等于一阶时,他的伴随矩阵为一阶单位方阵.   3.二阶矩阵的求法口诀:主对角线对换,副对角线符号相反