这里有一个细节,我想了很久才想明白,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. BZOJ1222[HNOI2001]产品加工——DP

    题目描述 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工 ...

  2. Linux开机自动挂载存储的两种方式

    登录服务器,给查看了下,发现确实是没有自动加载,df -h只能显示本地硬盘的分区,fdisk -l 还是能看到存储空间,这说明这个服务器连接存储是木有问题的. 输入history | grep mou ...

  3. MT【242】图像几何意义

    设函数$f(x)=x^2+ax+b$,已知函数$f(x)$在$[-1,1]$上存在零点,若$0\le b-2a\le 1$,求$b$的范围 (2015浙江文科高考20(2)) 分析:理解成$g(x)= ...

  4. INSTALL_FAILED_INSUFFICIENT_STORAGE 的解决方法

    今天用真机测试,出现了下面的情况 , 网上找了好多情况 , 都感觉比较费事,没什么效果,报错依旧, [2013-08-06 16:31:04 - Flashlight] Installation er ...

  5. android 面试准备基础题

    1.    请描述下Activity的生命周期. 必调用的三个方法:onCreate() --> onStart() --> onResume(),用AAA表示 )父Activity启动子 ...

  6. NodeJS - Express 4.0错误:Cannot read property 'Store' of undefined

    按着<NodeJS开发指南>里的第五章建立microblog的例子操作,使用node.js 的express框架配置将session存储到mongodb时出错:TypeError: Can ...

  7. ->2018.06 计划

    2018.4.14->2018.06计划 力求掌握以下几种算法: 树链剖分 网络流 主席树 splay 莫队

  8. 【POJ1015】Jury compromise 多个费用的背包

    这是一道比较综合的动态规划问题. 首先,根据题目中的从N个人中选出M个人,并且要使得某个目标函数最优,可以想到是背包问题,且因为要取出M个人,人数也应该作为背包体积的一个维度. 其次,要求输出路径,因 ...

  9. (转)git中关于fetch的使用

    将远程仓库的分支及分支最新版本代码拉取到本地: 命令:git fetch 该命令执行后,不会将拉取的分支的最新代码合并到当前分支,仅仅是拉取/下载下来到本地仓库中. 首先,我们使用git branch ...

  10. react中跨域请求天气预报接口数据

    背景故事:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能, 如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上 ...