视觉里程计(四)

1.直接法

如下图为空间点P在第一帧和第二帧的映射,而R,t( exp(ξ) e x p ( ξ ∧ ) )则为第一帧到第二帧的转换矩阵。在直接法中,不通过特征法,而是通过相机的位姿(在直接法中是已知的)来估计第二个相机中的像素位置。

直接法:当相机估计位置不好时, p2 p 2 p1 p 1 的外观就会有差别。通过优化位姿,来减小差别。这个又是一个最小二乘的问题,其中判断的不是通过重投影误差,而是通过光度误差,也就是俩个像素的亮度误差: e=I1(p1)I2(p2) e = I 1 ( p 1 ) − I 2 ( p 2 )

视觉里程计(四)_第1张图片

对于亮度误差的优化,可用范数表示为: minξJ(ξ)=||e||2 m i n ξ J ( ξ ) = | | e | | 2 (这个是对于一个点而言的),但是这种优化的前提是 灰度不变假设(即同个像素在不同时刻的灰度是不变的)

如果说空间有N个点,那么整个相机位姿估计问题变为: minξJ(ξ)=||e||22 m i n ξ J ( ξ ) = | | e | | 2 2 ,这里的 ξ ξ 表示的是李代数,在这个优化的过程中,我们需要的是,对李代数进行优化,使得误差最小。

e(ξδξ)=I1(1Z1KP)I2(1Z1Kexp(δξ)exp(ξ)P) e ( ξ ⊕ δ ξ ) = I 1 ( 1 Z 1 K P ) − I 2 ( 1 Z 1 K e x p ( δ ξ ) e x p ( ξ ∧ ) P )

I1(1Z1KP)I2(1Z1Kexp(1+δξ)exp(ξ)P) ≈ I 1 ( 1 Z 1 K P ) − I 2 ( 1 Z 1 K e x p ( 1 + δ ξ ∧ ) e x p ( ξ ∧ ) P )

=I1(1Z1KP)I2(1Z2Kexp(ξ)P+(1Z2K(δξexp(ξ)P))qu) = I 1 ( 1 Z 1 K P ) − I 2 ( 1 Z 2 K e x p ( ξ ∧ ) P + ( 1 Z 2 K ( δ ξ ∧ e x p ( ξ ∧ ) P ) ) q u )

其中,q为扰动分量在第二个相机坐标系下的坐标,u为他的像素。

利用泰勒展开得到 e(ξδξ)=e(ξ)I2uuqqδξδξ e ( ξ ⊕ δ ξ ) = e ( ξ ) − ∂ I 2 ∂ u ∂ u ∂ q ∂ q ∂ δ ξ δ ξ

于是,根据前面讲的雅克比矩阵推导,我们可得:

1. I2u ∂ I 2 ∂ u 为u处的像素梯度。

2. uq ∂ u ∂ q 为投影方程关于相机坐标系下的三维点的导数为: uq=fx00fyZfxXZ2fyYZ2 ∂ u ∂ q = [ f x 0 − f x X Z 2 0 f y Z − f y Y Z 2 ]

3. uδξ ∂ u ∂ δ ξ 为变换后的三维点对变换后的导数 uδξ=[Iq] ∂ u ∂ δ ξ = [ I − q ∧ ]

合起来后,我们有: eδξ=fxZ00fyZfxXZ2fyXZ2fxXYZ2fyfyY2Z2fx+fxX2Z2fyXYZ2fxYZfxXZ2 ∂ e ∂ δ ξ = − [ f x Z ′ 0 − f x X ′ Z ′ 2 − f x X ′ Y ′ Z ′ 2 f x + f x X 2 Z ′ 2 − f x Y ′ Z ′ 0 f y Z ′ − f y X ′ Z ′ 2 − f y − f y Y ′ 2 Z ′ 2 f y X ′ Y ′ Z ′ 2 f x X ′ Z ′ 2 ]

于是,对于直接法的,推导出的雅克比矩阵为: J=quuδξ J = − ∂ q ∂ u ∂ u ∂ δ ξ

2.直接法的讨论

根据空间点P的来源,可分为:
1.P来自稀疏关键点,称为稀疏直接法,通常使用数百个至上千个关键点。
2.P来自部分像素,如果像素梯度为0的话,整项雅克比矩阵就为0,因此只考虑带有梯度的像素,舍弃像素梯度不明显的地方。半稠密直接法。
3.P为所有像素,稠密直接法。

稀疏方法可以快速地求解相机位姿,而稠密的方法可以建立完整地图。

相比于特征点法,直接法完全依靠优化来求解相机位姿。如下图,像素梯度能够把优化引导到正确的方向。

视觉里程计(四)_第2张图片

是否真的按照梯度走就能走到一个最优值?直接法的梯度是直接由图像梯度确定的,因此我们必须保证沿着图像梯度走时,灰度误差会不断下降。然而,图像是一个很强烈的非凸函数,很容易由于图像本身的非凸性进入一个最小值,无法继续优化只有当相机运动很小时,图像中的梯度不会有很强的非凸性。

3.直接法优缺点总结

优点:
1.可以省去计算特征点、描述子时间。
2.只要求有像素梯度,不需要特征点。
3.可以构建半稠密乃至稠密地图,这是特征法无法做到的。

缺点:
1.非凸性。依靠梯度搜索很容易陷入极小值,除非运动很小。
2.单个像素没有区分度。计算图像块或者计算复杂的相关性。
3.灰度值不变是很强的假设。

你可能感兴趣的:(SLAM,《SLAM,14讲》个人提炼笔记)