4. 相机模型与非线性优化


声明:本文是深蓝学院 高翔博士主讲的《SLAM理论与实践》的学习笔记。

针孔相机模型与图像

照片记录了真实世界在成像平面上的投影。但这个过程丢弃了“距离”维度上的信息。普通相机可以用针孔模型很好地近似。

单目

相机坐标系内的小孔成像模型:

4. 相机模型与非线性优化

原始形式:
4. 相机模型与非线性优化

成像是倒立的一般相机会帮我们做翻转,这等价于 把成像平面从-f移动到f。得到更好的数学关系:4. 相机模型与非线性优化

整理之后得到:
4. 相机模型与非线性优化

成像平面到像素坐标:(1.缩放到像素平面上 2 由中心为原点的坐标转换为左上角为原点的坐标)
4. 相机模型与非线性优化

带入4. 相机模型与非线性优化得到:
4. 相机模型与非线性优化
4. 相机模型与非线性优化

fx,fy,cx,cy描述投影过程,它们称为相机内参。

矩阵形式(像素坐标为齐次坐标):4. 相机模型与非线性优化

传统习惯(像素坐标为非齐次坐标):
4. 相机模型与非线性优化

中间矩阵K称为内参数,内参通常在相机生产之后就已固定

丢失深度信息:同一直线上的投影点仍是同一个,k[X;Y;Z]=[kX,kY,kZ]kXkZ=XZ,kYkZ=YZ

4. 相机模型与非线性优化

相机坐标系与世界坐标系

先把P从世界坐标变到相机坐标系,再映射到像素坐标:

4. 相机模型与非线性优化

这里 R, t 或 T 称为外参.外参是SLAM估计的目标.

上面的公式就是观察方程g:
4. 相机模型与非线性优化

(注:右侧式子隐含了一次非齐次到齐次的变换,见书).

投影顺序:世界(Pw)——相机(TP_w)——归一化平面(1ZTPw)——像素(K1ZTPw)
4. 相机模型与非线性优化

针孔前的镜头会引入畸变.
4. 相机模型与非线性优化
4. 相机模型与非线性优化

4. 相机模型与非线性优化

双目

4. 相机模型与非线性优化

双目模型:

  • 左右相机中心距离称为基线b
  • 左右像素根据相似三角形存在几何关系:4. 相机模型与非线性优化
  • 整理得: 4. 相机模型与非线性优化 d称为视差(disparity),描述同一个点在左右目上成像的距离
    d最小为1个像素,因此双目能测量的z有最大值:fb
    虽然距离公式简单,但d不容易计算

RGB-D

RGB-D相机:物理手段测量深度

  • ToF或结构光两种主要原理
  • 通常能得到与RGB图对应的深度图

4. 相机模型与非线性优化

相机成像后,生成了图像
图像在计算机中以矩阵形式存储(二维数组)
需要对感光度量化成数值,例如0~255之间的整数(彩色图像还有通道)
4. 相机模型与非线性优化

实践:OpenCV/RGBD图像拼接

批量状态估计问题

SLAM的目的就是根据观测数据z和输入量u(例如IMU)来估计状态变量: x(就是定位,相机的外参), y(就是建图, 地图的观测点)

4. 相机模型与非线性优化

处理方法有很多种:

批量式(batch)

  • 一次给定所有的数据,估计所有的变量
  • 状态变量:4. 相机模型与非线性优化
  • 先不考虑运动方程,仅看观测方程(类似于SfM) ,根据贝叶斯法则有4. 相机模型与非线性优化

与之对应还有 增量式(incremental)

P(x|z)条件分布很难求解,但可以求:

  • 最大后验估计(Maximize a Posterior,MAP)4. 相机模型与非线性优化
  • 最大似然估计(Maximize Likelihood Estimation, MLE)4. 相机模型与非线性优化

“在哪种状态下,最容易产生当前的观测”

从最大似然到最小二乘:
4. 相机模型与非线性优化
现在要求x,y的最大似然估计,怎么求?

一般的高斯分布:4. 相机模型与非线性优化

负对数形式为: 4. 相机模型与非线性优化

