这里有一个细节,我想了很久才想明白,DSO 中的 residual 联系了两个关键帧之间的相对位姿,但是最终需要优化帧的绝对位姿,中间的导数怎么转换?这里使用的是李群、李代数中的Adjoint。
参考 http://ethaneade.com/lie.pdf

需要变通一下,字母太多,表达不方便。此处 \(\xi\) 表示 se(3) 和 affLight 参数。

Adjoint 在其中的使用如下(根据代码推断,具体数学推导看我的博客《Adjoint of SE(3)》):

\[\begin{align} {\partial r_{th}^{(i)} \over \partial \xi_{h}}^T {\partial r_{th}^{(i)} \over \partial \xi_{h}} &= \left( {\partial r_{th}^{(i)} \over \partial \xi_{th}} {\partial \xi_{th} \over \partial \xi_{h}} \right)^T {\partial r_{th}^{(i)} \over \partial \xi_{th}} {\partial \xi_{th} \over \partial \xi_{h}} \notag \\ &= {\partial \xi_{th} \over \partial \xi_{h}}^T {\partial r_{th}^{(i)} \over \partial \xi_{th}}^T {\partial r_{th}^{(i)} \over \partial \xi_{th}} {\partial \xi_{th} \over \partial \xi_{h}} \notag \\
{\partial \xi_{th} \over \partial \xi_{h}} &= -\text{Ad}_{T_{th}}\notag \\
{\partial \xi_{th} \over \partial \xi_{t}} &= I \notag\end{align}\]

复习一下 Schur Complement:

\[\begin{align} \begin{bmatrix} H_{\rho\rho} & H_{\rho X} \\ H_{X\rho} & H_{XX} \end{bmatrix} \begin{bmatrix} \delta \rho \\ \delta X \end{bmatrix} &= - \begin{bmatrix} J_{\rho}^T r \\ J_X^T r \end{bmatrix} \notag \\
\begin{bmatrix} H_{\rho\rho} & H_{\rho X} \\ 0 & H_{XX} - H_{X\rho} H_{\rho\rho}^{-1} H_{\rho X} \end{bmatrix} \begin{bmatrix} \delta \rho \\ \delta X \end{bmatrix} &= - \begin{bmatrix} J_{\rho}^T r \\ J_X^T r - H_{X\rho} H_{\rho\rho}^{-1} J_{\rho}^T r \end{bmatrix} \notag \end{align}\]

EnergyFuntional::accumulateAF_MT 和 EnergyFunctional::accumulateLF_MT 的目标是计算\(H_{XX}, J_X^T r\),EnergyFunctional::accumulateSCF_MT 的目标是计算\(H_{X\rho} H_{\rho\rho}^{-1} H_{\rho X}, H_{X\rho} H_{\rho\rho}^{-1} J_{\rho}^T r\)。

\(X\)是68维的,4个相机参数加上8*8个帧状态量。就不写出来了。

这里需要注意一下,\(r\)是Nx1,\(\rho\)是Mx1,\(M \le N\),即 residual 的数目与需要优化的逆深度的数目不一定相等。\(J_{\rho}\)是NxM,\(J_X\)是Nx68。

非 Schur Complement 部分

\[H_{XX} = \begin{bmatrix} {\partial r \over \partial C}^T {\partial r \over \partial C} & {\partial r \over \partial C}^T {\partial r \over \partial \xi} \\ {\partial r \over \partial \xi}^T {\partial r \over \partial C} & {\partial r \over \partial \xi}^T {\partial r \over \partial \xi} \end{bmatrix}\]

\[\begin{align} {\partial r \over \partial C}^T {\partial r \over \partial C} &= \begin{bmatrix} {\partial r^{(1)} \over \partial C}^T & {\partial r^{(2)} \over \partial C}^T & \dots & {\partial r^{(N)} \over \partial C}^T \end{bmatrix} \begin{bmatrix} {\partial r^{(1)} \over \partial C} \\ {\partial r^{(2)} \over \partial C} \\ \dots \\ {\partial r^{(N)} \over \partial C} \end{bmatrix} \notag \\ &= \sum_{i=1}^{N} {\partial r^{(i)} \over \partial C}^T{\partial r^{(i)} \over \partial C} \notag \end{align}\]

