当前位置: 代码迷 >> 综合 >> ORB-SLAM2--初始化
  详细解决方案

ORB-SLAM2--初始化

热度:10   发布时间:2023-11-20 11:13:18.0

一.Initializer::FindHomography:单应矩阵,假设场景为平面的情况下--参考MVG 3.1变换不变性和归一化,算法3.2,2D单应的归一化DLT算法

(1) Normalize(mvKeys1,vPn1, T1);
特征点归一化,坐标均值为0,一价绝对值为1,归一化方便数据处理,保证程序运行加快收敛,归纳统一样本的统计分布性.归一化原理

 

程序里面的for()循环利用RANSAC算法,找到得分最高的Homography单应矩阵

(2) ComputeH21(vPn1i,vPn2i)--直接线性 (DLT) 变换求解单应矩阵--(参考翻译版<<计算机视觉中的多视图几何>>3.1节)

这里的单应矩阵Hn是利用归一化后的像素坐标进行操作的。在程序中vt是v的转置,所以最小的特征值对应的特征向量是vt的最后一行。

 恢复到原始的均值和尺度。

cv::Mat Hn = ComputeH21(vPn1i,vPn2i);
H21i = T2inv*Hn*T1;  //解除归一化
H12i = H21i.inv();

代码原理: 

(3)Initializer::CheckHomography:通过reference frame和current frame 两张图像匹配点重投影是否成功

--参考MVG 3.7 RANSAC鲁棒估计

(4)ReconstructH:通过H21矩阵输出 R t--参考MVG 3-估计--2D摄影变换

二.Initializer::FindFundamental:基础矩阵  假设场景为非平面的情况下--参考MVG 10.2归一化8点算法 F的归一化8点算法

(1) Normalize(mvKeys1,vPn1, T1);
特征点归一化,坐标均值为0,一价绝对值为1,归一化方便数据处理,保证程序运行加快收敛,归纳统一样本的统计分布性.归一化原理

程序里面的for()循环利用RANSAC算法,找到得分最高的Fundamental基础矩阵

(2)ComputeF21(vPn1i,vPn2i)--8点算法求解基础矩阵

恢复到原始的尺度--解除归一化

 F21i = T2t*Fn*T1; //解除归一化

(3)Initializer::CheckFundamental:通过reference frame和current frame 两张图像匹配点重投影是否成功--参考MVG 3.7 RANSAC鲁棒估计  基本原理和单应矩阵的相同

(4)ReconstructF:通过F21矩阵输出 R t  --参考MVG8.6.2 由本质矩阵恢复摄像机矩阵