视觉SLAM数学基础

本文系统梳理从相机成像模型,通过不同图像帧之间的构造几何约束求解位姿变换,再根据位姿变换和匹配点还原三维坐标的过程,可以作为基于特征点法的视觉SLAM的数学基础。

1、相机成像模型
1.1、针孔相机模型

实际相机的成像方式通常很复杂,针孔模型是对这种复杂成像方式的简化描述,其原理如下图

在这里插入图片描述

图中,O−x−y−zO-x-y-zOxyz为相机坐标系{C}\{C\}{C},其xxx轴,yyy轴位于针孔平面上,一般要求从相机后方看去xxx轴向右,yyy轴向下,OOO是针孔模型中的针孔,也称为摄像机的光心;O′−ximg−yimgO^{\prime}-x^{\mathrm{img}}-y^{\mathrm{img}}Oximgyimg为物理成像坐标系,位于物理成像平面上。针孔平面与物理成像平面平行,二者之间距离为焦距fff,也即OO′OO^{\prime}OO的距离。习惯上,规定从相机后侧看时,x,ximgx,x^{\mathrm{img}}x,ximg轴向右,y,yimgy,y^{\mathrm{img}}y,yimg轴向下,zzz轴向前。

从相机坐标系下的空间点p=[X,Y,Z]T\mathbf{p}=[X,Y,Z]^{T}p=[X,Y,Z]T发出的光线,穿过针孔OOO,落在物理成像平面上,成为点[Ximg,Yimg]T[X^\mathrm{img},Y^{\mathrm{img}}]^{T}[Ximg,Yimg]T,考虑到XXXXimgX^{\mathrm{img}}XimgYYYYimgY^{\mathrm{img}}Yimg符号必定相反,根据三角形相似关系,可以得到
Zf=−XXimg=−YYimg(1) \frac{Z}{f}=-\frac{X}{X^{\mathrm{img}}}=-\frac{Y}{Y^{\mathrm{img}}}\tag{1} fZ=XimgX=YimgY(1)
整理得到物理成像平面上的坐标
Ximg=−fXZYimg=−fYZ X^{\mathrm{img}}=-f\frac{X}{Z}\\ Y^{\mathrm{img}}=-f\frac{Y}{Z} Ximg=fZXYimg=fZY
负号表示成像为倒向,在实际成像过程中,为方便起见,经过算法内部调整为正像,即将物理成像平面上的坐标变为
Ximg=fXZYimg=fYZ \begin{align*} X^{\mathrm{img}}=f\frac{X}{Z}\tag{2a}\\ Y^{\mathrm{img}}=f\frac{Y}{Z}\tag{2b} \end{align*} Ximg=fZXYimg=fZY(2a)(2b)

1.2、像素坐标系
pixel plane