\[\begin{align} {\partial r \over \partial C}^T {\partial r \over \partial \xi} &= \begin{bmatrix} {\partial r^{(1)} \over \partial C}^T & {\partial r^{(2)} \over \partial C}^T & \dots & {\partial r^{(N)} \over \partial C}^T \end{bmatrix} \begin{bmatrix} {\partial r^{(1)} \over \partial \xi_1} & {\partial r^{(1)} \over \partial \xi_2} & \dots & {\partial r^{(1)} \over \partial \xi_8} \\ {\partial r^{(2)} \over \partial \xi_1} & {\partial r^{(2)} \over \partial \xi_2} & \dots & {\partial r^{(2)} \over \partial \xi_8} \\ \vdots & \vdots & \ddots & \vdots \\ {\partial r^{(N)} \over \partial \xi_1} & {\partial r^{(N)} \over \partial \xi_2} & \dots & {\partial r^{(N)} \over \partial \xi_8} \end{bmatrix} \notag \\ &= \begin{bmatrix} \sum_{i=1}^{N} {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \xi_1} & \sum_{i=1}^{N} {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \xi_2} & \dots & \sum_{i=1}^{N} {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \xi_8} \end{bmatrix} \notag \end{align}\]

\[\begin{align} {\partial r \over \partial \xi}^T {\partial r \over \partial \xi} &= \begin{bmatrix} {\partial r^{(1)} \over \partial \xi_1}^T & {\partial r^{(2)} \over \partial \xi_1}^T & \dots & {\partial r^{(N)} \over \partial \xi_1}^T \\ {\partial r^{(1)} \over \partial \xi_2}^T & {\partial r^{(2)} \over \partial \xi_2}^T & \dots & {\partial r^{(N)} \over \partial \xi_2}^T \\ \vdots & \vdots & \ddots & \vdots \\ {\partial r^{(1)} \over \partial \xi_8}^T & {\partial r^{(2)} \over \partial \xi_8}^T & \dots & {\partial r^{(N)} \over \partial \xi_8}^T \end{bmatrix} \begin{bmatrix} {\partial r^{(1)} \over \partial \xi_1} & {\partial r^{(1)} \over \partial \xi_2} & \dots & {\partial r^{(1)} \over \partial \xi_8} \\ {\partial r^{(2)} \over \partial \xi_1} & {\partial r^{(2)} \over \partial \xi_2} & \dots & {\partial r^{(2)} \over \partial \xi_8} \\ \vdots & \vdots & \ddots & \vdots \\ {\partial r^{(N)} \over \partial \xi_1} & {\partial r^{(N)} \over \partial \xi_2} & \dots & {\partial r^{(N)} \over \partial \xi_8} \end{bmatrix} \notag \\
&= \begin{bmatrix} \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T{\partial r^{(i)} \over \partial \xi_1} & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T{\partial r^{(i)} \over \partial \xi_2} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T{\partial r^{(i)} \over \partial \xi_8} \\ \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T{\partial r^{(i)} \over \partial \xi_1} & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T{\partial r^{(i)} \over \partial \xi_2} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T{\partial r^{(i)} \over \partial \xi_8} \\ \vdots & \vdots & \ddots & \vdots \\ \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T{\partial r^{(i)} \over \partial \xi_1} & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T{\partial r^{(i)} \over \partial \xi_2} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T{\partial r^{(i)} \over \partial \xi_8} \end{bmatrix} \notag \end{align}\]

