DSO windowed optimization 公式
这里有一个细节,我想了很久才想明白,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 公式的更多相关文章
- DSO windowed optimization 代码 (4)
5 "step"计算 参考<DSO windowed optimization 公式>,计算各个优化变量的增加量. 公式再写一下: \[\begin{align} \b ...
- DSO windowed optimization 代码 (3)
4 Schur Complement 部分信息计算 参考<DSO windowed optimization 公式>,Schur Complement 部分指 Hsc(\(H_{X\rho ...
- DSO windowed optimization 代码 (2)
3 非 Schur Complement 部分信息计算 参考<DSO windowed optimization 公式>,非Schur Complement 部分指 \(H_{XX}\) ...
- DSO windowed optimization 代码 (1)
这里不想解释怎么 marginalize,什么是 First-Estimates Jacobian (FEJ).这里只看看代码,看看Hessian矩阵是怎么构造出来的. 1 优化流程 整个优化过程,也 ...
- Adjoint of SE(3)
以前看的书都提到 SE(3) 和 se(3) 的 Adjoint,但是并没有讲这个东西是干什么用的,只是给了一堆性质.这东西来自群论. 参考 Lie Groups for 2D and 3D Tran ...
- Paper Reading: Stereo DSO
开篇第一篇就写一个paper reading吧,用markdown+vim写东西切换中英文挺麻烦的,有些就偷懒都用英文写了. Stereo DSO: Large-Scale Direct Sparse ...
- Omnidirectional DSO: Direct Sparse Odometry with Fisheye Cameras 论文摘要
1. Abstract 通过一种Unified Omnidirectional Model作为投影方程. 这种方式可以使用图像的所有内容包括有强畸变的区域,而现存的视觉里程计方案只能修正或者切掉来使用 ...
- [CS231n-CNN] Linear classification II, Higher-level representations, image features, Optimization, stochastic gradient descent
课程主页:http://cs231n.stanford.edu/ loss function: -Multiclass SVM loss: 表示实际应该属于的类别的score.因此,可以发现,如果实际 ...
- 在线最优化求解(Online Optimization)之五:FTRL
在线最优化求解(Online Optimization)之五:FTRL 在上一篇博文中中我们从原理上定性比较了L1-FOBOS和L1-RDA在稀疏性上的表现.有实验证明,L1-FOBOS这一类基于梯度 ...
随机推荐
- BZOJ2282 SDOI2011消防/NOIP2007树网的核(二分答案+树形dp)
要求最大值最小容易想到二分答案.首先对每个点求出子树中与其最远的距离是多少,二分答案后就可以标记上一些必须在所选择路径中的点,并且这些点是不应存在祖先关系的.那么如果剩下的点数量>=3,显然该答 ...
- BZOJ3625 [Codeforces Round #250]小朋友和二叉树(生成函数+多项式开根)
设f(n)为权值为n的神犇二叉树个数.考虑如何递推求这个东西. 套路地枚举根节点的左右子树.则f(n)=Σf(i)f(n-i-cj),cj即根的权值.卷积的形式,cj也可以通过卷上一个多项式枚举.可以 ...
- Luogu2264 树上游戏(点分治)
要统计所有路径的信息,那我们考虑点分治,每次算经过分治中心的路径的贡献.然而路径的颜色数量实在是不好统计,既然只需要求从每个点出发的所有路径的颜色数量之和,那换一种思路,改为求从每个点出发包含某种颜色 ...
- MT【29】介绍向量的外积及应用举例
我们在学校教材里学到的数量积(内积)其实还有一个孪生兄弟向量积(外积),这个对参加自主招生以及竞赛的学生来讲是需要掌握的,这里稍作介绍: 原理: 例题: 应用:
- android studio+grade配置构建
Android 构建系统编译应用资源和源代码,然后将它们打包成可供您测试.部署.签署和分发的 APK.android Studio 使用 Gradle 这一高级构建工具包来自动化执行和管理构建流程,同 ...
- 03 Zabbix4.0添加cisco交换机基本监控步骤
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 03 Zabbix4.0添加cisco交换机基本监控步骤 主题监控一台cisco网络设备的6项内容 ...
- 【CF960G】Bandit Blues(第一类斯特林数,FFT)
[CF960G]Bandit Blues(第一类斯特林数,FFT) 题面 洛谷 CF 求前缀最大值有\(a\)个,后缀最大值有\(b\)个的长度为\(n\)的排列个数. 题解 完完全全就是[FJOI] ...
- 前端学习 -- Html&Css -- 条件Hack 和属性Hack
条件Hack 语法: <!--[if <keywords>? IE <version>?]> HTML代码块 <![endif]--> <keyw ...
- C++ 容器:顺序性容器、关联式容器和容器适配器
什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...
- Linux 常用命令——cat, tac, nl, more, less, head, tail, od
Drecik学习经验分享 转载请注明出处:http://blog.csdn.net/drecik__/article/details/8453584 1. cat 由第一行开始显示文件内容 2. ta ...