摘要
本文提出了一种实时的基于双目视觉的视觉里程计方法。这种方法用来估计连续立体图像对的帧到帧相机运动。与传统的视觉里程计方法不同的是:
- 它没有关于摄像机运动的先验信息;
- 它是在由单独的立体视觉算法中计算得到的稠密视差图像上操作的。
Pipline
对图像预处理
- 对齐:旋转图像平面使得对极线与图像行对齐
- 滤波:使用边缘保留滤波器平滑整流后的图像,以去除高频分量。
- 利用sum-of-absolute differences (SAD)或者CENSUS来构建视差图像,利用像素周围一小块区域进行匹配。
输入描述
$J_a$和$D_a$分别代表在ta时刻的预处理过的图像和视差图像。$J_b$,$D_b$分别代表tb时刻的预处理图像和视差图像
特征点检测 $(J_a,D_a; J_b,D_b) → (F_a; F_b)$
首先在a帧的左图中检测Harris或FAST角点(速度较快)并在视差图中寻找对应,如果视差图中对应位置没有值则舍弃该特征点,并根据此视差值计算特征点在右图上的位置。通过特征点在左右图像中的位置以及摄像机矩阵就可以计算出该特征点世界坐标系下的位置$w$。并且取特征点周围$m$窗格大小的像素值作为该特征点的描述子$s$,$m$须为奇数,这样描述子的大小$m*m-1$能被$8$整除。令$f_a = (j,w,s)$表示一个特征,$j$为特征在图像上的坐标,$w$为特征点的世界坐标,$s$为描述子。令$F_a$为$a$帧上所有特征的集合 重复以上操作找到$b$帧上的特征集$F_b$ 算法实现上可以使用光流法进行优化,只需计算第一帧的特征集,后面一帧的特征可以通过前一帧的特征追踪得到。
构建得分矩阵 $(F_a, F_b) → S$
使用$F_a$和$F_b$中两两之间特征描述符之间的绝对差值和构建出得分矩阵
特征匹配 $(F_a, F_b, S) → M$
利用得分矩阵匹配$F_a$和$F_b$之间的特征。对于特征集$F_a$的特征$f_a$找出得分矩阵中与之分数最低的特征$f_b’$;对于特征集$F_b$的特征$f_b$找出得分矩阵中与之分数最低的特征$f_a’$。如果$f_a’ = f_a$ 且 $f_b = f_b’$ 就认为$f_a$和$f_b$是一对匹配的特征$(f_a,f_b)$构建出一个匹配集。
找到最大的内点集
使用世界坐标上的简单刚度约束,为$M$中匹配的所有成对组合计算一致性矩阵$W$. 如果帧$a$中的两个要素之间的距离(以世界坐标测量)与帧$b$中相应要素之间的距离相同,则一对匹配是一致的。如果匹配点$(f_a,f_b)$与$(f_a’,f_b’)$满足不等式
这里$\omega$表示特征的世界坐标,$\delta$表示一个修正的阈值。那么一致性矩阵$\mathrm W_{(a,b)}=1$否则为$0$。 矩阵$\mathrm W$其实是一个无向图的邻接矩阵,需要找到这个无向图的一个最大团,也就是找出这个无向图的最大完全子图。先找出度最大的一个结点,那么最大团将从这个结点及其邻接点中产生,然后在这些邻结点中找出度最大的那个结点,放入最大团中,然后再在邻接点中找到与最大团中所有结点相邻的度最大的结点,直到找不到这样的结点。这样就得到了一个最大团集合$Q$。
估计运动 $Q → \Delta_{ab},\varepsilon$
我们利用求出的最大团找出变换$\Delta_{ab}$最小化重投影误差
这里$j$表示特征的图像坐标$\omega$表示特征的世界坐标,$P$是摄像机投影矩阵。利用列文伯格方法可以求得一个最优解。丢弃那些重投影误差较大的匹配,然后再运行一次最优化方法。