构造函数
Initializer::Initializer(const Frame &ReferenceFrame, float sigma, int iterations)参数: 参考帧(第一帧), 误差, 迭代次数 操作:读取参考帧的相机模型, 内参, 去畸变的特征点等传入参数
bool Initializer::Initialize(const Frame &CurrentFrame, const vector &vMatches12, cv::Mat &R21, cv::Mat &t21, vectorcv::Point3f &vP3D, vector&vbTriangulated) 参数: 当前帧(第二帧), 前后帧的匹配关系(), 参考帧到当前帧的旋转, 参考帧到当前帧的平移(==当前帧指向参考帧==), 三角化后的点, 特征是否被三角化过返回值:bool->初始化是否成功的标志 操作:
void Initializer::FindHomography(vector&vbMatchesInliers, float &score, cv::Mat &H21) 参数: 匹配的Inliers, 最后的得分, 单应矩阵 操作:
void Initializer::FindFundamental(vector&vbMatchesInliers, float &score, cv::Mat &F21) 参数: 匹配的Inliers, 最后的得分, 基础矩阵 操作:
这样就可以用一组匹配点构造两个约束(其实是三个,但是三个线性相关,所以只取前两个),所以自由度为8的单应矩阵需要四组匹配点就可以算出。 操作:
cv::Mat Initializer::ComputeF21(const vectorcv::Point2f &vP1,const vectorcv::Point2f &vP2) 参数:
本文仅做学术分享,如有侵权,请联系删文。