(转载请注明出处)
这几篇笔记打算对Bundle Adjustment问题的数学描述进行深入探讨。主要是对利用非线性最小二乘(Gauss-Newton法和Levenberg-Marquardt法等)对该问题进行迭代求解时,其增量方程的形式进行剖析,分析稀疏BA的由来。
对BA问题采用由特殊(典型视觉BA问题)到一般(general最小二乘问题)再到特殊(VIO中的BA)的顺序进行分析。
本篇首先介绍典型视觉BA问题。
场景如下:假设有3帧图像对应的相机状态({{f{x}}_{ci}})((i = 1,2,3)),以及4个地图点坐标({{f{x}}_{pj}})((j=1,2,3,4)),先不管某帧图像是否对某个地图点有观测,我们暂时认为所有帧都可能观测到所有地图点,后面再来分析当每帧只观测到部分特征点时的情况(这将带来额外的稀疏性)。
此时,BA问题用数学描述如下$$
ag{1}label{1}
min mathop {arg }limits_{f{x}} sumlimits_{i = 1}^3 {sumlimits_{j = 1}^4 {left| {{{f{z}}{ij}} - pmb{pi} left( {{{f{x}}{ci}},{{f{x}}{fj}}}
ight)}
ight|{{{pmb{Omega }}_{ij}}}^2} }
ag{2}label{2}
{{f{r}}{ij}} = {{f{z}}{ij}} - pmb{pi} left( {{{f{x}}{ci}},{{f{x}}{fj}}}
ight)
ag{3}label{3}
egin{array}{l}
sumlimits_{i = 1}^3 {sumlimits_{j = 1}^4 {left| {{{f{z}}{ij}} - pmb{pi} left( {{{f{x}}{ci}},{{f{x}}{fj}}}
ight)}
ight|{{{pmb{Omega }}{ij}}}^2} }
= sumlimits{i = 1}^3 {sumlimits_{j = 1}^4 {left| {{{f{r}}{ij}}}
ight|{{{pmb{Omega }}_{ij}}}^2} }
end{array}
ag{4}label{4}
f{f} = {f{f}}left( {f{x}}
ight) = {left[ {egin{array}{*{20}{c}}
{{f{r}}{11}^T}& cdots &{{f{r}}{14}^T}&{ cdots cdots }&{{f{r}}{31}^T}& cdots &{{f{r}}{34}^T}
end{array}}
ight]^T}
ag{5}label{5}
{pmb{Omega }} = left[ {egin{array}{*{20}{c}}
{{{pmb{Omega }}{11}}}&{f{0}}&{}& cdots &{}&{}&{f{0}}
{f{0}}& ddots &{}&{}&{}&{}&{}
{}&{}&{{{pmb{Omega }}{14}}}&{}&{}&{}&{}
vdots &{}&{}& ddots &{}&{}& vdots
{}&{}&{}&{}&{{{pmb{Omega }}{31}}}&{}&{}
{}&{}&{}&{}&{}& ddots &{f{0}}
{f{0}}&{}&{}& cdots &{}&{f{0}}&{{{pmb{Omega }}{34}}}
end{array}}
ight]
ag{6}label{6}
egin{array}{l}
sumlimits_{i = 1}^3 {sumlimits_{j = 1}^4 {left| {{{f{r}}{ij}}}
ight|{{{pmb{Omega }}{ij}}}^2} }
= sumlimits{i = 1}^3 {sumlimits_{j = 1}^4 {{f{r}}{ij}^T{{pmb{Omega }}{ij}}{{f{r}}{ij}}} }
= {{f{f}}^T}{pmb{Omega}}{f{f}}
= left| {f{f}}
ight|{pmb{Omega }}^2
end{array}
ag{7}label{7}
min mathop {arg }limits_{f{x}} left| {{f{f}}left( {f{x}}
ight)}
ight|_{pmb{Omega }}^2
ag{8}label{8}
{{f{x}}^ + } = {{f{x}}^ - } oplus delta {f{x}}
ag{9}label{9}
egin{array}{l}
{f{f}}left( {{{f{x}}^ + }}
ight)
= {f{f}}left( {{{f{x}}^ - } oplus delta {f{x}}}
ight)
approx {f{f}}left( {{{f{x}}^ - }}
ight) + {f{J}}delta {f{x}}
end{array}
ag{10}label{10}
egin{array}{l}
{left( {{f{e}} + {f{J}}delta {f{x}}}
ight)^T}{pmb{Omega }}left( {{f{e}} + {f{J}}delta {f{x}}}
ight)
= {{f{e}}^T}{pmb{Omega}f{e}} + 2{{f{e}}^T}{pmb{Omega}f{J}}delta {f{x}} + delta {{f{x}}T}{{f{J}}T}{pmb{Omega}f{J}}delta {f{x}}
end{array}
ag{11}label{11}
{{f{J}}^T}{pmb{Omega}f{J}}delta {f{x}} = - {{f{J}}^T}{pmb{Omega}f{e}}
ag{12}label{12}
{f{J}} = left[ {egin{array}{*{20}{c}}
{{{f{A}}{11}}}&{f{0}}&{f{0}}&{{{f{B}}{11}}}&{f{0}}&{f{0}}&{f{0}}
{{{f{A}}{12}}}&{f{0}}&{f{0}}&{f{0}}&{{{f{B}}{12}}}&{f{0}}&{f{0}}
{{{f{A}}{13}}}&{f{0}}&{f{0}}&{f{0}}&{f{0}}&{{{f{B}}{13}}}&{f{0}}
{{{f{A}}{14}}}&{f{0}}&{f{0}}&{f{0}}&{f{0}}&{f{0}}&{{{f{B}}{14}}}
{f{0}}&{{{f{A}}{21}}}&{f{0}}&{{{f{B}}{21}}}&{f{0}}&{f{0}}&{f{0}}
{f{0}}&{{{f{A}}{22}}}&{f{0}}&{f{0}}&{{{f{B}}{22}}}&{f{0}}&{f{0}}
{f{0}}&{{{f{A}}{23}}}&{f{0}}&{f{0}}&{f{0}}&{{{f{B}}{23}}}&{f{0}}
{f{0}}&{{{f{A}}{24}}}&{f{0}}&{f{0}}&{f{0}}&{f{0}}&{{{f{B}}{24}}}
{f{0}}&{f{0}}&{{{f{A}}{31}}}&{{{f{B}}{31}}}&{f{0}}&{f{0}}&{f{0}}
{f{0}}&{f{0}}&{{{f{A}}{32}}}&{f{0}}&{{{f{B}}{32}}}&{f{0}}&{f{0}}
{f{0}}&{f{0}}&{{{f{A}}{33}}}&{f{0}}&{f{0}}&{{{f{B}}{33}}}&{f{0}}
{f{0}}&{f{0}}&{{{f{A}}{34}}}&{f{0}}&{f{0}}&{f{0}}&{{{f{B}}{34}}}
end{array}}
ight]
ag{13}label{13}
{f{H}}delta {f{x}} = - {f{d}}
ag{14}label{14}
{f{H}} = {{f{J}}^T}{pmb{Omega}f{J}} = left[ {egin{array}{*{20}{c}}
{sumlimits_{j = 1}^4 {{f{A}}{1j}^T{{pmb{Omega }}{1j}}{{f{A}}{1j}}} }&{f{0}}&{f{0}}&{{f{A}}{11}^T{{pmb{Omega }}{11}}{{f{B}}{11}}}&{{f{A}}{12}^T{{pmb{Omega }}{12}}{{f{B}}{12}}}&{{f{A}}{13}^T{{pmb{Omega }}{13}}{{f{B}}{13}}}&{{f{A}}{14}^T{{pmb{Omega }}{14}}{{f{B}}{14}}}
{f{0}}&{sumlimits{j = 1}^4 {{f{A}}{2j}^T{{pmb{Omega }}{2j}}{{f{A}}{2j}}} }&{f{0}}&{{f{A}}{21}^T{{pmb{Omega }}{21}}{{f{B}}{21}}}&{{f{A}}{22}^T{{pmb{Omega }}{22}}{{f{B}}{22}}}&{{f{A}}{23}^T{{pmb{Omega }}{23}}{{f{B}}{23}}}&{{f{A}}{24}^T{{pmb{Omega }}{24}}{{f{B}}{24}}}
{f{0}}&{f{0}}&{sumlimits{j = 1}^4 {{f{A}}{3j}^T{{pmb{Omega }}{3j}}{{f{A}}{3j}}} }&{{f{A}}{31}^T{{pmb{Omega }}{31}}{{f{B}}{31}}}&{{f{A}}{32}^T{{pmb{Omega }}{32}}{{f{B}}{32}}}&{{f{A}}{33}^T{{pmb{Omega }}{33}}{{f{B}}{33}}}&{{f{A}}{34}^T{{pmb{Omega }}{34}}{{f{B}}{34}}}
{{f{B}}{11}^T{{pmb{Omega }}{11}}{{f{A}}{11}}}&{{f{B}}{21}^T{{pmb{Omega }}{21}}{{f{A}}{21}}}&{{f{B}}{31}^T{{pmb{Omega }}{31}}{{f{A}}{31}}}&{sumlimits_{i = 1}^3 {{f{B}}{i1}^T{{pmb{Omega }}{i1}}{{f{B}}{i1}}} }&{f{0}}&{f{0}}&{f{0}}
{{f{B}}{12}^T{{pmb{Omega }}{12}}{{f{A}}{12}}}&{{f{B}}{22}^T{{pmb{Omega }}{22}}{{f{A}}{22}}}&{{f{B}}{32}^T{{pmb{Omega }}{32}}{{f{A}}{32}}}&{f{0}}&{sumlimits_{i = 1}^3 {{f{B}}{i2}^T{{pmb{Omega }}{i2}}{{f{B}}{i2}}} }&{f{0}}&{f{0}}
{{f{B}}{13}^T{{pmb{Omega }}{13}}{{f{A}}{13}}}&{{f{B}}{23}^T{{pmb{Omega }}{23}}{{f{A}}{23}}}&{{f{B}}{33}^T{{pmb{Omega }}{33}}{{f{A}}{33}}}&{f{0}}&{f{0}}&{sumlimits_{i = 1}^3 {{f{B}}{i3}^T{{pmb{Omega }}{i3}}{{f{B}}{i3}}} }&{f{0}}
{{f{B}}{14}^T{{pmb{Omega }}{14}}{{f{A}}{14}}}&{{f{B}}{24}^T{{pmb{Omega }}{24}}{{f{A}}{24}}}&{{f{B}}{34}^T{{pmb{Omega }}{34}}{{f{A}}{34}}}&{f{0}}&{f{0}}&{f{0}}&{sumlimits_{i = 1}^3 {{f{B}}{i4}^T{{pmb{Omega }}{i4}}{{f{B}}_{i4}}} }
end{array}}
ight]
ag{15}label{15}
{f{d}} = left[ {egin{array}{*{20}{c}}
{sumlimits_{j = 1}^4 {{f{A}}{1j}^T{{pmb{Omega }}{1j}}{f{r}}{1j}^ - } }
{sumlimits{j = 1}^4 {{f{A}}{2j}^T{{pmb{Omega }}{2j}}{f{r}}{2j}^ - } }
{sumlimits{j = 1}^4 {{f{A}}{3j}^T{{pmb{Omega }}{3j}}{f{r}}{3j}^ - } }
{sumlimits{i = 1}^3 {{f{B}}{i1}^T{{pmb{Omega }}{i1}}{f{r}}{i1}^ - } }
{sumlimits{i = 1}^3 {{f{B}}{i2}^T{{pmb{Omega }}{i2}}{f{r}}{i2}^ - } }
{sumlimits{i = 1}^3 {{f{B}}{i3}^T{{pmb{Omega }}{i3}}{f{r}}{i3}^ - } }
{sumlimits{i = 1}^3 {{f{B}}{i4}^T{{pmb{Omega }}{i4}}{f{r}}_{i4}^ - } }
end{array}}
ight]
ag{16}label{16}
left[ {egin{array}{{20}{c}}
{f{U}}&{f{W}}
{{{f{W}}^T}}&{f{V}}
end{array}}
ight]left[ {egin{array}{{20}{c}}
{delta {{f{x}}_c}}
{delta {{f{x}}_p}}
end{array}}
ight] = - left[ {egin{array}{*{20}{c}}
{f{u}}
{f{v}}
end{array}}
ight]
ag{17}label{17}
egin{array}{l}
{f{U}} = left[ {egin{array}{{20}{c}}
{{{f{U}}_1}}&{f{0}}&{f{0}}
{f{0}}&{{{f{U}}_2}}&{f{0}}
{f{0}}&{f{0}}&{{{f{U}}_3}}
end{array}}
ight]
= left[ {egin{array}{{20}{c}}
{sumlimits_{j = 1}^4 {{f{A}}{1j}^T{{pmb{Omega }}{1j}}{{f{A}}{1j}}} }&{f{0}}&{f{0}}
{f{0}}&{sumlimits{j = 1}^4 {{f{A}}{2j}^T{{pmb{Omega }}{2j}}{{f{A}}{2j}}} }&{f{0}}
{f{0}}&{f{0}}&{sumlimits{j = 1}^4 {{f{A}}{3j}^T{{pmb{Omega }}{3j}}{{f{A}}_{3j}}} }
end{array}}
ight]
end{array}
ag{18}label{18}
egin{array}{l}
{f{V}} = left[ {egin{array}{{20}{c}}
{{{f{V}}_1}}&{f{0}}&{f{0}}&{f{0}}
{f{0}}&{{{f{V}}_2}}&{f{0}}&{f{0}}
{f{0}}&{f{0}}&{{{f{V}}_3}}&{f{0}}
{f{0}}&{f{0}}&{f{0}}&{{{f{V}}_4}}
end{array}}
ight]
= left[ {egin{array}{{20}{c}}
{sumlimits_{i = 1}^3 {{f{B}}{i1}^T{{pmb{Omega }}{i1}}{{f{B}}{i1}}} }&{f{0}}&{f{0}}&{f{0}}
{f{0}}&{sumlimits{i = 1}^3 {{f{B}}{i2}^T{{pmb{Omega }}{i2}}{{f{B}}{i2}}} }&{f{0}}&{f{0}}
{f{0}}&{f{0}}&{sumlimits{i = 1}^3 {{f{B}}{i3}^T{{pmb{Omega }}{i3}}{{f{B}}{i3}}} }&{f{0}}
{f{0}}&{f{0}}&{f{0}}&{sumlimits{i = 1}^3 {{f{B}}{i4}^T{{pmb{Omega }}{i4}}{{f{B}}_{i4}}} }
end{array}}
ight]
end{array}
ag{19}label{19}
egin{array}{l}
{f{W}} = left[ {egin{array}{{20}{c}}
{{{f{W}}{11}}}&{{{f{W}}{12}}}&{{{f{W}}{13}}}&{{{f{W}}{14}}}
{{{f{W}}{21}}}&{{{f{W}}{22}}}&{{{f{W}}{23}}}&{{{f{W}}{24}}}
{{{f{W}}{31}}}&{{{f{W}}{32}}}&{{{f{W}}{33}}}&{{{f{W}}{34}}}
end{array}}
ight]
= left[ {egin{array}{{20}{c}}
{{f{A}}{11}^T{{pmb{Omega }}{11}}{{f{B}}{11}}}&{{f{A}}{12}^T{{pmb{Omega }}{12}}{{f{B}}{12}}}&{{f{A}}{13}^T{{pmb{Omega }}{13}}{{f{B}}{13}}}&{{f{A}}{14}^T{{pmb{Omega }}{14}}{{f{B}}{14}}}
{{f{A}}{21}^T{{pmb{Omega }}{21}}{{f{B}}{21}}}&{{f{A}}{22}^T{{pmb{Omega }}{22}}{{f{B}}{22}}}&{{f{A}}{23}^T{{pmb{Omega }}{23}}{{f{B}}{23}}}&{{f{A}}{24}^T{{pmb{Omega }}{24}}{{f{B}}{24}}}
{{f{A}}{31}^T{{pmb{Omega }}{31}}{{f{B}}{31}}}&{{f{A}}{32}^T{{pmb{Omega }}{32}}{{f{B}}{32}}}&{{f{A}}{33}^T{{pmb{Omega }}{33}}{{f{B}}{33}}}&{{f{A}}{34}^T{{pmb{Omega }}{34}}{{f{B}}{34}}}
end{array}}
ight]
end{array}
ag{20}label{20}
{f{u}} = left[ {egin{array}{{20}{c}}
{{{f{u}}_1}}
{{{f{u}}_2}}
{{{f{u}}_3}}
end{array}}
ight] = left[ {egin{array}{{20}{c}}
{sumlimits_{j = 1}^4 {{f{A}}{1j}^T{{f{Omega }}{1j}}{f{r}}{1j}^ - } }
{sumlimits{j = 1}^4 {{f{A}}{2j}^T{{f{Omega }}{2j}}{f{r}}{2j}^ - } }
{sumlimits{j = 1}^4 {{f{A}}{3j}^T{{f{Omega }}{3j}}{f{r}}_{3j}^ - } }
end{array}}
ight]
ag{21}label{21}
{f{v}} = left[ {egin{array}{{20}{c}}
{{{f{v}}_1}}
{{{f{v}}_2}}
{{{f{v}}_3}}
{{{f{v}}_4}}
end{array}}
ight] = left[ {egin{array}{{20}{c}}
{sumlimits_{i = 1}^3 {{f{B}}{i1}^T{{pmb{Omega }}{i1}}{f{r}}{i1}^ - } }
{sumlimits{i = 1}^3 {{f{B}}{i2}^T{{pmb{Omega }}{i2}}{f{r}}{i2}^ - } }
{sumlimits{i = 1}^3 {{f{B}}{i3}^T{{pmb{Omega }}{i3}}{f{r}}{i3}^ - } }
{sumlimits{i = 1}^3 {{f{B}}{i4}^T{{pmb{Omega }}{i4}}{f{r}}_{i4}^ - } }
end{array}}
ight]
ag{22}label{22}
left[ {egin{array}{{20}{c}}
{{f{U}} - {f{W}}{{f{V}}^{ - 1}}{{f{W}}^T}}&{f{0}}
{{{f{W}}^T}}&{f{V}}
end{array}}
ight]left[ {egin{array}{{20}{c}}
{delta {{f{x}}_c}}
{delta {{f{x}}_p}}
end{array}}
ight] = - left[ {egin{array}{*{20}{c}}
{{f{u}} - {f{W}}{{f{V}}^{ - 1}}{f{v}}}
{f{v}}
end{array}}
ight]
ag{23}label{23}
left( {{f{U}} - {f{W}}{{f{V}}^{ - 1}}{{f{W}}^T}}
ight)delta {{f{x}}_c} = - left( {{f{u}} - {f{W}}{{f{V}}^{ - 1}}{f{v}}}
ight)
ag{24}label{24}
egin{array}{l}
{f{S}} = {f{W}}{{f{V}}^{ - 1}}{{f{W}}^T}
= left[ {egin{array}{*{20}{c}}
{{{f{S}}{11}}}&{{{f{S}}{12}}}&{{{f{S}}{13}}}
{{f{S}}{12}^T}&{{{f{S}}{22}}}&{{{f{S}}{23}}}
{{f{S}}{13}T}&{{f{S}}_{23}T}&{{{f{S}}{33}}}
end{array}}
ight]
end{array}
ag{25}label{25}
{{f{S}}{{i_1}{i_2}}} = sumlimits{j = 1}^4 {{{f{W}}_{{i_1}j}}{f{V}}j^{ - 1}{f{W}}{{i_2}j}^T}
ag{26}label{26}
{f{s}} = left[ {egin{array}{*{20}{c}}
{{{f{s}}_1}}
{{{f{s}}_1}}
{{{f{s}}_1}}
end{array}}
ight] = {f{W}}{{f{V}}^{ - 1}}{f{v}}
ag{27}label{27}
{{f{s}}i} = sumlimits{j = 1}^4 {{{f{W}}_{ij}}{f{V}}_j^{ - 1}{{f{v}}_j}}
ag{28}label{28}
{f{V}}delta {{f{x}}_p} = - {f{v}} - {{f{W}}^T}delta {{f{x}}_c}