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