【ORB-SLAM3】鲁棒核函数的阈值设置

问题背景

阈值 δ \delta δ 是 Huber 鲁棒核函数的重要参数。首先给出结论,在ORB-SLAM系列中,该阈值选取的原则为:

  • 单目情况下,根据95%置信水平下两自由度卡方检验 的临界值, δ \delta δ 设置为 5.991 \sqrt{5.991} 5.991 ;
  • 双目情况下,根据95%置信水平下三自由度卡方检验 的临界值, δ \delta δ 设置为 7.815 \sqrt{7.815} 7.815 ;

下面详细描述了以这种方式设置Huber损失函数的原因。

Huber鲁棒核函数

使用的Huber鲁棒核函数定义如下:


当误差 e e e 超过阈值 δ \delta δ 时,函数的增长从二次型变为线性型。在构建视觉重投影误差的背景下,我们假设当重投影误差超过某个阈值时,有95%的置信度认为是由于错误匹配导致的离群点,从而以线性的方式添加到代价函数中;否则,以二次函数方式计算误差。通过这样的方式,限制了错误匹配对优化算法的影响。

单目相机分析

接下来,我们首先分析单目相机配置中的重投影误差。令 u ∈ R 2 \mathbf{u} \in \mathbb{R}^2 u∈R2 表示图像特征点的二维(2D)像素位置,并令 u ‾ ∈ R 2 \overline{\mathbf{u}} \in \mathbb{R}^2 u∈R2 表示从三维点 P ∈ R 3 \bm{P} \in \mathbb{R}^3 P∈R3 重投影到图像上的2D像素位置,则重投影误差 e v \bm{e}_v ev 为:


其中 ( f x , f y ) (f_x, f_y) (fx,fy) 是相机焦距, ( c x , c y ) (c_x, c_y) (cx,cy)是主点,均从标定过程已知。 Π m ( ⋅ ) \Pi_m(\cdot) Πm(⋅) 是单目相机投影模型。我们假设重投影误差遵循高斯分布:

然后利用协方差对重投影误差进行归一化,得到:

这意味着它遵循二维标准正态分布,因此由其各分量的平方和相加得到的统计量服从自由度为2的卡方分布

双目相机分析

对于双目配置的情况,我们令观测量为 3 维 ,即由左相机图像的特征点横纵坐标 + 右相机特征点的横坐标组成 (在双目立体相机配置下,左右图像特征点的纵坐标就是相同的)。令 u z ∈ R 3 \mathbf{u}_z \in \mathbb{R}^3 uz∈R3 为双目立体相机的特征点观测量, u ‾ z ∈ R 3 \overline{\mathbf{u}}_z \in \mathbb{R}^3 uz∈R3 表示从三维地图点 P ∈ R 3 \bm{P} \in \mathbb{R}^3 P∈R3 重投影到图像上的像素位置,则重投影误差 e v \bm{e}_v ev 为:

其中 Π s ( ⋅ ) \Pi_s(\cdot) Πs(⋅) 为双目相机投影模型。 ( f x , f y ) (f_x, f_y) (fx,fy) 是相机焦距, ( c x , c y ) (c_x, c_y) (cx,cy)是主点, b b b 是基线长度,均从内参标定中已知。与单目配置情况类似,利用协方差对双目重投影误差进行归一化,其服从三维标准正态分布,因此由其各分量的平方和相加得到的统计量服从自由度为3的卡方分布

相关推荐
草莓熊Lotso21 分钟前
【数据结构初阶】--算法复杂度的深度解析
c语言·开发语言·数据结构·经验分享·笔记·其他·算法
KyollBM27 分钟前
【CF】Day75——CF (Div. 2) B (数学 + 贪心) + CF 882 (Div. 2) C (01Trie | 区间最大异或和)
c语言·c++·算法
CV点灯大师42 分钟前
C++算法训练营 Day10 栈与队列(1)
c++·redis·算法
GGBondlctrl1 小时前
【leetcode】递归,回溯思想 + 巧妙解法-解决“N皇后”,以及“解数独”题目
算法·leetcode·n皇后·有效的数独·解数独·映射思想·数学思想
武子康1 小时前
大数据-276 Spark MLib - 基础介绍 机器学习算法 Bagging和Boosting区别 GBDT梯度提升树
大数据·人工智能·算法·机器学习·语言模型·spark-ml·boosting
武子康1 小时前
大数据-277 Spark MLib - 基础介绍 机器学习算法 Gradient Boosting GBDT算法原理 高效实现
大数据·人工智能·算法·机器学习·ai·spark-ml·boosting
Andrew_Xzw2 小时前
数据结构与算法(快速基础C++版)
开发语言·数据结构·c++·python·深度学习·算法
超的小宝贝3 小时前
数据结构算法(C语言)
c语言·数据结构·算法
木子.李3479 小时前
排序算法总结(C++)
c++·算法·排序算法