学习记录-视觉SLAM十四讲第2版(九)

文章目录

  • 前言
  • 一、实践部分
    • 1.orb_cv项目
    • 2.orb_self项目
    • 3.pose_estimation_2d2d项目
    • 4.triangulation项目
    • 5.pose_estimation_3d2d项目
    • 6.pose_estimation_3d3d项目
  • 二、第7讲的普通习题
    • 1.其他特征点
    • 2.统计提取1000个特征点的耗时
    • 4.其他加速匹配的方式
    • 5.其他PnP方法
    • 6.在PnP中考虑第一个相机的观测
    • 7.在ICP中考虑空间点的优化
  • 总结


前言

系统环境:ubuntu20.04
鸽了好久的视觉SLAM十四讲的第7讲好歹是发出来了,这一节真的好长,而且说实话好难,第一遍看完还是有些晕,估计得后面自己真的用上了,再好好体会感悟一遍。


一、实践部分

其他使用imshow展示的图片截图太麻烦了,就不展示了。

1.orb_cv项目

这里值得注意的是描述子之间的距离是有上下限的,尤其是会设置一个下限经验值30。
学习记录-视觉SLAM十四讲第2版(九)_第1张图片

2.orb_self项目

学习记录-视觉SLAM十四讲第2版(九)_第2张图片

3.pose_estimation_2d2d项目

学习记录-视觉SLAM十四讲第2版(九)_第3张图片

4.triangulation项目

学习记录-视觉SLAM十四讲第2版(九)_第4张图片

5.pose_estimation_3d2d项目

学习记录-视觉SLAM十四讲第2版(九)_第5张图片

6.pose_estimation_3d3d项目

学习记录-视觉SLAM十四讲第2版(九)_第6张图片

二、第7讲的普通习题

1.其他特征点

常见的特征点还有FAST特征点、SIFT特征点。SIFT和SURF的原理如下:
SIFT(尺度不变特征变换):Sift是一种基于尺度空间的,对图像缩放、旋转、甚至仿射变换保持不变性的图像局部特征描述算子。分为特征点提取、特征点描述和特征点匹配三个步骤。
SURF(加速稳健特征):Surf是对David Lowe在1999年提出的Sift算法的改进,提升了算法的执行效率,为算法在实时计算机视觉系统中应用提供了可能。SURF在两个地方进行了改进,一个是积分图在Hessian(黑塞矩阵)上的使用,一个是降维的特征描述子的使用。
三种之间的比较:
计算速度:ORB>>SURF>>SIFT(各差一个量级)
旋转鲁棒性:SURF>ORB~SIFT(表示差不多)
模糊鲁棒性:SURF>ORB~SIFT
尺度变换鲁棒性:SURF>SIFT>ORB(ORB并不具备尺度变换性)
参考资料:
1、图像特征点
2、3种特征点的比较
3、Surf算法特征点检测与匹配

2.统计提取1000个特征点的耗时

我这边看了opencv的一些介绍,使用了BRISK,一开始还担心不知道特征点够不够1000个,因此把数量输出来看了一下。

Ptr<FeatureDetector> detector =  BRISK::create();
Ptr<DescriptorExtractor> descriptor = BRISK::create();

学习记录-视觉SLAM十四讲第2版(九)_第7张图片
参考资料:相关函数的介绍

4.其他加速匹配的方式

FLANN算法主要内嵌了随机k-d树算法、优先搜索k-means树算法、层次聚类树这三种算法,并且对这些分类匹配算法都进行了优化,因此能够加速匹配。此外除了这个方法还可以通过GPU进行加速。
参考资料:FLANN算法说明

5.其他PnP方法

打开了这个函数的详细解释,发现其默认的参数是SOLVEPNP_ITERATIVE也就是使用列文伯格马夸尔特法迭代求解。这里让我们换其他方法进行求解。
在这里插入图片描述
可以发现除了SOLVEPNP_ITERATIVE这个方法可以选之外还有SOLVEPNP_EPNP、SOLVEPNP_P3P 、SOLVEPNP_DLS、SOLVEPNP_UPNP、SOLVEPNP_AP3P、SOLVEPNP_IPPE、SOLVEPNP_IPPE_SQUARE、SOLVEPNP_SQPNP一共八个。
学习记录-视觉SLAM十四讲第2版(九)_第8张图片
对比了一下上面,发现比原本默认的那个迭代方法还要慢。。。
EPNP:是将所有的3D点都转化为用四个非共面的点进行表示,后面对这四个点进行优化,因此比较高效。
参考资料:Epnp

6.在PnP中考虑第一个相机的观测

待补充,一遇到改代码的题,头就疼,看了半天还是没有多大理解。

7.在ICP中考虑空间点的优化

待补充,一遇到改代码的题,头就疼,看了半天还是没有多大理解。


总结

本文对7.2,7.4,7.6,7.8,7.10等小节的实践部分进行验证,同时对第7讲部分普通习题作了总结,欠了2道实在抱歉,后面会修改的。

你可能感兴趣的:(学习记录,学习,人工智能,计算机视觉)