\[\begin{align} J_{X}^Tr &= \begin{bmatrix} {\partial r \over \partial C}^T \\ {\partial r \over \partial \xi}^T \end{bmatrix} r \notag \\ &= \begin{bmatrix} {\partial r^{(1)} \over \partial C}^T & {\partial r^{(2)} \over \partial C}^T & \dots & {\partial r^{(N)} \over \partial C}^T \\ {\partial r^{(1)} \over \partial \xi_1}^T & {\partial r^{(2)} \over \partial \xi_1}^T & \dots & {\partial r^{(N)} \over \partial \xi_1}^T \\ {\partial r^{(1)} \over \partial \xi_2}^T & {\partial r^{(2)} \over \partial \xi_2}^T & \dots & {\partial r^{(N)} \over \partial \xi_2}^T \\ \vdots & \vdots & \ddots & \vdots \\ {\partial r^{(1)} \over \partial \xi_8}^T & {\partial r^{(2)} \over \partial \xi_8}^T & \dots & {\partial r^{(N)} \over \partial \xi_8}^T \end{bmatrix} \begin{bmatrix} r^{(1)} \\ r^{(2)} \\ \vdots \\ r^{(N)}\end{bmatrix} \notag \\
&= \begin{bmatrix} \sum_{i = 1}^{N} {\partial r^{(i)} \over \partial C}^T r^{(i)} \\ \sum_{i = 1}^{N} {\partial r^{(i)} \over \partial \xi_1}^T r^{(i)} \\ \sum_{i = 1}^{N} {\partial r^{(i)} \over \partial \xi_2}^T r^{(i)} \\ \vdots \\ \sum_{i = 1}^{N} {\partial r^{(i)} \over \partial \xi_8}^T r^{(i)} \end{bmatrix} \notag \end{align}\]

所以算这些矩阵就是遍历每一个 residual,累加求和。

Schur Complement 部分

\[\begin{align} \begin{bmatrix} H_{\rho\rho} & H_{\rho X} \\ H_{X\rho} & H_{XX} \end{bmatrix} \begin{bmatrix} \delta \rho \\ \delta X \end{bmatrix} &= - \begin{bmatrix} J_{\rho}^T r \\ J_X^T r \end{bmatrix} \notag \\
\begin{bmatrix} H_{\rho\rho} & H_{\rho X} \\ 0 & H_{XX} - H_{X\rho} H_{\rho\rho}^{-1} H_{\rho X} \end{bmatrix} \begin{bmatrix} \delta \rho \\ \delta X \end{bmatrix} &= - \begin{bmatrix} J_{\rho}^T r \\ J_X^T r - H_{X\rho} H_{\rho\rho}^{-1} J_{\rho}^T r \end{bmatrix} \notag \end{align}\]

Hsc:
\[H_{X\rho} H_{\rho\rho}^{-1} H_{\rho X}\]
bsc:
\[H_{X\rho} H_{\rho\rho}^{-1} J_{\rho}^T r\]

\[\begin{align} J_\rho^TJ_\rho &= {\partial r \over \partial \rho}^T {\partial r \over \partial \rho} \notag \\
&= \begin{bmatrix} {\partial r^{(1)} \over \partial \rho^{(1)}}^T & {\partial r^{(2)} \over \partial \rho^{(1)}}^T & \dots & {\partial r^{(N)} \over \partial \rho^{(1)}}^T \\ {\partial r^{(1)} \over \partial \rho^{(2)}}^T & {\partial r^{(2)} \over \partial \rho^{(2)}}^T & \dots & {\partial r^{(N)} \over \partial \rho^{(2)}}^T \\ \vdots & \vdots & \ddots & \vdots \\ {\partial r^{(1)} \over \partial \rho^{(M)}}^T & {\partial r^{(2)} \over \partial \rho^{(M)}}^T & \dots & {\partial r^{(N)} \over \partial \rho^{(M)}}^T \end{bmatrix} \begin{bmatrix} {\partial r^{(1)} \over \partial \rho^{(1)}} & {\partial r^{(1)} \over \partial \rho^{(2)}} & \dots & {\partial r^{(1)} \over \partial \rho^{(M)}} \\ {\partial r^{(2)} \over \partial \rho^{(1)}} & {\partial r^{(2)} \over \partial \rho^{(2)}} & \dots & {\partial r^{(2)} \over \partial \rho^{(M)}} \\ \vdots & \vdots & \ddots & \vdots \\ {\partial r^{(N)} \over \partial \rho^{(1)}} & {\partial r^{(N)} \over \partial \rho^{(2)}} & \dots & {\partial r^{(N)} \over \partial \rho^{(M)}} \end{bmatrix} \notag \\
&= \begin{bmatrix} \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} & \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \\ \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} & \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \\ \vdots & \vdots & \ddots & \vdots \\ \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} & \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \end{bmatrix} \notag \\
&= \begin{bmatrix} \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} & 0 & \dots & 0 \\ 0 & \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \end{bmatrix} \notag \end{align}\]

