ORB_SLAM3:单目+IMU初始化时—初始化帧与当前帧需要满足的条件

成员变量mbReadyToInitializate:是否创建了单目初始化参考帧

1、单目初始化参考帧提取的特征点数目必须大于100个;

2、单目初始化参考帧的下一帧提取的特征点数目必须大于100个,否则mbReadyToInitializate = false,需重新创建单目初始化参考帧;

3、mSensor == System::IMU_MONOCULAR且当前帧上一帧的时间戳比单目初始化参考帧的时间戳大于1秒,mbReadyToInitializate = false,需重新创建单目初始化参考帧;(注:该条件是针对恢复R、t过程中初始化失败的

4、初始化的两帧之间的匹配点少于100个,mbReadyToInitializate = false,需重新创建单目初始化参考帧。

恢复R、t过程中初始化失败时,mbReadyToInitializate = true,不需重新创建了单目初始化参考帧,下一帧图像是在创建了单目初始化参考帧的情况下进行初始化。

5、通过单应矩阵(H)恢复R、t的情况下:

1)SVD分解H时奇异值非降序排列,此时初始化失败。

2)求出的世界坐标系下的坐标(x3Dh)的第四个值为0,此时初始化失败。

3)条件一:8组R、t中成功恢复地图点第二多的要小于成功恢复地图点第一多的0.75倍;

条件二:8组R、t中成功恢复地图点第一多的视差角要要大于等于1度;

条件三:8组R、t中成功恢复地图点第一多的个数要大于50;

条件四:8组R、t中成功恢复地图点第一多的个数要大于通过了卡方检验的匹配的0.9倍。

若上面的四个条件不能同时满足,则初始化失败,程序中的判断条件如下:

if(secondBestGood < 0.75 * bestGood && bestParallax >= minParallax && bestGood > minTriangulated && bestGood > 0.9 * N)

6、通过基础矩阵(F)恢复R、t的情况下:

1)重建出的点数要大于90%的匹配点与50的最大值,F分解出的4组R、t应该只有一组很好的解(nsimilar不能大于1),否则初始化失败。

int nsimilar = 0;
if (nGood1 > 0.7 * maxGood)
    nsimilar++;
if (nGood2 > 0.7 * maxGood)
    nsimilar++;
if (nGood3 > 0.7 * maxGood)
    nsimilar++;
if (nGood4 > 0.7 * maxGood)
    nsimilar++;
// 判断条件
if (maxGood < nMinGood || nsimilar > 1)

2)求出的世界坐标系下的坐标(x3Dh)的第四个值为0,此时初始化失败。

3)3D点中较小的视差角parallaxX要大于1度,否则初始化失败。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值