特征点法流程:
- 在图像中提取特征点并计算特征描述 非常耗时, ~10 ms in orb
- 在不同图像中寻找特征匹配 非常耗时,O(n^2) in brute force matching
- 利用匹配点信息计算相机位姿 比较快速 < 1ms
不需要使用特征匹配的思路:
- 通过其他方式寻找配对点: 光流
- 不需要配对点:直接法
光流法
光流:追踪源图像某个点在其他图像中的运动 一般分为稀疏光流和稠密光流
- 稀疏以Lucas-Kanade(LK)光流为代表
- 稠密以Horn-Schunck(HS)光流为代表
- 本质是估计像素在不同时刻图像中的运动
LK光流法示意图
步骤: 设t时刻位于想x,y出像素点的灰度值为
在
时刻,该像素运动到了
希望计算运动
- 灰度不变假设:
- 注意:灰度不变是一种理想假设,实际当中由于高光/阴影/材质/曝光等不同,很可能不成立。
上式是一个二元一次线性方程,欠定
- 需要引用额外的约束
- 假定一个窗口内光度不变: 通过超定最小二乘解求得运动u,v
1.png
LK光流的结果依赖于图像梯度
- 但梯度不够平滑,可能剧烈变化
- 局部的梯度不能用于预测长期图像走向
- 解决方式: 多层光流
注解
- 可以看成最小化像素误差的非线性优化
- 每次使用Taylor一阶近似,在离优化点较远时效果不佳,往往需要迭代多次
- 运动较大是需使用金字塔
- 可以用于跟踪图像中的稀疏关键点的运动轨迹
- 得到配对点后,后续计算与特征法VO中相同
- 按方法可分为正向/反向 平移/组合的方式
直接法
光流仅估计了像素间平移,但
- 没有用到相机本身的几何结构
- 没有考虑到相机的旋转和图像的缩放
- 对于边界上的点,光流不好追踪
- 直接法则考虑了这些信息
直接法的推导
- 假设有两个帧,运动未知,但有初始估计R,t
- 第一帧上看到了点P,投影为p1
- 按照初始估计,P在第二帧上投影为P2
可以看到,直接法的雅克比项有一个图像梯度因子
- 因此,在图像梯度不明显的地方,对相机运动估计的贡献就小
根据使用的图像信息不同,可分为: 稀疏直接法:只处理稀疏角点或关键点 稠密直接法:使用所有像素 半稠密直接法:使用部分梯度明显的像素
直接法的直观解释
- 像素灰度引导着优化的方向
- 要使优化成立,必须保证从初始估计到最优估计中间的梯度一直下降
- 这很容易受到图像非凸性的影响(可部分地由金字塔减轻)
优缺点总结
- 优势
- 省略特征提取时间
- 只需有像素梯度而不必是角点(对白墙等地方效果较好)
- 可稠密或半稠密
- 劣势
- 灰度不变难以满足
- 单像素区分性差
- 图像非凸性