一、概念
VO的目标是根据拍摄的图像估计相机的运动。主要分为特征点法和直接方法。特征点法能够在噪声较大、相机运动较快时工作,构建地图是稀疏特征点;直接方法不需要提特征,能够建立稠密地图,计算量大,目前鲁棒性不好。
二、原理
利用图像信息恢复车身本体的六自由度运动,包括三自由度的旋转和三自由度的平移。基于图像信息的自运动估计方法。特征点法的基本步骤包括:特征提取、特征匹配、坐标变换和运动估计。与此联系紧密的两个研究领域是形状信息运动复原(SFM)算法和SLAM算法。SLAM中,实时估计相机的位置和标志的空间位置及其关联。早期的SLAM依靠深度传感器,近年来VSLAM得到关注,其计算本质与基于非线性滤波器的视觉里程计系统相似。
SFM是从二维图像中恢复三维场景结构及摄像机本身的六自由度运动的方法。
双目系统对于较远的物体,退化为单目系统。
三、双目视觉里程计原理
输入:左右相机图像序列,时刻t和t+1时采集的图像It和It+1,相机内参文件已标定好。
输出:针对不通帧图像对,估算出两帧图像之间的旋转矩阵R和平移向量T。
算法步骤:
1. 捕捉图像对It和It+1。
2. 畸变校准。
3. 计算t和t+1的视差图。
4. 使用FAST算法检测图像It中的特征,与It+1中的特征匹配。
5. 利用深度图,计算匹配特征点的3D坐标值,获得两组点云数据。
6. 选取点云子集,使得所有匹配都是兼容的。
7. 估算内点inliers。
四、实现
1. 畸变校准
OpenCV Undistortion, Rectification
2. 视差图
OpenCV DisparityMap Computation
3. 特征检测
Feature Detection
4. 特征描述和匹配
5. 三角测量和点云
6. 内点检测
7. 旋转矩阵和向量转换
参考: