前情提要:
是第一次做项目的小白,文章内的资料介绍如有错误,请多包含!
一、建图
不知道在线建图是否有其他方法,但是我只尝试过使用ORB-SLAM3进行在线建图,这或许是一个可以再进行思考的要点。
可以采用以下两种想法进行建图:
1、在电脑端
运行ORB-SLAM3实时调用手机摄像头或是其他摄像头进行在线建图
;
2、在电脑端
运行ORB-SLAM3使用图像数据集进行离线建图
。
不过,考虑到我需要地图的目的后,在线建图和离线建图的区别被模糊了
,我只需要一份可以用于定位导航的点云地图即可,它是通过在线建图还是离线建图完成的,我并不在乎。
对于我需要完成的室内导航目的来说,在线建图和离线建图无甚差别
。
进而在了解完R TALK | 旷视研究院SLAM组负责人刘骁:三维视觉与机器人这篇文章后,我了解到了一个新的名词Visual Localization,即视觉定位。
在旷视的这篇文章中,图片中关于构建稀疏点云地图使用的技术是SFM技术,Structure from Motion,而在文字描述的部分使用构建技术是SLAM技术。
这个部分让我产生了疑惑,通过其他文章的了解,我得知:
1、SFM更适用于大规模场景下的点云地图构建,ORB-SLAM3适用场景规模较小;
2、SFM可以使用无序的数据集进行三维重建,ORB-SLAM3需要使用有序的数据集进行点云地图构建。
如果考虑到我打算做的医院室内导航,毫无疑问,SFM技术构建的点云地图是更合适的
。
但是新的疑惑又产生了,SFM三维重建的场景地图,会比ORB-SLAM3的稀疏点云地图更适合导航使用吗?
SFM同样也可以构建稀疏点云地图,只是可以进一步构建为稠密点云地图,基于视觉高精定位的“室内AR导航”技术点解析,商汤科技的这篇文章介绍的导航应用的地图就是稠密点云地图,而后使用几何方法,直接根据相机输入的图像进行2D-3D的特征点匹配。
就我目前的想法来看,我并不赞同这种使用稠密点云地图做法
(可能是因为我并不了解稠密电点云地图特征点匹配这一部分的内容,他们或许有别的考量):
首先是稠密点云地图存储时占用的存储空间就远大于稀疏点云地图;
其次是,要在这么大规模的点云地图内搜索当前图像所对应的特征点,计算难度相当大,
手机端的运算资源是有限的。
我是该布置在设备端还是云端?手机端真的能使用这种方案吗?
我对此持疑惑质疑态度。
所以,我打算将导航上使用的地图确定为稀疏点云地图
,毕竟在选择完目的地、确定完当前位置后,总归是要根据地图使用路线规划算法生成路线的,因此点云地图是必要的
,这是可以确定的内容。
建图部分的细节讨论(这部分若是没有超链接,说明还没写好)
二、定位
如果要实现导航功能,地图是必不可少的,但是还需要知道用户当前的位置
才有可能根据目的地的选择,才能进一步通过路径规划算法给出可行的路线方案,才能接着做导航。
阅读完基于单目相机的视觉重定位方法综述这篇文章后,其将相机重定位方法分为三种:
1、几何方法;
2、图像检索方法;
3、深度学习方法;
三种方法是依次发展的。
首先是第一种方法:几何方法
基于视觉高精定位的“室内AR导航”技术点解析,例如在这篇文章中,商汤科技的方案是:根据已经构建好的稀疏点云地图,以相机拍摄图像为输入,提取图像特征后直接进行与点云地图2D-3D的对应关系,而后获得当前的位姿数据。
![](https://img-blog.csdnimg.cn/c65ac130f9b943ea8e2c46fe71733ca2.png)
如果只是简单地基于点云地图进行直接视觉特征点匹配,也就是通过估计当前观测到的图像的二维特征点和3D 场景模型中的空间点之间的刚性几何对应关系,不仅具有在不同场景下的适应性不足的还有计算量较大的问题。
但是其还有其他可以改进的方式,例如地图分为三类:几何建图(Geometric Mapping),语义建图(Semantic Mapping)和广义建图(General Mapping)
几何建图主要关注场景中物体的形状、位置和空间关系
,以生成精确的几何模型。
语义建图的地图不仅包含几何结构,还能提供关于物体类别、属性和语义关系等信息
,语义地图可以通过对点云地图进行语义分割等工作得到;
广义建图是一个更综合的概念,它结合了几何建图和语义建图的思想,并进一步考虑其他方面的信息,如时间、光照、温度等
。广义建图的目标是创建一个综合的地图,包括几何、语义以及其他环境属性的信息,以更全面地描述和理解环境。
地图方面的改进或许是一个可以探索的领域(这部分若是没有超链接,说明还没写好)。
其次是第二种方法:图像检索方法
因此可以考虑构建图像数据库,通过在图像数据库之中检索当前相机拍摄图像的全局描述子来确定当前的位姿。
检索方法构建图像数据库,可以通过词袋模型或是颜色直方图构建其匹配的全局特征:
词袋模型
通过提取局部特征构建视觉词汇表,将局部特征与总体图像形成的视觉词汇表做比较,得全局特征向量,因此可以用作全局特征。
颜色直方图
,做比较的为RGB或是HSV空间,本身就具有一定的全局性,图像提取出来的每个颜色区间的像素数量就可以作为全局的特征。
当通过全局特征进行粗定位得到相似的关键帧后,对比局部特征可以得到更精确的定位,通过图像的位姿得到当前位置的位姿,但是因为图像不可能覆盖每一个位置,所以位姿存在误差。
目前比较倾向的方法的是将图像检索方法,但在R TALK | 旷视研究院SLAM组负责人刘骁:三维视觉与机器人这篇文章介绍的研究中,其在粗定位后,接的是2D-3D的几何定位,和几何方法还有图像检索方法都有所不同,但我认为这是可行的方案,起码在理论层面上可行,是接下去尝试的主要地方。
最后是第三种方法:深度学习方法
深度学习方法构建神经网络模型,暂时还不是很了解,需要对深度学习了解之后才能总结,不甚了解,不做讨论
未完待续。
如果你觉得这篇文章写的不错,多多点赞~收藏吧!