\[ \begin{align} {\partial r \over \partial C}^T {\partial r \over \partial \rho} &= \begin{bmatrix} {\partial r^{(1)} \over \partial C}^T & {\partial r^{(2)} \over \partial C}^T & \dots & {\partial r^{(N)} \over \partial C}^T\end{bmatrix} \begin{bmatrix} {\partial r^{(1)} \over \partial \rho^{(1)}} & {\partial r^{(1)} \over \partial \rho^{(2)}} & \dots & {\partial r^{(1)} \over \partial \rho^{(M)}} \\ {\partial r^{(2)} \over \partial \rho^{(1)}} & {\partial r^{(2)} \over \partial \rho^{(2)}} & \dots & {\partial r^{(2)} \over \partial \rho^{(M)}} \\ \vdots & \vdots & \ddots & \vdots \\ {\partial r^{(N)} \over \partial \rho^{(1)}} & {\partial r^{(N)} \over \partial \rho^{(2)}} & \dots & {\partial r^{(N)} \over \partial \rho^{(M)}} \end{bmatrix} \notag \\ &= \begin{bmatrix} \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(1)}} & \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(2)}} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \end{bmatrix} \notag \end{align} \]

\[\begin{align} {\partial r \over \partial \xi}^T {\partial r \over \partial \rho} &= \begin{bmatrix} {\partial r^{(1)} \over \partial \xi_1}^T & {\partial r^{(2)} \over \partial \xi_1}^T & \dots & {\partial r^{(N)} \over \partial \xi_1}^T \\ {\partial r^{(1)} \over \partial \xi_2}^T & {\partial r^{(2)} \over \partial \xi_2}^T & \dots & {\partial r^{(N)} \over \partial \xi_2}^T \\ \vdots & \vdots & \ddots & \vdots \\ {\partial r^{(1)} \over \partial \xi_8}^T & {\partial r^{(2)} \over \partial \xi_8}^T & \dots & {\partial r^{(N)} \over \partial \xi_8}^T \end{bmatrix} \begin{bmatrix} {\partial r^{(1)} \over \partial \rho^{(1)}} & {\partial r^{(1)} \over \partial \rho^{(2)}} & \dots & {\partial r^{(1)} \over \partial \rho^{(M)}} \\ {\partial r^{(2)} \over \partial \rho^{(1)}} & {\partial r^{(2)} \over \partial \rho^{(2)}} & \dots & {\partial r^{(2)} \over \partial \rho^{(M)}} \\ \vdots & \vdots & \ddots & \vdots \\ {\partial r^{(N)} \over \partial \rho^{(1)}} & {\partial r^{(N)} \over \partial \rho^{(2)}} & \dots & {\partial r^{(N)} \over \partial \rho^{(M)}} \end{bmatrix} \notag \\
&= \begin{bmatrix} \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(1)}} & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(2)}} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \\ \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T {\partial r^{(i)} \over \partial \rho^{(1)}} & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T {\partial r^{(i)} \over \partial \rho^{(2)}} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \\ \vdots & \vdots & \ddots & \vdots \\ \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(1)}} & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(2)}} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \end{bmatrix} \notag \end{align}\]

