**

本文介绍了单目视觉中的对极几何理论,包括坐标系定义、极线约束以及三维重建的方法。通过对极几何的极线约束公式,求解相机的旋转和平移矩阵,并利用针孔相机模型进行三维点的重建。同时,探讨了PnP问题的解决,通过直接线性变换和坐标变换来获取相机位姿。

理论重述

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,p2sss表示深度,则有
{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=tR,称为本征矩阵

[p2;1]TK-TEK-1[p1;1] = 0

通过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} Zuv1=fx000fy0cxcy1XYZ
说明:[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}[uv1],或称为像素坐标在归一化平面上的齐次坐标,显然
[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 [uv1]T=[X/ZY/Z1]T
使用三角测量求解深度,设某一空间点在两帧图像上的深度为s1和s2s_1和s_2s1s2,以第一帧图像的相机坐标系为世界坐标系,根据对极几何,
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} s1u1v11=s2r1r4r7r2r5r8r3r6r9u2v21+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和tRt,一般通过极限约束求得本征矩阵EEE,再分解本征矩阵得到R和tR和tRt,本实验的两张参考照片的相对变换仅在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} suv1=r1r4r7r2r5r8r3r6r9t1t2t3XYZ1
记为
sx′=[R∣t]P sx'=\begin{bmatrix}R|t\end{bmatrix}P sx=[Rt]P
这里的R和tR和tRt代表了测试照片相对于参考点的朝向和位置

实际上直接线性变换准确率不高,一般使用其优化算法如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} XYZ=cosθ3sinθ30sinθ3cosθ30001cosθ20sinθ2010sinθ20cosθ21000cosθ1sinθ10sinθ1cosθ1XYZ
说明:这里,我们假设坐标系O−XYZO-XYZOXYZ依次绕自身X轴、Y轴、Z轴分别逆时针转θ1,θ2,θ3\theta_1,\theta_2,\theta_3θ1θ2θ3后可以与坐标系O′−X′Y′Z′O'-X'Y'Z'OXYZ重合

使用此方程既可以将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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值