《视觉SLAM十四讲》第一版第九讲 设计前端0.2版本代码详细注释

在这里插入图片描述

两两帧之间的特征匹配流程:

捕获第一帧,将该帧设置为关键帧以及参考帧,使用ORB方法提取该帧的关键点并计算描述子,将这些关键点通过相机内参计算出对应的相机坐标系中的3D坐标,同时记录每个关键点对应的描述子。

捕获下一帧,同样提取关键点、计算描述子,然后与参考帧进行特征匹配(这里使用的是暴力匹配方法),根据匹配成功的点对使用3D-2DPnP方法来估计相机姿态。

3D-2DPnP来估计时的3D坐标应该要是世界坐标系的坐标,但是代码中用的却是相机坐标系,Tcw=TcrTrw
原因:将第一帧作为世界坐标系,假设第二帧的姿态是良好的,那么第二帧就是相对于第一帧的姿态,然后又将第二帧作为世界坐标系,通过第二三帧计算姿态,也就是相对于第二帧的姿态,那么第二个姿态
第一个姿态也就是第三帧相对于第一帧的姿态。
判断当前计算的相机姿态是否符合预设的阈值;
若符合,则当前帧的相机姿态=当前帧计算得到的相机姿态
参考帧的相机姿态(即Tcw=TcrTrwTcw​=Tcr​Trw​),并将当前帧作为参考帧计算关键点的3D坐标;然后还需判断当前帧是否为关键帧;
若不符合,说明该帧丢失,统计丢失帧总数,当丢失帧数目达到预设阈值,算法结束。

在这里插入图片描述

run_vo.cpp

猜你喜欢

转载自blog.csdn.net/qq_21950671/article/details/105932312