@
误差定义
outlier、外点、野值会严重影响SLAM的精度,因此必须把它们剔除。常用的做法是,计算一个误差,当这个误差大于设定阈值的时候就认为其为外点。
就特征点法的视觉SLAM而言,一般会计算重投影误差。具体而言,记 (mathbf u)为特征点的2D位置,(overline{mathbf{u}})为由地图点投影到图像上的2D位置。重投影误差为
重投影误差服从高斯分布
其中,协方差(sigma)一般根据特征点提取的金字塔层级确定。具体的,记提取ORB特征时,图像金字塔的每层缩小尺度为(s) (ORB-SLAM中为1.2)。在ORB-SLAM中假设第0层的标准差为1个pixel (ORB-SLAM中设为了1个pixel);那么,一个在金字塔第n层提取的特征的重投影误差的协方差为:
式(1)中的误差是一个2维向量,阈值不好设置。那就把它变成一个标量,计算向量的内积(r) (向量元素的平方和)。但是,不同金字塔层的特征点都用同一个阈值,不合理呢。于是,在计算内积的时候,利用协方差进行加权(协方差表达了不确定度)。那么就有了
利用协方差加权,起到了归一化的作用。具体的(4)式,可以变为
而
为多维标准正态分布
阈值选取
式(5)可以看做两个独立的服从标准正太分布随机变量的平方和,它服从2个自由度的(Chi-squared distribution)卡方分布。
卡方分布的自由度即为向量的维度。不同的自由度卡方分布的概率密度函数和概率分布函数如下:
取(alpha=0.05, F(x)=1-alpha=0.95) 可以得到95%置信度的置信区间为((0,F^{-1}(alpha))),即
查卡方分布表可得
对应的单目投影为2自由度,因此阈值为5.99;对应的双目投影为3个自由度,因此阈值为7.81。