单层直接法
已知两帧图像,估计相机运动
设待估计的目标为Tcur,refT_{cur, ref}Tcur,ref,在参考帧(前一时刻)中取一组点{pi}\{p_i\}{pi}的位姿可以通过最小化目标函数求解:
Tcur,ref=1N∑i=1N∑Wi∥Iref(π(pi))−Icur(π(Tcur,refpi))∥22.
\mathbf{T}_{\mathrm{cur}, \mathrm{ref}}=\frac{1}{N} \sum_{i=1}^{N} \sum_{W_{i}}\left\|I_{\mathrm{ref}}\left(\pi\left(\mathbf{p}_{i}\right)\right)-I_{\mathrm{cur}}\left(\pi\left(\mathbf{T}_{\mathrm{cur}, \mathrm{ref}} \mathbf{p}_{i}\right)\right)\right\|_{2}^{2}.
Tcur,ref=N1i=1∑NWi∑∥Iref(π(pi))−Icur(π(Tcur,refpi))∥22.
其中NNN为点数,π\piπ函数为针孔相机的投影函数R3↦R2\mathbb{R}^{3} \mapsto \mathbb{R}^{2}R3↦R2,WiW_iWi为第iii 个点周围的小窗口。同光流,可用Gauss-Newton函数求解。
-
该问题中的误差:
e(T)=Iref(π(pi))−Icur(π(Tcur,refpi)) e(T) = I_{ref}(\pi(p_i)) - I_{cur}(\pi(T_{cur, ref}p_i)) e(T)=Iref(π(pi))−Icur(π(Tcur,refpi)) -
误差相对于自变量的梯度:
自变量:相机的位姿ξ\xiξ (李代数形式,6个自由度),故雅克比矩阵为1×61\times61×6的矩阵。
给误差(其实是作用在T上)施加一个扰动:
e(δT⊕T)=Iref(p1)−Icur(1Z2Kexp(δξ∧)TP)≈Iref(p1)−Icur(1Z2K(1+δξ∧)TP)=Iref(p1)−Icur(u+1Z2Kδξ∧TP)≈Iref(P1)−Icur(u)−Icur′(u)δξ=e(T)−∂Icur∂u⇀u⇀∂q∂q∂δξδξ e(\delta T \oplus T ) = I_{ref}(p_1) - I_{cur}(\frac{1}{Z_2}Kexp(\delta \xi^\wedge)TP) \\ \approx I_{ref}(p_1) - I_{cur}(\frac{1}{Z_2}K(1 + \delta \xi^{\wedge})TP) \\ = I_{ref}(p_1)- I_{cur}(u + \frac{1}{Z_2}K \delta \xi^{\wedge}TP) \\ \approx I_{ref}(P_1) - I_{cur}(u) -{ I_{cur}}'(u)\delta \xi \\ = e(T) - \frac{\partial \boldsymbol{I}_{cur}}{\partial \mathop{u}\limits^{\rightharpoonup}} \frac{\mathop{u}\limits^{\rightharpoonup}}{\partial \boldsymbol{q}} \frac{\partial \boldsymbol{q}}{\partial \delta \boldsymbol{\xi}} \delta \boldsymbol{\xi} e(δT⊕T)=Iref(p1)−Icur(Z21Kexp(δξ∧)TP)≈Iref(p1)−Icur(Z21K(1+δξ∧)TP)=Iref(p1)−Icur(u+Z21Kδξ∧TP)≈Iref(P1)−Icur(u)−Icur′(u)δξ=e(T)−∂u⇀∂Icur∂qu⇀∂δξ∂qδξ完全按照一阶泰勒,上边近似后不应该是δξ\delta\xiδξ,应该是上边的uuu后边的那一坨。
难道是因为两个都是无穷小量,所以相等?q=TPu⇀=1Z2Kq q = TP \\ \mathop{u}^{\rightharpoonup} = \frac{1}{Z_2}Kq q=TPu⇀=Z21Kq
-
注:qqq为PPP在第二个相机坐标系下的坐标,u⇀\mathop{u}\limits^{\rightharpoonup}u⇀ 是它的像素坐标,由(4)可知,qqq是TTT的函数,u⇀\mathop{u}\limits ^{\rightharpoonup}u⇀ 是qqq的函数,这里的PPP是已知位置的空间点。
-
limδξ→0e(δξ⊕ξ)−e(ξ)δξ=−∂Icur∂u⇀∂u⇀∂q∂q∂δξ=J \lim_{\delta \xi \to 0} \frac{e(\delta \xi \oplus \xi) - e(\xi)}{\delta \xi} = -\frac{\partial {I_{cur}}}{\partial \mathop{u}\limits^{\rightharpoonup}} \frac{\partial \mathop{u}\limits^{\rightharpoonup}}{\partial q}\frac{\partial q}{\partial \delta \xi} \\ = J δξ→0limδξe(δξ⊕ξ)−e(ξ)=−∂u⇀∂Icur∂q∂u⇀∂δξ∂q=J
-
梯度矩阵:
-
J=−∂Icur∂u⇀∂u⇀∂q∂q∂δξ J = -\frac{\partial {I_{cur}}}{\partial \mathop{u}\limits^{\rightharpoonup}} \frac{\partial \mathop{u}\limits^{\rightharpoonup}}{\partial q}\frac{\partial q}{\partial \delta \xi} J=−∂u⇀∂Icur∂q∂u⇀∂δξ∂q
雅克比矩阵的维度为1×61 \times 61×6 -
其中:
-
∂u∂q=[∂u∂X∂u∂Y∂u∂Z∂v∂X∂v∂Y∂v∂Z]=[fxZ0−fxXZ20fyZ−fyYZ2] \frac{\partial \boldsymbol{u}}{\partial \boldsymbol{q}}=\left[\begin{array}{ccc} \frac{\partial u}{\partial X} & \frac{\partial u}{\partial Y} & \frac{\partial u}{\partial Z} \\ \frac{\partial v}{\partial X} & \frac{\partial v}{\partial Y} & \frac{\partial v}{\partial Z} \end{array}\right]=\left[\begin{array}{ccc} \frac{f_{x}}{Z} & 0 & -\frac{f_{x} X}{Z^{2}} \\ 0 & \frac{f_{y}}{Z} & -\frac{f_{y} Y}{Z^{2}} \end{array}\right] ∂q∂u=[∂X∂u∂X∂v∂Y∂u∂Y∂v∂Z∂u∂Z∂v]=[Zfx00Zfy−Z2fxX−Z2fyY]
-
∂q∂δξ=[I,−q∧] \frac{\partial \boldsymbol{q}}{\partial \delta \boldsymbol{\xi}}=\left[\boldsymbol{I},-\boldsymbol{q}^{\wedge}\right] ∂δξ∂q=[I,−q∧]
-
∂u∂δξ=[fxZ0−fxXZ2−fxXYZ2fx+fxX2Z2−fxYZ0fyZ−fyYZ2−fy−fyY2Z2fyXYZ2fyXZ] \frac{\partial \boldsymbol{u}}{\partial \delta \boldsymbol{\xi}}=\left[\begin{array}{cccccc} \frac{f_{x}}{Z} & 0 & -\frac{f_{x} X}{Z^{2}} & -\frac{f_{x} X Y}{Z^{2}} & f_{x}+\frac{f_{x} X^{2}}{Z^{2}} & -\frac{f_{x} Y}{Z} \\ 0 & \frac{f_{y}}{Z} & -\frac{f_{y} Y}{Z^{2}} & -f_{y}-\frac{f_{y} Y^{2}}{Z^{2}} & \frac{f_{y} X Y}{Z^{2}} & \frac{f_{y} X}{Z} \end{array}\right] ∂δξ∂u=[Zfx00Zfy−Z2fxX−Z2fyY−Z2fxXY−fy−Z2fyY2fx+Z2fxX2Z2fyXY−ZfxYZfyX]
-
-
若采用中值差分:
- ∂Icur∂u=12[Icur(u+1,v)−Icur(u−1,v),Icur(u,v+1−Icur(u,v−1))] \frac{\partial I_{cur}}{\partial u} = \frac 1 2 \begin{bmatrix} I_{cur}(u + 1, v) - I_{cur}(u - 1, v), I_{cur}(u, v +1 - I_{cur}(u, v - 1)) \end{bmatrix} ∂u∂Icur=21[Icur(u+1,v)−Icur(u−1,v),Icur(u,v+1−Icur(u,v−1))]
-
-
窗口尽量取大一点(上一帧图像中的点可能在投影后跑到下一帧图像对应窗口的外部),但也不能太大,否则计算时间太长。
窗口不要取单个点(投影之后点就没了,不在窗口范围内)
单层直接法:




- 可使用光流计算视差进而生成稀疏点云

2460

被折叠的 条评论
为什么被折叠?



