光流法需要提取关键点,而不需要计算描述子;直接法直接利用像素信息,无需特征点。
光流法基于 灰度不变假设,即第一帧中的关键点的灰度与其在第二帧中的像素灰度相同。假设该关键点在第一帧 ( x , y ) (x, y) (x,y) 处,表示为 I ( x , y ) I(x, y) I(x,y)(这个值是已知的),我们希望找出 ( Δ x , Δ y ) (\Delta x, \Delta y) (Δx,Δy),从而求出该关键点在第二帧中的像素坐标 I ( x + Δ x , y + Δ y ) I(x+\Delta x, y+\Delta y) I(x+Δx,y+Δy)。(这样根据灰度就直接找到了关键点的位置,省去了匹配的过程,速度更快。)
采用优化的方法:
min Δ x , Δ y ∥ I ( x , y ) − I ( x + Δ x , y + Δ y ∥ 2 2 \min_{\Delta x, \Delta y}\|\boldsymbol{I}(x, y)-\boldsymbol{I(x+\Delta x, y+\Delta y}\|_2^2 Δx,Δymin∥I(x,y)−I(x+Δx,y+Δy∥22
找出使像素灰度误差最小的位置坐标,即为关键点的位置。雅可比矩阵为第二张图像在 ( Δ x , Δ y ) (\Delta x, \Delta y) (Δx,Δy) 处的梯度。
步骤:
(1)第一帧提取关键点(不需要描述子);
(2)后一帧在前一帧的基础上跟踪,得到关键点的位置坐标;
(3)根据关键点匹配关系,对极几何恢复位姿
当相机运动较快,两张图像差异较大时,单层光流容易陷入局部最优,这时提出图像金字塔。
我们以原始图像为金字塔的底,以一定的倍率(如0.5)进行缩小(相当于与物体距离越来越远),假设原始图像特征点运动了 20 个像素,那么在缩小的图像里可能只运动了 5 个像素,搜索范围更小,优化结果可能就更好。
计算金字塔时从下往上,跟踪光流时从上往下,即由 粗至精。
具体步骤:
(1)构建图像金字塔(一层层缩放,最小的在顶层,原始图像在底层);
(2)从顶层开始,在第一帧中提取描述子,在第二帧得到对应点坐标;
(3)将跟踪成功的关键点坐标乘以缩放系数,得到下一层中的像素坐标,继续追踪;
(4)循环以上步骤,最终得到原始图像的关键点对,进而恢复位姿。
假设有一空间点 P \boldsymbol{P} P,他在图一中的位置 p 1 \boldsymbol{p}_1 p1 是已知的,我们的目的是找到他在图二中的特征点 p 2 \boldsymbol{p}_2 p2。基于灰度不变假设, p 2 \boldsymbol{p}_2 p2 和 p 1 \boldsymbol{p}_1 p1 的灰度值是一致的,也就是说我们希望在图二中找到和 p 1 \boldsymbol{p}_1 p1 灰度值相同的像素点。 定义误差函数:
e = I 1 ( p 1 ) − I 2 ( p 2 ) e=\boldsymbol{I}_1(\boldsymbol{p}_1)-\boldsymbol{I}_2(\boldsymbol{p}_2) e=I1(p1)−I2(p2)
其中,
p 1 = [ u v 1 ] 1 = 1 Z 1 K P \boldsymbol{p}_1=\left[\begin{array}{l} u \\ v \\ 1 \end{array}\right]_1=\frac{1}{Z_1}\boldsymbol{KP} p1= uv1 1=Z11KP
p 2 = [ u v 1 ] 2 = 1 Z 2 K ( R P + t ) = 1 Z 2 K ( T P ) 1 : 3 (7-8) \boldsymbol{p}_2=\left[\begin{array}{l} u \\ v \\ 1 \end{array}\right]_2=\frac{1}{Z_2}\boldsymbol{K}(\boldsymbol{RP+t})=\frac{1}{Z_2}\boldsymbol{K}(\boldsymbol{TP})_{1:3} \tag{7-8} p2= uv1 2=Z21K(RP+t)=Z21K(TP)1:3(7-8)
p 1 \boldsymbol{p}_1 p1 , P \boldsymbol{P} P 是已知的,那么要想光度误差最小,只需要不断优化迭代位姿 T \boldsymbol{T} T 即可。
那么, P \boldsymbol{P} P 是哪里来的呢?
一是 RGB-D 相机可以直接得到三维点坐标,二是双目相机根据视差计算像素深度,三是单目相机恢复三维点坐标。
相比于特征点法,直接法完全依靠优化来求解相机位姿。
(1)直接法优点
可以省去计算特征点、描述子的时间;
只需要像素梯度即可,不需要特征点,因此可以在缺失特征点的场合下使用;
可构件半稠密乃至稠密地图,这是特征点法做不到的。
(2)直接法缺点
非凸性:优化时容易进入极小,只有在运动很小的时候直接法才能成功,引入金字塔在一定程度上可减小非凸性影响。
单个像素没有区分度:选点少时效果较差,一般用 500 个点以上;
灰度不变假设是很强的假设,相机会自动调整曝光参数、或者光照变化,都会使得图像整体亮度发生变化。