一.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 由本质矩阵恢复摄像机矩阵