在相机中,最终获得的是[Ximg,Yimg]T[X^\mathrm{img},Y^{\mathrm{img}}]^{T}[Ximg,Yimg]T对应的像素坐标[⌊U⌋,⌊V⌋]T[\lfloor{U}\rfloor,\lfloor{V}\rfloor]^{T}[⌊U,V]T,其中
{U=αXimg+cxV=βYimg+cy(3) \left\{ \begin{align*} U&=\alpha{X}^{\mathrm{img}}+c_{x}\\ V&=\beta{Y}^{\mathrm{img}}+c_{y} \end{align*} \right.\tag{3} {UV=αXimg+cx=βYimg+cy(3)
其中,α,β\alpha,\betaα,β表示u,vu,vu,v轴上单位距离对应的像素数,cx,cyc_{x},c_{y}cx,cy是相机光心的像素坐标
{U=fxXZ+cxV=fyYZ+cy(4) \left\{ \begin{align*} U&=f_{x}\frac{X^{\mathrm{}}}{Z}+c_{x}\\ V&=f_{y}\frac{Y}{Z}+c_{y} \end{align*} \right.\tag{4} UV=fxZX+cx=fyZY+cy(4)
其中fx=αff_{x}=\alpha{f}fx=αffy=βff_{y}=\beta{f}fy=βf

根据以上关系,可以得到下式,其中左侧是齐次坐标,右侧是非齐次坐标
[UV1]=1Z[fx0cx0fycy001][XYZ](5) \left[\begin{align*} U\\V\\1 \end{align*}\right]= \frac{1}{Z}\left[ \begin{array}{ccc} f_{x}&0&c_{x}\\ 0&f_{y}&c_{y}\\ 0&0&1 \end{array} \right] \left[ \begin{array}{ccc} X\\Y\\Z \end{array} \right]\tag{5} UV1=Z1fx000fy0cxcy1XYZ(5)
定义相机的内参数矩阵
K=[fx0cx0fycy001](6) \mathbf{K}=\left[\begin{array}{ccc} f_{x}&0&c_{x}\\ 0&f_{y}&c_{y}\\ 0&0&1 \end{array}\right]\tag{6} K=fx000fy0cxcy1(6)
因为fx,fy≠0f_{x},f_{y}\neq0fx,fy=0,容易看出,相机的内参数矩阵是可逆的,该矩阵通常右生产厂商标定,在出厂后不会再发生变化

q=[U,V,1]T\mathbf{q}=[U,V,1]^{T}q=[U,V,1]T,则
q=1ZKp(7) \mathbf{q}=\frac{1}{Z}\mathbf{K}\mathbf{p}\tag{7} q=Z1Kp(7)
实际的像素坐标对求出的q\mathbf{q}q取整即可。

设初始相机坐标系{C0}\{C_{0}\}{C0}为世界坐标系{W}\{W\}{W},若已知{W}\{W\}{W}到相机坐标系相机坐标系{Ck},k⩾0\{C_{k}\},k\geqslant0{Ck},k0的位姿,当得到新一帧图像Imgk+1\mathrm{Img}_{k+1}Imgk+1后,根据拍摄到的图像帧估计从相机坐标系{Ck}\{C_{k}\}{Ck}{Ck+1}\{C_{k+1}\}{Ck+1}的旋转矩阵和平移向量Rck+1ck,tck+1ckck+1\mathbf{R}_{c_{k+1}c_{k}},\mathbf{t}^{c_{k+1}}_{c_{k+1}c_{k}}Rck+1ck,tck+1ckck+1,这两个量在后文中简记作R,t\mathbf{R},\mathbf{t}R,t,是计算的目标

1.3、等价成像模型

成像模型可以做两处等价。
在这里插入图片描述

第一处等价:根据(2)(2)(2),把“将倒向调整为正像的过程”等价为将成像平面对称地放到针孔平面前方,成像位置位于针孔p\mathbf{p}p与针孔OOO的连线与对称的成像平面的交点上;

第二处等价:根据(7)(7)(7),成像过程可等价为先将空间点p=[X,Y,Z]T\mathbf{p}=[X,Y,Z]^{T}p=[X,Y,Z]T转换到归一化平面z=1z=1z=1上的p‾\overline{\mathbf{p}}p,即令
p‾=[X‾,Y‾,1]T=[XZ,YZ,1]T(8) \overline{\mathbf{p}}=\begin{bmatrix}\overline{X},\overline{Y},1\end{bmatrix}^{T}=\begin{bmatrix}\frac{X}{Z},\frac{Y}{Z},1\end{bmatrix}^{T}\tag{8} p=[X,Y,1]T=[ZX,ZY,1]T(8)
再根据第一处等价投影到对称的成像平面,成为下面的坐标后再取整数
q=Kp‾(9) \mathbf{q}=\mathbf{K}\overline{\mathbf{p}}\tag{9} q=Kp(9)
上述等价过程的示意图如下:

在这里插入图片描述

2、已知2D-2D匹配数据估算相机运动
2.1、2D-2D存在的约束
2.1.1、对极约束

在这里插入图片描述

设三维空间点PPP在两帧相机坐标系下坐标为p1,p2\mathbf{p}_{1},\mathbf{p}_{2}p1,p2,二者的归一化坐标为p‾1,p‾2\overline{\mathbf{p}}_{1},\overline{\mathbf{p}}_{2}p1,p2,这两个归一化坐标对应的空间点分别为P1,P2P_{1},P_{2}P1,P2,容易看出O1,O2,P,P1,P2O_{1},O_{2},P,P_{1},P_{2}O1,O2,P,P1,P2位于同一平面上,故
O2P2→⋅(O2O1→×O1P1→)=0(10) \overrightarrow{O_{2}P_{2}}\cdot\left(\overrightarrow{O_{2}O_{1}}\times\overrightarrow{O_{1}P_{1}}\right)=0\tag{10} O2P2(O2O1×O1P1)=0(10)
下面在{C2}\{C_{2}\}{C2}坐标系下表示(8)(8)(8),在{C2}\{C_{2}\}{C2}坐标系下,O2P2→=p‾2\overrightarrow{O_{2}P_{2}}=\overline{\mathbf{p}}_{2}O2P2=p2O2O1→=t\overrightarrow{O_{2}O_{1}}=\mathbf{t}O2O1=tO1P1→=Rp‾1+t\overrightarrow{O_{1}P_{1}}=\mathbf{R}\overline{\mathbf{p}}_{1}+\mathbf{t}O1P1=Rp1+t,故(8)(8)(8)可改写为
p‾2T(t∧(Rp‾1+t))=0 \overline{\mathbf{p}}_{2}^{T}\left(\mathbf{t}^{\wedge}(\mathbf{R}\overline{\mathbf{p}}_{1}+\mathbf{t})\right)=0 p2T(t(Rp1+t))=0
进一步化简可得
p‾2T(t∧R)p‾1=0(11) \overline{\mathbf{p}}_{2}^{T}\left(\mathbf{t}^{\wedge}\mathbf{R}\right)\overline{\mathbf{p}}_{1}=0\tag{11} p2T(tR)p1=0(11)
根据归一化坐标和像素坐标的转换关系,得到
q2T[(K−1)T(t∧R)K−1]q1=0(12) \mathbf{q}_{2}^{T}\left[(\mathbf{K}^{-1})^{T}(\mathbf{t}^{\wedge}\mathbf{R})\mathbf{K}^{-1}\right]\mathbf{q}_{1}=0\tag{12} q2T[(K1)T(tR)K1]q1=0(12)
称下面的矩阵为本质矩阵(Essential Matrix)
E=t∧R \mathbf{E}=\mathbf{t}^{\wedge}\mathbf{R} E=tR
需要说明,一个矩阵能够成为本质矩阵当且仅当其的奇异值为σ,σ,0\sigma,\sigma,0σ,σ,0,其中σ\sigmaσ为任意实数

称下面的矩阵为基础矩阵(Fundamental Matrix)
F=(K−1)TEK−1 \mathbf{F}=(\mathbf{K}^{-1})^{T}\mathbf{E}\mathbf{K}^{-1} F=(K1)TEK1
(11)(11)(11)可改写为
p‾2TEp‾1=0 \begin{align*} \overline{\mathbf{p}}_{2}^{T}\mathbf{E}\overline{\mathbf{p}}_{1}=0\tag{13}\\ \end{align*} p2TEp1=0(13)
(12)(12)(12)可改写为
q2TFq1=0(14) \mathbf{q}_{2}^{T}\mathbf{F}\mathbf{q}_{1}=0\tag{14} q2TFq1=0(14)
(11),(12)(11),(12)(11),(12)(13),(14)(13),(14)(13),(14)称为对极约束

2.2、约束矩阵的计算

本质矩阵,基础矩阵,单应矩阵都可以做为相机运动过程中存在的约束,可以通过已知的匹配点可计算这些约束矩阵

2.2.1、基础矩阵的计算

(14)(14)(14)的矩阵乘法写成元素形式
[U2V21][f1f2f3f4f5f6f7f8f9][U1V11]=0 \begin{bmatrix} U_{2}&V_{2}&1 \end{bmatrix} \begin{bmatrix} f_{1}&f_{2}&f_{3}\\ f_{4}&f_{5}&f_{6}\\ f_{7}&f_{8}&f_{9} \end{bmatrix} \begin{bmatrix} U_{1}\\ V_{1}\\ 1 \end{bmatrix}= 0 [U2V21]f1f4f7f2f5f8f3f6f9U1V11=0
f=[f1,⋯ ,f9]T\mathbf{f}=[f_{1},\cdots,f_{9}]^{T}f=[f1,,f9]T,经过整理,上式可以等价地改写为
[U1U2U2V1U2V2U1V1V2V2U1V11]f=0(15) \begin{bmatrix} U_{1}U_{2}&U_{2}V_{1}&U_{2}&V_{2}U_{1}&V_{1}V_{2}&V_{2}&U_{1}&V_{1}&1 \end{bmatrix} \mathbf{f}=0\tag{15} [U1U2U2V1U2V2U1V1V2V2U1V11]f=0(15)
通常限定∥f∥=1\|\mathbf{f}\|=1f=1保证尺度确定,根据上式可以看出,一组匹配点可以构造出一项约束

设匹配点组成的系数矩阵为A∈Rn×9\mathbf{A}\in\mathbb{R}^{n\times9}ARn×9nnn为匹配点对数,则基础矩阵的约束方程(20)(20)(20)可改写为
Af=0∥f∥=1(16) \mathbf{A}\mathbf{f}=\mathbf{0}\quad\|\mathbf{f}\|=1\tag{16} Af=0f=1(16)
当匹配点较少时,rank(A)<8\mathrm{rank}(\mathbf{A})<8rank(A)<8时,(23)(23)(23)为欠定问题,具有多个解;当rank(A)=8\mathrm{rank}(\mathbf{A})=8rank(A)=8时,(21)(21)(21)为适定问题,具有唯一解,可直接通过解线性方程组获得;当匹配点较多时,rank(A)>8\mathrm{rank}(\mathbf{A})>8rank(A)>8时,(23)(23)(23)变为超定问题,线性方程组无解,故可以构造如下优化问题求近似解
f~=argmin⁡f:∥f∥=1 12∥Af∥2(17) \begin{align*} \tilde{\mathbf{f}} &=\underset{\mathbf{f}:\|\mathbf{f}\|=1}{\mathrm{arg}\min}\,\frac{1}{2}\|\mathbf{A}\mathbf{f}\|^{2}\\ \end{align*}\tag{17} f~=f:f=1argmin21Af2(17)
A\mathbf{A}A做奇异值分解
A=UΣVT \mathbf{A}=\mathbf{U}\mathbf{\Sigma}\mathbf{V}^{T} A=VT
其中V=[v1,⋯ ,v9]\mathbf{V}=[\mathbf{v}_{1},\cdots,\mathbf{v}_{9}]V=[v1,,v9]按照特征值降序排列,容易知道f~\tilde{\mathbf{f}}f~可取为
f~=±v9(18) \tilde{\mathbf{f}}=\pm\mathbf{v}_{9}\tag{18} f~=±v9(18)
f~\tilde{\mathbf{f}}f~转变为F~\tilde{\mathbf{F}}F~得到基础矩阵,并根据定义求出E~=KTF~K\tilde{\mathbf{E}}=\mathbf{K}^{T}\tilde{\mathbf{F}}\mathbf{K}E~=KTF~K。但受误差影响此时E~\tilde{\mathbf{E}}E~不一定满足成为本质矩阵的充要条件,需要进一步变换,首先对E~\tilde{\mathbf{E}}E~做SVD分解
E~=U~diag(σ~1,σ~2,σ~3)V~T \tilde{\mathbf{E}}=\tilde{\mathbf{U}}\mathrm{diag}(\tilde{\sigma}_{1},\tilde{\sigma}_{2},\tilde{\sigma}_{3})\tilde{\mathbf{V}}^{T} E~=U~diag(σ~1,σ~2,σ~3)V~T
可令
E∗=U~diag(σ~1+σ~22,σ~1+σ~22,0)V~T(19) \mathbf{E}^{\ast}=\tilde{\mathbf{U}}\mathrm{diag}(\frac{\tilde{\sigma}_{1}+\tilde{\sigma}_{2}}{2},\frac{\tilde{\sigma}_{1}+\tilde{\sigma}_{2}}{2},0)\tilde{\mathbf{V}}^{T}\tag{19} E=U~diag(2σ~1+σ~2,2σ~1+σ~2,0)V~T(19)
为最终所求的本质矩阵,E∗\mathbf{E}^{\ast}E满足成为本质矩阵的充要条件

2.3、基于约束矩阵的运动恢复

得到约束矩阵后,可通过分解约束矩阵来恢复运动

2.3.1、基于基础矩阵的运动恢复

得到基础矩阵F\mathbf{F}F后,可以根据相机内参数矩阵转换为本质矩阵E=KTFK\mathbf{E}=\mathbf{K}^{T}\mathbf{F}\mathbf{K}E=KTFK

E\mathbf{E}E进行奇异值分解
E=UΣVT \mathbf{E}=\mathbf{U}\boldsymbol\Sigma\mathbf{V}^{T} E=UΣVT
满足E=t∧R\mathbf{E}=\mathbf{t}^{\wedge}\mathbf{R}E=tRt\mathbf{t}tR\mathbf{R}R各有两个可行解,具体形式如下
t∧={UWΣUTUWTΣUTR={UW′VTUW′W′TVT(20) \begin{align*} \mathbf{t}^{\wedge}=\left\{\begin{array}{ll}\mathbf{U}\mathbf{W}\boldsymbol\Sigma\mathbf{U}^{T}\\\mathbf{U}\mathbf{W}^{T}\boldsymbol\Sigma\mathbf{U}^{T}\end{array}\right.\quad \mathbf{R}=\left\{\begin{array}{ll}\mathbf{U}\mathbf{W}^{\prime}\mathbf{V}^{T}\\\mathbf{U}\mathbf{W}^{\prime}\vphantom{\mathbf{W}^{\prime}}^{T}\mathbf{V}^{T}\end{array}\right. \end{align*}\tag{20} t={UWΣUTUWTΣUTR={UWVTUWWTVT(20)
其中W=[0−10100001]\mathbf{W}=\begin{bmatrix}0&-1&0\\1&0&0\\0&0&1\end{bmatrix}W=010100001W′={Wdet⁡(UV)=1−Wdet⁡(UV)=−1\mathbf{W}^{\prime}=\left\{\begin{array}{cl}\mathbf{W}&\det(\mathbf{U}\mathbf{V})=1\\-\mathbf{W}&\det(\mathbf{U}\mathbf{V})=-1\end{array}\right.W={WWdet(UV)=1det(UV)=1以保证det⁡(R)=1\det(\mathbf{R})=1det(R)=1。满足E=t∧R\mathbf{E}=\mathbf{t}^{\wedge}\mathbf{R}E=tR(R,t)(\mathbf{R},\mathbf{t})(R,t)共有四个可行解,为t\mathbf{t}tR\mathbf{R}R各自可行解的两两组合。

可以证明,若本质矩阵正确,则四个解中有且仅有一个解使得在两相机中都可见的空间中点在两个相机中的深度均为正值,实践中可以通过比较三角化成功的点的数量找到正确的解。

3、三角化

已知第一幅图像对应的世界坐标系下的相机位姿(R1,t1)(\mathbf{R}_{1},\mathbf{t}_{1})(R1,t1),得到两幅图像对应的相机相对运动R,t\mathbf{R},\mathbf{t}R,t后,可以计算第二幅图像对应的世界坐标系下的相机位姿(R2,t2)(\mathbf{R}_{2},\mathbf{t}_{2})(R2,t2),知两幅图像的二维匹配点对q1,q2\mathbf{q}_{1},\mathbf{q}_{2}q1,q2,可以计算从世界坐标系下的三维点到像素坐标的投影矩阵Ψ1=K[R1,t1],Ψ2=K[R2,t2]\boldsymbol\Psi_{1}=\mathbf{K}[\mathbf{R}_{1},\mathbf{t}_{1}],\boldsymbol\Psi_{2}=\mathbf{K}[\mathbf{R}_{2},\mathbf{t}_{2}]Ψ1=K[R1,t1],Ψ2=K[R2,t2]。三角化即根据Ψ1,Ψ2,q1,q2\boldsymbol\Psi_{1},\boldsymbol\Psi_{2},\mathbf{q}_{1},\mathbf{q}_{2}Ψ1,Ψ2,q1,q2估计二维匹配点对应的世界坐标系下的齐次空间点X=[x1]∈R4\mathbf{X}=\begin{bmatrix}\mathbf{x}\\1\end{bmatrix}\in\mathbb{R}^{4}X=[x1]R4,即恢复场景中点的真实三维位置的。因为从几何意义上看,如前图,三角化的过程即为寻找两条从相机光心O1,O2O_{1},O_{2}O1,O2出发,穿过归一化平面上的投影点的射线在空间中的交点PPP的过程,此时O1,O2,PO_{1},O_{2},PO1,O2,P组成了一个三角形,故称为三角化。

在这里插入图片描述

暂忽略下标,根据上面的讨论可求出相机坐标系下的归一化坐标
q=1ZΨX(21) \mathbf{q}=\frac{1}{Z}\boldsymbol\Psi\mathbf{X}\tag{21} q=Z1ΨX(21)
其中ZZZ[R,t]X[\mathbf{R},\mathbf{t}]\mathbf{X}[R,t]X的最后一维坐标

在上式等号两侧同时左乘q∧\mathbf{q}^{\wedge}q,得到
q∧ΨX=0(22) \mathbf{q}^{\wedge}\boldsymbol\Psi\mathbf{X}=\mathbf{0}\tag{22} qΨX=0(22)
不妨令Ψ=[Ψ1Ψ2Ψ3]\boldsymbol\Psi=\begin{bmatrix}\boldsymbol\Psi^{1}\\\boldsymbol\Psi^{2}\\\boldsymbol\Psi^{3}\end{bmatrix}Ψ=Ψ1Ψ2Ψ3,即Ψ1,Ψ2,Ψ3\boldsymbol\Psi^{1},\boldsymbol\Psi^{2},\boldsymbol\Psi^{3}Ψ1,Ψ2,Ψ3Ψ\boldsymbol\PsiΨ的行向量,此时(22)(22)(22)可以写成
[0−1V10−U−VU0][Ψ1Ψ2Ψ3]X=0 \begin{bmatrix} 0&-1&V\\ 1&0&-U\\ -V&U&0 \end{bmatrix} \begin{bmatrix}\boldsymbol\Psi^{1}\\\boldsymbol\Psi^{2}\\\boldsymbol\Psi^{3}\end{bmatrix} \mathbf{X}=\mathbf{0} 01V10UVU0Ψ1Ψ2Ψ3X=0
进一步可写为
[VΨ3−Ψ2Ψ1−UΨ3UΨ2−VΨ1]X=0 \begin{bmatrix} V\boldsymbol\Psi^{3}-\boldsymbol\Psi^{2}\\ \boldsymbol\Psi^{1}-U\boldsymbol\Psi^{3}\\ U\boldsymbol\Psi^{2}-V\boldsymbol\Psi^{1} \end{bmatrix} \mathbf{X}=\mathbf{0} VΨ3Ψ2Ψ1UΨ3UΨ2VΨ1X=0
上式中系数矩阵的第三行可以通过前两行消去,即得到
[VΨ3−Ψ2Ψ1−UΨ3]X=0 \begin{bmatrix} V\boldsymbol\Psi^{3}-\boldsymbol\Psi^{2}\\ \boldsymbol\Psi^{1}-U\boldsymbol\Psi^{3}\\ \end{bmatrix} \mathbf{X}=\mathbf{0} [VΨ3Ψ2Ψ1UΨ3]X=0
考虑到两个匹配点各自能产生一个上述方程组,故一对匹配点可以提供444个约束方程
[V1Ψ13−Ψ12Ψ11−U1Ψ13V2Ψ23−Ψ22Ψ21−U2Ψ23]X=0(23) \begin{bmatrix} V_{1}\boldsymbol\Psi_{1}^{3}-\boldsymbol\Psi^{2}_{1}\\ \boldsymbol\Psi^{1}_{1}-U_{1}\boldsymbol\Psi^{3}_{1}\\ V_{2}\boldsymbol\Psi_{2}^{3}-\boldsymbol\Psi^{2}_{2}\\ \boldsymbol\Psi^{1}_{2}-U_{2}\boldsymbol\Psi^{3}_{2}\\ \end{bmatrix} \mathbf{X}=\mathbf{0}\tag{23} V1Ψ13Ψ12Ψ11U1Ψ13V2Ψ23Ψ22Ψ21U2Ψ23X=0(23)
设匹配点组成的系数矩阵为A∈R4n×4\mathbf{A}\in\mathbb{R}^{4n\times4}AR4n×4nnn为匹配点对数,则空间坐标的约束方程(29)(29)(29)可写为
AX=0(24) \mathbf{A}\mathbf{X}=\mathbf{0}\tag{24} AX=0(24)
rank(A)<4\mathrm{rank}(\mathbf{A})<4rank(A)<4时,(30)(30)(30)为欠定问题,具有多个解;当rank(A)=4\mathrm{rank}(\mathbf{A})=4rank(A)=4时,(30)(30)(30)为适定问题,具有唯一解,可直接通过解线性方程组获得,也可等价地通过SVD分解进行求解,先构造如下优化问题求近似解
X~=argmin⁡X:∥X∥=1 12∥AX∥2(25) \begin{align*} \tilde{\mathbf{X}} &=\underset{\mathbf{X}:\|\mathbf{X}\|=1}{\mathrm{arg}\min}\,\frac{1}{2}\|\mathbf{A}\mathbf{X}\|^{2}\\ \end{align*}\tag{25} X~=X:X=1argmin21AX2(25)
A\mathbf{A}A做奇异值分解
A=UΣVT \mathbf{A}=\mathbf{U}\mathbf{\Sigma}\mathbf{V}^{T} A=VT
其中V=[v1,⋯ ,v4]\mathbf{V}=[\mathbf{v}_{1},\cdots,\mathbf{v}_{4}]V=[v1,,v4]按照特征值降序排列,容易知道P~\tilde{\mathbf{P}}P~可取为
X~=±v4(26) \tilde{\mathbf{X}}=\pm\mathbf{v}_{4}\tag{26} X~=±v4(26)
α\alphaαX~\tilde{\mathbf{X}}X~在第四维上的分量,若α=0\alpha=0α=0,则认为三角化失败,否则为保证所求结果为齐次坐标,即第四维度上值为111,可令
X∗=1αX~(27) \mathbf{X}^{\ast}=\frac{1}{\alpha}\tilde{\mathbf{X}}\tag{27} X=α1X~(27)
求出X∗\mathbf{X}^{\ast}X后应继续检验三角化是否失败,若对应的在三维点在两相机坐标系下的深度小于等于000,即[R1,t1]X∗[\mathbf{R}_{1},\mathbf{t}_{1}]\mathbf{X}^{\ast}[R1,t1]X[R2,t2]X∗[\mathbf{R}_{2},\mathbf{t}_{2}]\mathbf{X}^{\ast}[R2,t2]X在第三个维度上的数值小于等于000,则认为三角化失败。

4、已知3D-2D匹配数据估算相机运动

已知世界坐标系下的3D空间点坐标和其在相机中投影的2D像素坐标,估计世界坐标系到相机坐标系的位姿变换的问题称为PnP(Perspective-n-Point)问题。

4.1、DLT

已知空间点在世界坐标系下的齐次坐标为X∈R4\mathbf{X}\in\mathbb{R}^{4}XR4,和其对应的像素坐标q=[U,V,1]T\mathbf{q}=[U,V,1]^{T}q=[U,V,1]T,现计算从世界坐标系下的齐次坐标到相机坐标系的位姿变换R,t\mathbf{R},\mathbf{t}R,t

设从世界坐标系下的三维点到像素坐标的投影矩阵Ψ=K[R,t]\boldsymbol\Psi=\mathbf{K}[\mathbf{R},\mathbf{t}]Ψ=K[R,t],并令

根据(21)(21)(21)
Z[UV1]=[Ψ1Ψ2Ψ3]X(28) Z\begin{bmatrix} U\\V\\1 \end{bmatrix} =\begin{bmatrix}\boldsymbol\Psi^{1}\\\boldsymbol\Psi^{2}\\\boldsymbol\Psi^{3}\end{bmatrix}\mathbf{X}\tag{28} ZUV1=Ψ1Ψ2Ψ3X(28)
(36)(36)(36)可以化简为
Ψ1X=ZUΨ2X=ZVΨ3X=Z \begin{align*} \boldsymbol\Psi^{1}\mathbf{X}&=ZU\\ \boldsymbol\Psi^{2}\mathbf{X}&=ZV\\ \boldsymbol\Psi^{3}\mathbf{X}&=Z \end{align*} Ψ1XΨ2XΨ3X=ZU=ZV=Z
因此可以得到
Ψ1X−UΨ3X=0Ψ2X−VΨ3X=0 \begin{align*} \boldsymbol\Psi^{1}\mathbf{X}-U\boldsymbol\Psi^{3}\mathbf{X}&=0\\ \boldsymbol\Psi^{2}\mathbf{X}-V\boldsymbol\Psi^{3}\mathbf{X}&=0\\ \end{align*} Ψ1XUΨ3XΨ2XVΨ3X=0=0
不妨令ψ=[Ψ11TΨ22TΨ33T]\boldsymbol\psi=\begin{bmatrix}\boldsymbol\Psi^{1}\vphantom{^{1}}^{T}\\\boldsymbol\Psi^{2}\vphantom{^{2}}^{T}\\\boldsymbol\Psi^{3}\vphantom{^{3}}^{T}\end{bmatrix}ψ=Ψ11TΨ22TΨ33T,写出关于ψ\boldsymbol\psiψ的方程组,有
[XT0T−UXT0TXT−VXT]ψ=0(29) \begin{bmatrix} \mathbf{X}^{T}&\mathbf{0}^{T}&-U\mathbf{X}^{T}\\ \mathbf{0}^{T}&\mathbf{X}^{T}&-V\mathbf{X}^{T}\\ \end{bmatrix}\boldsymbol\psi=\mathbf{0}\tag{29} [XT0T0TXTUXTVXT]ψ=0(29)
可以看到,每对3D-2D匹配的特征点能提供两个关于ψ\boldsymbol\psiψ的约束

设匹配点组成的系数矩阵为A∈R2n×12\mathbf{A}\in\mathbb{R}^{2n\times12}AR2n×12nnn为匹配点对数,则增广矩阵的约束方程可写为
Aψ=0(30) \mathbf{A}\boldsymbol\psi=\mathbf{0}\tag{30} Aψ=0(30)
当匹配点较少,rank(A)<12\mathrm{rank}(\mathbf{A})<12rank(A)<12时,(38)(38)(38)为欠定问题,具有多个解;当rank(A)=12\mathrm{rank}(\mathbf{A})=12rank(A)=12时,(38)(38)(38)为适定问题,具有唯一解,可直接通过解线性方程组获得;当匹配点较多时,rank(A)>12\mathrm{rank}(\mathbf{A})>12rank(A)>12时,(38)(38)(38)变为超定问题,线性方程组无解,故可以构造如下优化问题求近似解
ψ~=argmin⁡ψ:∥ψ∥=1 12∥Aψ∥2(31) \begin{align*} \tilde{\boldsymbol\psi} &=\underset{\boldsymbol\psi:\|\boldsymbol\psi\|=1}{\mathrm{arg}\min}\,\frac{1}{2}\|\mathbf{A}\boldsymbol\psi\|^{2}\\ \end{align*}\tag{31} ψ~=ψ:ψ=1argmin21Aψ2(31)
A\mathbf{A}A做奇异值分解
A=UΣVT \mathbf{A}=\mathbf{U}\mathbf{\Sigma}\mathbf{V}^{T} A=VT
其中V=[v1,⋯ ,v12]\mathbf{V}=[\mathbf{v}_{1},\cdots,\mathbf{v}_{12}]V=[v1,,v12]按照特征值降序排列,容易知道ψ~\tilde{\boldsymbol\psi}ψ~可取为
ψ~=±v12(32) \tilde{\boldsymbol\psi}=\pm\mathbf{v}_{12}\tag{32} ψ~=±v12(32)
ψ~\tilde{\boldsymbol\psi}ψ~转变Ψ~\tilde{\boldsymbol\Psi}Ψ~为再转变为[R~,t~]=K−1Ψ~[\tilde{\mathbf{R}},\tilde{\mathbf{t}}]=\mathbf{K}^{-1}\tilde{\boldsymbol\Psi}[R~,t~]=K1Ψ~即得到所求增广矩阵的初步估计,但所求得的旋转矩阵R~\tilde{\mathbf{R}}R~不一定在SO(3)SO(3)SO(3)中,可以构造如下优化问题
min⁡   −tr(RR~T)subject to   RTR=Idet⁡(R)=1 \begin{align*} \min\,\,\,&-\mathrm{tr}\left(\mathbf{R}\tilde{\mathbf{R}}^{T}\right)\\ \mathrm{subject\,to}\,\,\,&\mathbf{R}^T\mathbf{R}=\mathbf{I}\quad\det(\mathbf{R})=1\\ \end{align*} minsubjecttotr(RR~T)RTR=Idet(R)=1
首先对R~\tilde{\mathbf{R}}R~进行SVD分解
R~=U~Σ~V~T \tilde{\mathbf{R}}=\tilde{\mathbf{U}}\tilde{\boldsymbol{\Sigma}}\tilde{\mathbf{V}}^{T} R~=U~Σ~V~T
根据§1中KKT条件,可以证明,在任何情况下,使(6)(6)(6)中目标函数最优的旋转矩阵R∗\mathbf{R}^{\ast}R总可以取为下述值
R∗=U~[11det⁡(U~)det⁡(V~)]V~T \begin{align*} \mathbf{R}^{\ast}=\tilde{\mathbf{U}} \begin{bmatrix} 1&&\\ &1&\\ &&\det(\tilde{\mathbf{U}})\det(\tilde{\mathbf{V}}) \end{bmatrix} \tilde{\mathbf{V}}^{T} \end{align*} R=U~11det(U~)det(V~)V~T

4.2、最小重投影误差

求解PnP问题还可以将每个三维点坐标投影到像素平面得到的坐标与对应的实际观测到的像素坐标做差得到的重投影误差,再通过优化重投影误差得到最优的从世界坐标系到相机坐标系的位姿变换T∈SE(3)\mathbf{T}\in SE(3)TSE(3),即

T∗=arg⁡min⁡T∑i=1n∥qi−1ZiK(TXi)1:3∥2=arg⁡min⁡T∑i=1n∥ei(T)∥2(33) \begin{align*} \mathbf{T}^{\ast} &=\underset{\mathbf{T}}{\arg\min}\sum_{i=1}^{n}\left\|\mathbf{q}_{i}-\frac{1}{Z_{i}}\mathbf{K}(\mathbf{T}\mathbf{X}_{i})_{1:3}\right\|^{2}\\ &=\underset{\mathbf{T}}{\arg\min}\sum_{i=1}^{n}\left\|\mathbf{e}_{i}(\mathbf{T})\right\|^{2}\\ \end{align*} \tag{33} T=Targmini=1nqiZi1K(TXi)1:32=Targmini=1nei(T)2(33)
下面暂时省略下标iii,世界坐标系下的三维点在相机坐标系下的表示为
p=(TX)1:3=[X,Y,Z]T(34) \mathbf{p}=(\mathbf{T}\mathbf{X})_{1:3}=[X,Y,Z]^{T}\tag{34} p=(TX)1:3=[X,Y,Z]T(34)
误差取两维
e=(q−1ZKp)1:2=[UV]−1Z[fx0cx0fycy][XYZ]=[U−fxXZ+cyV−fyYZ+cy](35) \begin{align*} \mathbf{e}&= \left(\mathbf{q}-\frac{1}{Z}\mathbf{K}\mathbf{p}\right)_{1:2} =\begin{bmatrix} U\\ V\\ \end{bmatrix}-\frac{1}{Z}\begin{bmatrix} f_{x}&0&c_{x}\\ 0&f_{y}&c_{y}\\ \end{bmatrix}\begin{bmatrix} X\\ Y\\ Z \end{bmatrix} =\begin{bmatrix}U-f_{x}\frac{X}{Z}+c_{y}\\ V-f_{y}\frac{Y}{Z}+c_{y}\end{bmatrix} \end{align*}\tag{35} e=(qZ1Kp)1:2=[UV]Z1[fx00fycxcy]XYZ=[UfxZX+cyVfyZY+cy](35)
根据链式法则得到
∂e∂T=−∂q′∂p∂p∂T(36) \begin{align*} \frac{\partial\mathbf{e}}{\partial\mathbf{T}}&=-\frac{\partial\mathbf{q}^{\prime}}{\partial\mathbf{p}}\frac{\partial\mathbf{p}}{\partial\mathbf{T}}\\ \end{align*}\tag{36} Te=pqTp(36)
(34),(35)(34),(35)(34),(35)
∂e∂p=[−fxZ0fxXZ20−fyZfxYZ2](37) \frac{\partial\mathbf{e}}{\partial\mathbf{p}}= \begin{bmatrix} -\frac{f_{x}}{Z}&0&\frac{f_{x}X}{Z^{2}}\\ 0&-\frac{f_{y}}{Z}&\frac{f_{x}Y}{Z^{2}} \end{bmatrix}\tag{37} pe=[Zfx00ZfyZ2fxXZ2fxY](37)
设位姿更新方式为T←Exp(ΔT)T,ΔT∈R6\mathbf{T}\leftarrow\mathrm{Exp}(\Delta\mathbf{T})\mathbf{T},\Delta\mathbf{T}\in\mathbb{R}^{6}TExp(ΔT)T,ΔTR6,则可以通过左乘扰动求导方法计算
∂p∂T=(∂TX∂T)1:3=[I,−p∧](38) \frac{\partial\mathbf{p}}{\partial\mathbf{T}}=\left(\frac{\partial\mathbf{T}\mathbf{X}}{\partial\mathbf{T}}\right)_{1:3}=[\mathbf{I},-\mathbf{p}^{\wedge}]\tag{38} Tp=(TTX)1:3=[I,p](38)
(36),(37),(38)(36),(37),(38)(36),(37),(38)可计算
∂e∂T=[−fxZ0fxXZ2fxXYZ2−fx−fxX2Z2fxYZ0−fyZfxYZ2fy+fyY2Z2−fxXYZ2−fxXZ](39) \frac{\partial\mathbf{e}}{\partial\mathbf{T}}=\begin{bmatrix} -\frac{f_{x}}{Z}&0&\frac{f_{x}X}{Z^{2}}&\frac{f_{x}XY}{Z^{2}}&-f_{x}-\frac{f_{x}X^{2}}{Z^{2}}&\frac{f_{x}Y}{Z}\\ 0&-\frac{f_{y}}{Z}&\frac{f_{x}Y}{Z^{2}}&f_{y}+\frac{f_{y}Y^{2}}{Z^{2}}&-\frac{f_{x}XY}{Z^{2}}&-\frac{f_{x}X}{Z} \end{bmatrix}\tag{39} Te=[Zfx00ZfyZ2fxXZ2fxYZ2fxXYfy+Z2fyY2fxZ2fxX2Z2fxXYZfxYZfxX](39)
问题(33)(33)(33)的雅可比矩阵
Ji=∂ei∂T(40) \mathbf{J}_{i}=\frac{\partial\mathbf{e}_{i}}{\partial\mathbf{T}}\tag{40} Ji=Tei(40)
得到
Hk=∑i=1nJiTJibk=∑i=1nJiTei \begin{align*}\mathbf{H}_{k}=\sum_{i=1}^{n}\mathbf{J}_{i}^{T}\mathbf{J}_{i}\quad\quad\mathbf{b}_{k}&=\sum_{i=1}^{n}\mathbf{J}_{i}^{T}\mathbf{e}_{i}\end{align*} Hk=i=1nJiTJibk=i=1nJiTei
则更新量可以通过下式计算
HkΔTk=−bk \mathbf{H}_{k}\Delta\mathbf{T}_{k}=-\mathbf{b}_{k} HkΔTk=bk

并通过下式更新
Tk+1=Exp(ΔTk)Tk \mathbf{T}_{k+1}=\mathrm{Exp}(\Delta\mathbf{T}_{k})\mathbf{T}_{k} Tk+1=Exp(ΔTk)Tk
最终得到最优的位姿变换

附录

§1、尺度意义下相等

x1,x2\mathbf{x}_{1},\mathbf{x}_{2}x1,x2为某种代数结构,若存在s∈Rs\in\mathbb{R}sR,使得
sx1=x2(A1) s\mathbf{x}_{1}=\mathbf{x}_{2}\tag{A1} sx1=x2(A1)
则称x1\mathbf{x}_{1}x1x2\mathbf{x}_{2}x2在尺度意义下相等,记作
x1⋍x2(A2) \mathbf{x}_{1}\backsimeq\mathbf{x}_{2}\tag{A2} x1x2(A2)

<think>好的,我现在需要帮助用户理解视觉SLAM的数学模型,包括坐标系变换、特征点匹配和优化方法。首先,我得回忆一下用户提供的引用内容,看看哪些信息可以直接应用。 用户提到的引用[1]讲到相机成像模型和几何约束求解位姿变换,然后还原三维坐标。这应该涉及到坐标系变换,比如世界坐标系到相机坐标系的转换。引用[4]提到齐次坐标和矩阵运算,这可能和坐标系变换中的旋转矩阵和平移向量有关。 接下来是特征点匹配,用户的问题里需要这部分内容。引用[1]和[2]提到了特征点法和重投影误差,可能这里需要解释如何通过特征点匹配来建立几何约束,比如对极几何或者PnP问题。引用[3]提到了直接线性变换、P3P和非线性优化,这些方法可能用于求解位姿。 优化方法方面,引用[2]详细讨论了光束法平差(BA),使用非线性优化同时优化位姿和空间点,最小化重投影误差。引用[3]也提到了非线性优化的方法,这可能涉及到高斯-牛顿法或Levenberg-Marquardt算法。 现在需要将这三个部分组织起来:坐标系变换、特征点匹配、优化方法。每个部分都需要简明扼要地解释,并引用相关的内容。例如,坐标系变换部分需要解释旋转矩阵和平移向量,齐次坐标的转换,可能还要提到刚体变换的公式。特征点匹配需要描述特征提取和匹配的过程,以及如何用这些匹配点构建几何约束,比如对极约束中的基础矩阵或本质矩阵。优化方法部分要解释BA的原理,以及如何构建最小二乘问题,使用梯度下降或迭代方法求解。 需要注意用户提到的LaTeX格式要求,所有数学公式要用$...$或$$...$$。比如旋转矩阵的表示、重投影误差的公式等。同时,生成相关的问题,可能需要问及BA的具体实现、特征点匹配的算法比较,或不同坐标系变换的应用场景。 还需要检查是否每个引用都正确地标注在对应的内容后面,比如提到BA时引用[2],提到P3P时引用[3]等。确保回答结构清晰,分点阐述,每个部分都有小标题,并且符合用户的要求。 最后,生成相关问题时要围绕这三个主题,可能涉及深入的技术细节或比较不同方法的优缺点,比如BA的优缺点,特征点匹配中的误匹配处理等。</think>### 视觉SLAM数学模型详解 --- #### 一、坐标系变换 视觉SLAM的核心是通过传感器数据建立环境相机的几何关系,涉及以下坐标系变换: 1. **世界坐标系 → 相机坐标系** 使用刚体变换描述,包含旋转矩阵 $R \in SO(3)$ 和平移向量 $t \in \mathbb{R}^3$: $$ P_c = R \cdot P_w + t $$ 其中 $P_w$ 是世界坐标系下的三维点,$P_c$ 是相机坐标系下的坐标[^4]。 2. **相机坐标系 → 图像坐标系** 通过针孔模型投影: $$ \begin{pmatrix} u \\ v \\ 1 \end{pmatrix} = \frac{1}{Z_c} \begin{pmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} X_c \\ Y_c \\ Z_c \end{pmatrix} $$ 这里 $f_x, f_y$ 为焦距,$(c_x, c_y)$ 是光心坐标,$Z_c$ 为深度值[^1]。 --- #### 二、特征点匹配 特征点是视觉SLAM中建立几何约束的基础: 1. **特征提取** 使用SIFT、ORB等算法检测关键点并生成描述子,例如ORB的二进制描述子可快速匹配。 2. **匹配构建几何约束** - **对极几何**:通过两帧图像中匹配点计算基础矩阵 $F$,满足 $x_2^T F x_1 = 0$,推导相机运动[^1]。 - **PnP问题**:已知3D点其2D投影,求解 $R, t$,常用方法包括直接线性变换(DLT)和EPnP[^3]。 --- #### 三、优化方法 视觉SLAM通过优化方法迭代修正估计值: 1. **光束法平差(Bundle Adjustment)** 将相机位姿 $\boldsymbol{T}$ 和空间点 $\boldsymbol{P}$ 同时作为优化变量,最小化重投影误差: $$ \min_{\boldsymbol{T}, \boldsymbol{P}} \sum_{i,j} \left\| \pi(\boldsymbol{T}_i \cdot \boldsymbol{P}_j) - \boldsymbol{z}_{ij} \right\|^2 $$ 其中 $\pi(\cdot)$ 为投影函数,$\boldsymbol{z}_{ij}$ 是观测像素坐标。采用Levenberg-Marquardt算法求解[^2]。 2. **局部优化全局优化** - 局部BA:优化局部关键帧和地图点,保证实时性。 - 全局BA:在回环检测后优化整个轨迹,消除累积误差[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小于小于大橙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值