\[\begin{align} H_{X\rho} H_{\rho\rho}^{-1} H_{\rho X} &= J_X^T J_\rho (J_\rho^TJ_\rho)^{-1} J_\rho^T J_X \notag \\
&= \begin{bmatrix} {\partial r \over \partial C}^T \\ {\partial r \over \partial \xi}^T \end{bmatrix} {\partial r \over \partial \rho} \left( {\partial r \over \partial \rho}^T {\partial r \over \partial \rho} \right)^{-1} {\partial r \over \partial \rho}^T \begin{bmatrix} {\partial r \over \partial C} & {\partial r \over \partial \xi} \end{bmatrix} \notag \\
&= \begin{bmatrix} {\partial r \over \partial C}^T {\partial r \over \partial \rho} \\ {\partial r \over \partial \xi}^T {\partial r \over \partial \rho} \end{bmatrix} \begin{bmatrix} \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} \right)^{-1} & 0 & \dots & 0 \\ 0 & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} \right)^{-1} & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \right)^{-1} \end{bmatrix} \notag \\ & \begin{bmatrix} {\partial r \over \partial \rho}^T {\partial r \over \partial C} & {\partial r \over \partial \rho}^T {\partial r \over \partial \xi} \end{bmatrix} \notag \\
&= \begin{bmatrix} \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(1)}} & \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(2)}} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \\ \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(1)}} & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(2)}} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \\ \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T {\partial r^{(i)} \over \partial \rho^{(1)}} & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T {\partial r^{(i)} \over \partial \rho^{(2)}} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \\ \vdots & \vdots & \ddots & \vdots \\ \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(1)}} & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(2)}} & \dots & \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \end{bmatrix} \notag \\
&\begin{bmatrix} \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} \right)^{-1} & 0 & \dots & 0 \\ 0 & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} \right)^{-1} & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \right)^{-1} \end{bmatrix} \notag \\
&\begin{bmatrix} \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right)^T & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right)^T & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right)^T \\ \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right)^T & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right)^T & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right)^T \\ \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(3)}} \right)^T & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(3)}} \right)^T & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(3)}} \right)^T \\
\vdots & \vdots & \ddots & \vdots \\ \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right)^T & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right)^T & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right)^T \end{bmatrix} \notag \\
&= \begin{bmatrix} \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right)\left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} \right)^{-1} & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} \right)^{-1} & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \right)^{-1} \\ \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} \right)^{-1} & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} \right)^{-1} & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \right)^{-1} \\ \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} \right)^{-1} & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} \right)^{-1} & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \right)^{-1} \\ \vdots & \vdots & \ddots & \vdots \\ \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} \right)^{-1} & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} \right)^{-1} & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \right)^{-1} \end{bmatrix} \notag \\
&\begin{bmatrix} \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right)^T & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right)^T & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right)^T \\ \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right)^T & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right)^T & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right)^T \\ \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(3)}} \right)^T & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(3)}} \right)^T & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(3)}} \right)^T \\
\vdots & \vdots & \ddots & \vdots \\ \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right)^T & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right)^T & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right)^T \end{bmatrix}\notag \end{align}\]

同理
\[\begin{align} H_{X\rho} H_{\rho\rho}^{-1} J_\rho^T r \notag & = \notag \begin{bmatrix} \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right)\left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} \right)^{-1} & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} \right)^{-1} & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial C}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \right)^{-1} \\ \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} \right)^{-1} & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} \right)^{-1} & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_1}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \right)^{-1} \\ \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} \right)^{-1} & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} \right)^{-1} & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_2}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \right)^{-1} \\ \vdots & \vdots & \ddots & \vdots \\ \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(1)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T{\partial r^{(i)} \over \partial \rho^{(1)}} \right)^{-1} & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(2)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T{\partial r^{(i)} \over \partial \rho^{(2)}} \right)^{-1} & \dots & \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \xi_8}^T {\partial r^{(i)} \over \partial \rho^{(M)}} \right) \left( \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T{\partial r^{(i)} \over \partial \rho^{(M)}} \right)^{-1} \end{bmatrix} \notag \\
& \begin{bmatrix} \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(1)}}^T r^{(i)} \\ \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(2)}}^T r^{(i)} \\
\vdots \\ \sum_{i=1}^N {\partial r^{(i)} \over \partial \rho^{(M)}}^T r^{(i)} \end{bmatrix} \end{align}\]