最大化原问题相当于最小化它的负对数(最小化x时,只和最后一项有关)

因此,最大化似然 4. 相机模型与非线性优化
等价于最小化它的负对数(这货就是所谓的最小二乘):
4. 相机模型与非线性优化

我们把状态最大似然估计变成了最小二乘问题.

注意以上没有考虑运动方程.如果单独考虑运动方程则有P(xk|xk1,uk)=N(f(xk1,uk),Rk)

对于原问题(同时考虑运动方程和观测方程):4. 相机模型与非线性优化
定义误差: 4. 相机模型与非线性优化

根据前面的推导可知,需要最小化误差的二范数:4. 相机模型与非线性优化
其中Q,R是信息矩阵用来调节权重.4. 相机模型与非线性优化

直观解释:
由于噪声的存在,当我们把估计的轨迹与地图代入SLAM的运动、观测方程中时,它们并不会完美的成立。此时就调整状态的估计,使得误差最小化

该问题有何结构?
由许多个误差的平方和(或Sigma范数和)组成。
虽然总体维度高,但每个项很简单,只关联2个变量。
如果用李代数表达位姿,那么是无约束优化问题。

如何求解?
下面先来介绍通用的非线性最小二乘问题。

非线性最小二乘法

先考虑简单的问题: 4. 相机模型与非线性优化
其中xRn f为任意函数

当 f 很简单时,可以对f进行求导(dfdx=0) 将得到极值点或鞍点,比较这些解即可

当f复杂时:df/dx难求或df/dx=0很难求解。可以实用迭代方式求解。4. 相机模型与非线性优化

问题:如何确定这个增量?
答:确定增量的方法(即梯度下降策略):一阶的或二阶的

泰勒展开:4. 相机模型与非线性优化

若只保留一阶梯度(称为最速下降法(Steepest Method)):
4. 相机模型与非线性优化

若保留二阶梯度(称为牛顿法):4. 相机模型与非线性优化
令上式关于Δx的导数为零可得到 HΔx=JT

最速下降法和牛顿法虽然直观,但实用当中存在一些缺点

  • 最速下降法会碰到zigzag问题(过于贪婪 总是走曲线 导致迭代次数过多)4. 相机模型与非线性优化
  • 牛顿法迭代次数少,但需要计算复杂的Hessian矩阵

能否回避Hessian的计算 的同时减少迭代次数? (记住目的是求解增量Δx)

  • Gauss-Newton (属于线搜索方法:先找到方向,再确定长度): 一阶近似 f(x) 4. 相机模型与非线性优化 平方误差变为:4. 相机模型与非线性优化 令关于Δx导数为零:4. 相机模型与非线性优化 G-N用J的表达式近似了H 4. 相机模型与非线性优化
    Gauss-Newton简单实用但 Δxk=H1g无法保证H可逆。Levenberg-Marquadt 方法一定程度上改善了它

  • Levenberg-Marquadt(L-M属于信赖区域方法Trust Region,认为近似只在区域内可靠 会判断近似的好坏):考虑近似程度的描述(实际下降值 比上 理论下降值) 4. 相机模型与非线性优化
    若太小,则减小近似范围,若太大,则增加近似范围
    4. 相机模型与非线性优化 它可以看作改进版本的G-N。Trust Region内的优化,利用Lagrange乘子转化为无约束4. 相机模型与非线性优化 仍参照G-N展开,可得到增量方程为4. 相机模型与非线性优化 在Levenberg方法中,取D=I,则4. 相机模型与非线性优化 LM相比于GN,能够保证增量方程的正定性,即认为近似只在一定范围内成立,如果近似不好则缩小范围。从增量方程上来看,可以看成一阶和二阶的混合,参数λ控制着两边的权重

小结

  • 非线性优化是个很大的主题,研究者们为之奋斗多年,主要方法:最速下降、牛顿、G-N、L-M、DogLeg等
  • 与线性规划不同,非线性需要针对具体问题具体分析
  • 问题非凸时,对初值敏感,会陷入局部最优
    • 目前没有非凸问题的通用最优值的寻找办法
    • 问题凸时,二阶方法通常一两步就能收敛