理论重述
1. 概述
本文明确使用单目视觉, 针孔相机模型[1], orb特征检测与匹配[2]
相关理论: 对极几何, 三角测量, PnP
2. 对极几何
2.1 坐标系
- 像素坐标系:
图像的左上角是原点, 正方向分别往右和往下 - 相机坐标系:
原点为相机镜头的光心, 向前为z轴正方向, 向下为y轴正方向, 向右为x轴正方向 - 归一化坐标:
相机坐标系投影到z=1的平面上的坐标, 显然, 坐标形如(X/Z, Y/Z, 1)的形式 - 世界坐标系:
可以任意指定, 为方便起见, 本文取世界坐标为右侧相机的相机坐标系为世界坐标系
2.2 极线约束
以第一帧图像的相机坐标系为世界坐标系, 某一空间点P = [X, Y, Z]T, 投影在两张图像的点像素坐标分别为p1,p2p_1,p_2p1,p2 以sss表示深度,则有
{s1p1=KPs2p2=K(RP+t)
\begin{cases}
s_1p_1=KP\\\\
s_2p_2=K(RP+t)
\end{cases}
⎩⎪⎨⎪⎧s1p1=KPs2p2=K(RP+t)
简化为以下形式,其中E=t∧RE=t^{\land}RE=t∧R,称为本征矩阵
通过E可以分解出R和t, 本身具有尺度等价性, 但是对t乘以一个非0常数, 分解也是成立的[3],所以通常对t进行归一化处理,使其长度为1,这将直接导致t的尺度不确定性,比如t的第一维是0.17, 我们无法确定其单位是cm还是m. 因此单目slam有一步不可避免的初始化, 初始化的图像必须有一定程度的平移, 而后的轨迹和地图必须以此步的平移为单位.
3. 三维重建
根据针孔相机模型, 有如下关系:
Z[uv1]=[fx0cx0fycy001][XYZ]
Z\begin{bmatrix}
u\\\\
v\\\\
1
\end{bmatrix} =
\begin{bmatrix}
f_x&0&c_x\\\\
0&f_y&c_y\\\\
0&0&1\end{bmatrix}
\begin{bmatrix}
X\\\\
Y\\\\
Z\end{bmatrix}
Z⎣⎢⎢⎢⎢⎡uv1⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡fx000fy0cxcy1⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡XYZ⎦⎥⎥⎥⎥⎤
说明:[u v 1]T[u\ v\ 1]^T[u v 1]T 是像素坐标,[X Y Z]T[X\ Y\ Z]^T[X Y Z]T是某一点的空间坐标。
仅通过上式无法求解空间坐标,但是能求解空间点映射到归一化平面(Z=1)(Z=1)(Z=1)上的归一化坐标[u′v′1]\begin{bmatrix}u'&v'&1\end{bmatrix}[u′v′1],或称为像素坐标在归一化平面上的齐次坐标,显然
[u′v′1]T=[X/ZY/Z1]T
\begin{bmatrix}u'&v'&1\end{bmatrix}^T=
\begin{bmatrix}X/Z&Y/Z&1\end{bmatrix}^T
[u′v′1]T=[X/ZY/Z1]T
使用三角测量求解深度,设某一空间点在两帧图像上的深度为s1和s2s_1和s_2s1和s2,以第一帧图像的相机坐标系为世界坐标系,根据对极几何,
s1[u1v11]=s2[r1r2r3r4r5r6r7r8r9][u2v21]+[t1t2t3]
s_1\begin{bmatrix}u_1\\\\v_1\\\\1\end{bmatrix} =
s_2\begin{bmatrix}
r_1&r_2&r_3\\\\
r_4&r_5&r_6\\\\
r_7&r_8&r_9
\end{bmatrix}
\begin{bmatrix}u_2\\\\v_2\\\\1\end{bmatrix} +
\begin{bmatrix}t_1\\\\t_2\\\\t_3\end{bmatrix}
s1⎣⎢⎢⎢⎢⎡u1v11⎦⎥⎥⎥⎥⎤=s2⎣⎢⎢⎢⎢⎡r1r4r7r2r5r8r3r6r9⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡u2v21⎦⎥⎥⎥⎥⎤+⎣⎢⎢⎢⎢⎡t1t2t3⎦⎥⎥⎥⎥⎤
记为
s1x1=s2Rx2+t
s_1x_1=s_2Rx_2 + t
s1x1=s2Rx2+t
其中RRR表示图像的相对旋转,ttt表示相对平移
在本文设定的坐标系下,s1=Zs_1=Zs1=Z,对上式两边左乘x1∧x^{\land}_1x1∧,可求得s2s_2s2,进一步求得s1s_1s1
上式所用R和tR和tR和t,一般通过极限约束求得本征矩阵EEE,再分解本征矩阵得到R和tR和tR和t,本实验的两张参考照片的相对变换仅在xxx轴方向平移了10cm,则旋转变换矩阵RRR必然是3阶单位阵,平移变换矩阵为[100]T\begin{bmatrix}1&0&0\end{bmatrix}^T[100]T,不必再使用opencv求解,这一点从opencv的求解结果中得到了验证。
4. 求解PnP,获得参考照片的位姿
4.1 直接线性变换
s[u′v′1]=[r1r2r3t1r4r5r6t2r7r8r9t3][XYZ1]s
\begin{bmatrix}u'\\\\v'\\\\1\end{bmatrix} =
\begin{bmatrix}
r_1&r_2&r_3&t_1\\\\
r_4&r_5&r_6&t_2\\\\
r_7&r_8&r_9&t_3
\end{bmatrix}
\begin{bmatrix}X\\\\Y\\\\Z\\\\1\end{bmatrix}
s⎣⎢⎢⎢⎢⎡u′v′1⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡r1r4r7r2r5r8r3r6r9t1t2t3⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡XYZ1⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
记为
sx′=[R∣t]P
sx'=\begin{bmatrix}R|t\end{bmatrix}P
sx′=[R∣t]P
这里的R和tR和tR和t代表了测试照片相对于参考点的朝向和位置
实际上直接线性变换准确率不高,一般使用其优化算法如EPnP, UPnP等
4.2 坐标变换
任意两个笛卡尔坐标系之间的旋转变换:
[X′Y′Z′]=[cosθ3sinθ30−sinθ3cosθ30001][cosθ20−sinθ2010sinθ20cosθ2][1000cosθ1sinθ10−sinθ1cosθ1][XYZ]
\begin{bmatrix}X'\\\\Y'\\\\Z'\\\\\end{bmatrix}=\begin{bmatrix}
cos\theta_3&sin\theta_3&0\\\\
-sin\theta_3&cos\theta_3&0\\\\
0&0&1
\end{bmatrix}
\begin{bmatrix}
cos\theta_2&0&-sin\theta_2\\\\
0&1&0\\\\
sin\theta_2&0&cos\theta_2
\end{bmatrix}
\begin{bmatrix}
1&0&0\\\\
0&cos\theta_1&sin\theta_1\\\\
0&-sin\theta_1&cos\theta_1
\end{bmatrix}
\begin{bmatrix}X\\\\Y\\\\Z\\\\\end{bmatrix}
⎣⎢⎢⎢⎢⎢⎢⎡X′Y′Z′⎦⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡cosθ3−sinθ30sinθ3cosθ30001⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡cosθ20sinθ2010−sinθ20cosθ2⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡1000cosθ1−sinθ10sinθ1cosθ1⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎡XYZ⎦⎥⎥⎥⎥⎥⎥⎤
说明:这里,我们假设坐标系O−XYZO-XYZO−XYZ依次绕自身X轴、Y轴、Z轴分别逆时针转θ1,θ2,θ3\theta_1,\theta_2,\theta_3θ1,θ2,θ3后可以与坐标系O′−X′Y′Z′O'-X'Y'Z'O′−X′Y′Z′重合
使用此方程既可以将R转换为相机的相对角度,也可以将定位结果从相机坐标系变换到世界坐标系
5. 参考文献
- [1] 高翔, 张涛. 视觉slam十四讲:从理论到实践[M]. 北京:电子工业出版社. 2017:84-90.
- [2] Ethan Rublee, Vincent Rabaud, Kurt Konolige, Gary R. Bradski: ORB: An efficient alternative to SIFT or SURF[C]. ICCV 2011: 2564-2571.
- [3] 高翔, 张涛. 视觉slam十四讲:从理论到实践[M]. 北京:电子工业出版社. 2017:151-152.
本文介绍了单目视觉中的对极几何理论,包括坐标系定义、极线约束以及三维重建的方法。通过对极几何的极线约束公式,求解相机的旋转和平移矩阵,并利用针孔相机模型进行三维点的重建。同时,探讨了PnP问题的解决,通过直接线性变换和坐标变换来获取相机位姿。
5050

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