DSO windowed optimization 公式的更多相关文章

  1. DSO windowed optimization 代码 (4)

    5 "step"计算 参考<DSO windowed optimization 公式>,计算各个优化变量的增加量. 公式再写一下: \[\begin{align} \b ...

  2. DSO windowed optimization 代码 (3)

    4 Schur Complement 部分信息计算 参考<DSO windowed optimization 公式>,Schur Complement 部分指 Hsc(\(H_{X\rho ...

  3. DSO windowed optimization 代码 (2)

    3 非 Schur Complement 部分信息计算 参考<DSO windowed optimization 公式>,非Schur Complement 部分指 \(H_{XX}\) ...

  4. DSO windowed optimization 代码 (1)

    这里不想解释怎么 marginalize,什么是 First-Estimates Jacobian (FEJ).这里只看看代码,看看Hessian矩阵是怎么构造出来的. 1 优化流程 整个优化过程,也 ...

  5. Adjoint of SE(3)

    以前看的书都提到 SE(3) 和 se(3) 的 Adjoint,但是并没有讲这个东西是干什么用的,只是给了一堆性质.这东西来自群论. 参考 Lie Groups for 2D and 3D Tran ...

  6. Paper Reading: Stereo DSO

    开篇第一篇就写一个paper reading吧,用markdown+vim写东西切换中英文挺麻烦的,有些就偷懒都用英文写了. Stereo DSO: Large-Scale Direct Sparse ...

  7. Omnidirectional DSO: Direct Sparse Odometry with Fisheye Cameras 论文摘要

    1. Abstract 通过一种Unified Omnidirectional Model作为投影方程. 这种方式可以使用图像的所有内容包括有强畸变的区域,而现存的视觉里程计方案只能修正或者切掉来使用 ...

  8. [CS231n-CNN] Linear classification II, Higher-level representations, image features, Optimization, stochastic gradient descent

    课程主页:http://cs231n.stanford.edu/ loss function: -Multiclass SVM loss: 表示实际应该属于的类别的score.因此,可以发现,如果实际 ...

  9. 在线最优化求解(Online Optimization)之五:FTRL

    在线最优化求解(Online Optimization)之五:FTRL 在上一篇博文中中我们从原理上定性比较了L1-FOBOS和L1-RDA在稀疏性上的表现.有实验证明,L1-FOBOS这一类基于梯度 ...

随机推荐

  1. mysql format函数对数字类型转化的坑

    原值param = 1234.5678 format(param, 2) (不建议)      结果,字符串类型,123,4.57  会导致你图表char 生成失败,直接变0 convert(para ...

  2. MT【241】红蓝两色染色

    用红蓝两色给$3*3$的格子染色,要求每行每列每种颜色都有,则不同的染色方法_____ 分析:按红色格子数分类,1)红色3或者6个有6种.2)红色4或者5个有45种.故一共有2*(6+45)=102种 ...

  3. MT【20】一道三次函数的难题

    评:这道题由于系数弄得不是很好,涉及的难度为联赛一试+难度.中间用到了$Sturm$定理,还涉及到一些代 数变形技巧,最后一个求关于$m$的三次方程又涉及到三次方程的求法.一个小时讲这一道题也不为过.

  4. 删除linux下的指定文件

    要求:删除linux下2天前的指定文件 find 文件问题:在 tmp 目录下有大量包含 picture_* 的临时文件,每天晚上 2:00 对一天前的文件进行清理.之前在 crontab 下跑如下脚 ...

  5. 关于Hive中常用函数需要注意的点小合集

    1.COALESCE( value1,value2,... ) The COALESCE function returns the fist not NULL value from the list ...

  6. CF1114D Flood Fill(DP)

    题目链接:CF原网 题目大意:$n$ 个方块排成一排,第 $i$ 个颜色为 $c_i$.定义一个颜色联通块 $[l,r]$ 当且仅当 $l$ 和 $r$ 之间(包括 $l,r$)所有方块的颜色相同.现 ...

  7. 最长公共子序列LCS(POJ1458)

    转载自:https://www.cnblogs.com/huashanqingzhu/p/7423745.html 题目链接:http://poj.org/problem?id=1458 题目大意:给 ...

  8. gcc编译器命令使用详解

    1.gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什么意思:))一般c程序就用gcc编译,c++程序就用g++编译 ...

  9. Linux安装aMule下载eDonkey200网络共享文件

    安装aMule 如果你的发行版本包管理器中包含amule和amule-daemon可以直接安装. 如果不包含需要在编译的Configure过程添加参数以包含amulecmd和amuled:./conf ...

  10. EXGCD 扩展欧几里得

    推荐:https://www.zybuluo.com/samzhang/note/541890 扩展欧几里得,就是求出来ax+by=gcd(x,y)的x,y 为什么有解? 根据裴蜀定理,存在u,v使得 ...