目录
5、(问答题) ORB_SLAM中为什么要进行特征点的均匀化?有什么好处?请调研至少1种以上其他可以实现均匀化的方法?
5、(问答题) ORB_SLAM中为什么要进行特征点的均匀化?有什么好处?请调研至少1种以上其他可以实现均匀化的方法?
有人对该问题做了实验对比:https://blog.csdn.net/yong_qi2015/article/details/106700580
好处可以总结为:避免特征点扎推,最终能提高建图和定位精度
四叉树均匀化
6、(问答题) 题目:单目相机SLAM是视觉SLAM所需最小的配置,应用非常广泛,而其中单目初始化尤其重要。这里我们自己实现了一个单目相机初始化流程,包括:提取特征点,特征匹配和筛选,位姿估计,三角化。代码框架已经写好了,推荐环境:ubuntu 18.04, OpenCV 3.4.6。
任务1
需要你在缺失的两个地方补充如下代码:
第1处:在 feature_match 函数中:
// ---------- homework1:用GMS方法筛选暴力匹配结果中正确的匹配对 --------------//
// ---------------- 代码开始 -----------------//
std::vector<bool> vbInliers;
int num_inliers;
gms_matcher gms(keypoints_1, img_1.size(), keypoints_2, img_2.size(), Matches_bf);
num_inliers = gms.GetInlierMask(vbInliers, false, false);
cout << "Get total " << num_inliers << " matches." << endl;
// collect matches
for (size_t i = 0; i < vbInliers.size(); ++i)
{
if (vbInliers[i] == true)
{
matches_gms.push_back(Matches_bf[i]);
}
}
// ---------------- 代码结束-----------------//
答:
1.参数的初始化
2.确定第一帧图像,后续以此帧相机坐标系为世界坐标系
3.依次对后续每一帧进行特征点提取,匹配,筛选,三角化等操作,直到可以找到可以初始化的那一帧结束
3.1.对每一帧进行特征点提取
3.2.使用GMS方法对暴力匹配的结果进行筛选
3.3.根据筛选后的匹配点对进行位姿估计
3.4.根据估计的位姿,以及匹配点对关系,三角化空间点
3.5.对空间点进行重投影检验,提出误差较大的匹配对
3.6.对空间点进行观察角度检验,提出观察角度小于设定角度的点
3.7.检查剩余的点数以及角度关系是否满足要求,满足则初始化完成,不满足则使用下一张进行初始化
4.绘制内外点匹配点对,绘制内外点的重投影
这一处主要是找到GMS的论文和代码就行了!
【参考】
https://blog.csdn.net/zhangjunhit/article/details/77891666
第2处:在 triangulation 函数中:
// ---------- homework2:筛选内外点,参考ORB-SLAM2中单目初始化代码实现 --------//
// ---------------- 代码开始 -----------------//
// 根据重投影误差筛选内外点
vector<int> inlier3dPoints;
//...
int sum = std::accumulate(inlier3dPoints.begin(), inlier3dPoints.end(), 0);
printf("经过重投影误差筛选后,有效3D点数为:%d / %d \n", sum, inlier3dPoints.size());
// 根据三角化夹角来筛选合格的三维点
vector<double> cosinPts;
//...
printf("经过角度筛选后,有效3D点数为: %d / %d \n",cosinPts.size() , inlier3dPoints.size());
// ---------------- 代码结束 -----------------//
答:与ORB-SLAM2代码差在给的数据类型上,没有做出来,等讲解学习吧!
任务2
根据运行结果分析外点被删除的原因。
答:在ORB-SLAM2代码中,剔除匹配对的情况有:
- 三角化的三维点坐标不合法(无穷值)
通过三维点深度值正负、两相机光心视差角大小来检查不合法(负值不合法,视差比较小时,重投影误差较大不合法)
计算空间点在参考帧和当前帧上的重投影误差,如果大于阈值则舍弃
题目代码下载:
链接:https://pan.baidu.com/s/1AznfTbMULCBtEt5PqK7Nfw
提取码:d4n5
提交作业请通过百度网盘压缩包上传可以编译的完整代码,设置永久链接,方便批改,谢谢
【参考】