重投影误差
**重投影误差(Reprojection error)**是视觉SLAM中最基本的几何残差:它衡量一个假设的三维点和相机位姿在多大程度上能够解释一次实际的二维特征观测。取一个三维点 Xj(世界坐标系)、一个相机位姿 Ti∈SE(3)(世界到相机),以及该点在图像 i 中被观测到的像素位置 zij:
eij=zij−π(TiXj)
其中 π:R3→R2 是相机投影函数。对于内参为 (fx,fy,cx,cy) 的针孔相机,以及相机坐标系下的点 Xc=(X,Y,Z)T=TiXj:
π(Xc)=[fxX/Z+cxfyY/Z+cy]
该误差以像素为单位——可以直接与特征检测器的定位噪声(通常约为一个像素)相比较,这使得设置阈值和协方差变得容易。
从残差到代价函数
在观测噪声为高斯分布 zij∼N(π(TiXj),Σij) 的假设下,对位姿和地图点的最大似然估计恰好就是加权非线性最小二乘问题
C=(i,j)∈O∑eijTΩijeij
其中 Ωij=Σij−1 是信息矩阵,O 是(位姿,地图点)观测对的集合。每一项都是一个平方马氏距离;实践中 Σij 通常是各向同性的,并根据该特征被检测到的图像金字塔层级进行缩放(层级越粗糙=噪声越大=权重越低)。
由于错误匹配会产生巨大的残差,足以主导二次代价函数,实际系统会将每一项包裹在一个鲁棒核函数 ρ(Huber、Cauchy)中,得到 ∑ρ(eijTΩijeij),并剔除卡方值超过阈值的观测。
优化
该代价函数在位姿上是非线性的(通过 SE(3) 作用以及透视除法)。围绕当前估计将 e(x+Δx)≈e(x)+JΔx 线性化,并迭代求解高斯-牛顿正则方程 (JTΩJ)Δx=−JTΩe,是标准做法。根据链式法则,雅可比矩阵可分解为
∂(⋅)∂e=−∂Xc∂π⋅∂(⋅)∂Xc
其中 ∂π/∂Xc 是一个 2×3 矩阵,包含 1/Z 以及 −X/Z2、−Y/Z2 项;第二个因子则根据我们对位姿求导(通过李代数扰动,得到 2×6)还是对地图点求导(得到 2×3)而有所不同。
哪些问题在最小化它
- 仅优化运动(PnP细化/跟踪):固定地图点,优化单个位姿。
- 仅优化结构(三角化细化):固定位姿,优化地图点。
- 完整光束法平差:联合优化所有位姿和地图点——这是黄金标准。
可供对比的替代方案:光度误差(直接法比较像素强度而非特征位置)以及三维点到点/点到面误差(ICP)。当存在可靠的特征对应关系时,重投影误差是首选,因为它的像素空间噪声模型与测量实际产生的方式相匹配。
对SLAM的意义
- 它是视觉SLAM的观测模型:几乎每一个基于特征的估计器——PnP细化、三角化、局部和全局光束法平差、因子图中的视觉因子——都在最小化它。
- 它的卡方统计量为匹配剔除和RANSAC内点计数提供了原理性的离群点检验方法。
- 它的雅可比结构(每个误差项恰好耦合一个位姿和一个地图点)造就了通过Schur补使光束法平差可处理的稀疏性。
相关条目