1.前言
聊sim3之前需要聊聊单目视觉slam的尺度漂移问题:
单目尺度漂移问题:
单目视觉里程计前端主要涉及以下内容:
- 单目初始化:选择满足条件的前后帧图像,进行特征点提取与匹配,借助对极几何求取本质矩阵E,将本质矩阵分解得到前后帧位姿的R、t分量,随后,对图像匹配上的特征点进行三角化,以恢复空间点。(ps:分解得到的t仅是满足极线约束的特解,t乘以任意缩放系数所得到的新值仍满足约束条件。)
- 初始化成功后,对新进来的每一帧图像仍进行特征点提取与匹配,其中,和前一帧图像匹配上的部分特征点已三角化成功,此时,可以利用运动模型+BA/IMU预积分+BA/PNP,解算新图像帧与上一阵的R,t关系,并利用R,t对剩余特征点进行三角化。
然而,在第二步解算的R,t始终存在误差,这造成利用三角化恢复的特征点空间位置不准确,对新来的每一帧图像均存在这一问题,误差通过图像传递并积累,最终造成一段时间后三角化出来的特征点和初始化时的尺度不一致,即造成尺度漂移问题。
2.相似变换 sim3
由于上述单目尺度漂移的问题,在单目视觉检测到闭环时,当前帧和闭环帧对应的空间点在各自相机坐标系下的坐标不仅存在旋转R、平移t关系,还存在缩放s的关系,这一对应关系称为相似变换(Similarity Transformation),简称sim3,sim3=。
2.1 数学建模
给定匹配成功的两组三维点,分别记为{ }、{
},需找到如下变换关系,以描述{
}到{
}相似变换关系:
由于数据中不可避免存在噪声与误差,我们将上述任务转换为最小二乘求解问题,即寻找合适的尺度因子、旋转和平移,使得它在所有数据上的误差最小:
在正式开始求解时,需先定义一些相关变量:
两个三维点集合的质心定义如下:
每个{ }、{
}的去中心化坐标
:
其中:满足:
2.2 求解平移t
对(2)中的误差方程进行如下变换
简记:
由等式(5)可知,(6)式中间项:
故误差方程(6)进一步化简为:
(8)式仅有第二项与待求的平移t有关,易当平方项=0时,误差方程取得最小值,即平移最优解
为
即,若我们已知旋转R与缩放系数s,即可求取平移最优解。
2.3求解缩放因子
误差方程(8)可进一步简化为:
由于向量模长不受旋转的影响,故,(10)式可进一步表示为:
式(11)是关于s的一元二次方程,其极小值点为:
注意上述s为的方向为{ }→{
},然而按照此方法计算的
即按照上述求解的缩放因子不具备对称性,因此对式(10)重新简化为:
令第一项为0,可得满足对称性的缩放因子
此时,误差方程仅剩第二项,令最大,即可使误差方程最小。
2.4 求解旋转R
由于旋转矩阵受制于矩阵正交性的约束,而四元数代替旋转矩阵R仅需保证模长为1的约束,故使用四元数代替矩阵进行旋转的求解。
- 四元数的旋转计算:
空间三维点对应的四元数表示为
。
旋转用一个单位四元数来表示,则
旋转后的三维点用四元数表示为:
四元数的虚部即为旋转后的坐标。其中
表示取
的共轭。
- 四元数的性质1
三个四元数满足如下条件。直接相乘的形式,表示四元数乘法,中间的表示向量点乘。
- 四元数的性质2
假设四元数,则有
其中都是
的对称矩阵。
下面进入旋转矩阵R的求解,求误差方程(13)的最小值等价于求下式的最大值:
其中:
我们定义
其中
则
式(14)等价于:
依据拉格朗日法:
对计算偏导得:
由(17)可知 是矩阵N特征值为
的特征向量
将(17)代入(15)式可得:
因此,当取最大值时,
取得最大值,此时x对应为
最大特征值对应的特征向量;
对N进行特征值分解,求得最大特征值对应的特征向量就是待求的用四元数表示的{ }到{
}的旋转 。
3.总结
sim3计算步骤:
1、先计算旋转 。
具体来说,先构建 矩阵
然后得到矩阵 ,对
进行特征值分解,求得最大特征值对应的特征向量就是待求的用四元数表示的旋 转
。注意这里旋转的方向是
。
2、根据上面计算的旋转 来计算尺度
。
具体来说,可以使用以下两种方法来计算,第一种是具有对称性的尺度(推荐)
第二种是不具有对称性的尺度 (ORBSLAM使用)
3、根据旋转 和尺度
计算平移
Sim3的逆变换矩阵
假设Sim3的变换矩阵为:
那么,它的逆变换矩阵为:
ps:
本文部分内容参考《计算机视觉life》的ORB-SLAM2课程
文章出处登录后可见!