基于视觉重定位的室内AR导航APP的大创项目思路(2):改进的项目思路——建图和定位分离

文章目录

  • 一、建图
  • 二、定位
    • 首先是第一种方法:几何方法
    • 其次是第二种方法:图像检索方法
    • 最后是第三种方法:深度学习方法


前情提要:

是第一次做项目的小白,文章内的资料介绍如有错误,请多包含!


一、建图

不知道在线建图是否有其他方法,但是我只尝试过使用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)和深度学习是个大坑,本硕学历不够,想往这方面发展,可能得博士学历或是真的热爱。
但我没有这种觉悟,就当前本科学历下,而且目前就业的岗位还不算多,所以不打算往这方面发展,这个项目做完即是终结,给这段时间的付出一个交代。


未完待续。

如果你觉得这篇文章写的不错,多多点赞~收藏吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/131948.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为云云耀云服务器L实例评测|初始化centos镜像到安装nginx部署前端vue、react项目

文章目录 ⭐前言⭐购买服务器💖 选择centos镜像 ⭐在控制台初始化centos镜像💖配置登录密码 ⭐在webstorm ssh连接 服务器⭐安装nginx💖 wget 下载nginx💖 解压运行 ⭐添加安全组⭐nginx 配置⭐部署vue💖 使用默认的ng…

【文件上传-配置文件】crossdomain.xml跨域策略配置文件上传

目录 一、0x00 前言 二、基础知识 1、Flash 2、crossdomain.xml文件 3、crossdomain.xml格式 4、crossdomain.xml相关参数 三、漏洞利用 1、方法: 2、上传漏洞配置文件 一、0x00 前言 在很多地方都会见查是否跨域 比如某些特定的步骤、CSRF、flash跨域劫…

SimpleCG程序交互操作

前言 之前所有示例程序都是属于展示型的,只是作为展示板输出使用,不涉及键盘和鼠标的输入交互,下面我们开始接触具有交互功能的程序。 没有交互功能的程序可以满足一定需求,不过大部分的程序是不能脱离交互功能的。程序依据使用者的操作进行相…

PbootCMS在搭建网站

1、打开网站 https://www.pbootcms.com/ 2、点击 “本站” 下载最新的网站代码 3、在本地laragon/www下创建目录(hejuwuye),并将代码放进去 4、创建本地数据库,数据库名称为: hejuwuye,然后将static/bac…

第三方软件测试机构有哪些测试服务软件测试报告收费标准是怎样的?

软件验收机构 一、什么是第三方软件测试机构? 第三方软件测试机构是区别于软件开发公司以及软件需求方的第三方机构,软件企业将软件测试外包给第三方软件测试机构已经成为了行业发展趋势。既省心省力,又降低企业成本,得出的软件测试结果以…

《机器学习核心算法》分类算法 - 朴素贝叶斯 MultinomialNB

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 朴素贝叶斯 1、朴素贝叶斯API2、朴素贝叶斯算法实际应用2.1、获取数据集2.2、划分…

EasyPHP-Devserver-17安装和配置mantisBT

文章目录 1、准备工作2、安装easyphp2.1 http://127.0.0.1 无法访问 3、安装mantisBT和phpMyAdmin3.1 配置浏览器的访问url和端口号(配置局域网内可访问)3.2 安装mantis 4、Administrator 注册新用户时设置登录密码5、附件上传6、邮件配置 文章参考自&am…

前端开发工具:助力创造精彩Web体验

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 当涉及到前端开发工具时…

Spring Boot配置文件(YAML Properties)总结

文章目录 配置文件的作用YAML配置文件Properties配置文件配置文件的加载顺序激活不同的配置文件配置文件的占位符自定义配置属性加密敏感信息配置文件的最佳实践结论 🎉欢迎来到架构设计专栏~Spring Boot配置文件(YAML & Properties)总结…

C#控制台程序中使用log4.net来输出日志

Apache log4net 库是一个帮助程序员将日志语句输出到各种输出目标的工具。log4net 是优秀的 Apache log4j™ 框架到 Microsoft .NE​​T 运行时的端口。 我喜欢他可以自定义输出,区分等级等特点。 导入库 我们在工程里添加NuGet的包。输入名称log4net &#xff0…

【每日一题】852. 山脉数组的峰顶索引

852. 山脉数组的峰顶索引 - 力扣&#xff08;LeetCode&#xff09; 符合下列属性的数组 arr 称为 山脉数组 &#xff1a; arr.length > 3存在 i&#xff08;0 < i < arr.length - 1&#xff09;使得&#xff1a; arr[0] < arr[1] < ... arr[i-1] < arr[i] ar…

SpringMVC 的三种异常处理方式详解

目录 1. 什么是异常 2. 为什么要全局异常处理 3. SpringMVC异常分类 4. 异常处理思路 5. 三种异常处理方式示例 ① 配置 SimpleMappingExceptionResolver 处理器 ② 实现 HandlerExceptionResolver 接口 ③ 使用ControllerAdviceExceptionHandler实现全局异常 6. 响应…

如何在windows环境下编译T

一&#xff0c; 安装MYSYS2 1. 去https://www.msys2.org下载 msys2-x86_64-xxxxx.exe; 2. 按照msys2.org主页提示的步骤安装; 3.安装完默认起来的是 UCRT的&#xff0c; 可以根据环境的需要选择&#xff0c; 我选择的 MSYS2 MINGW64 4. 搭建编译环境&#xff0c; 安装对应的软…

18. 线性代数 - 线性变换

文章目录 线性空间线性变换线性变换的几何意义特征值与特征向量NumPy的矩阵操作Hi, 你好。我是茶桁。 经历了几节线性代数课程之后,终于咱们到了最后一节课了。本节课的内容说多不多,说少也不少。 我们先是要理解一下线性空间和线性变换,并且探讨一下线性变换的几何意义。…

目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)

目标分类 一、目标分类介绍1.1 二分类和多分类的区别1.2 单标签和多标签输出的区别 二、代码获取三、数据集准备四、环境搭建4.1 环境测试 五、模型训练六、模型测试6.1 多标签训练-单标签输出结果6.2 多标签训练-多标签输出结果 一、目标分类介绍 目标分类是一种监督学习任务…

如何利用AirDroid远程访问安卓设备屏幕?

屏幕镜像也叫屏幕截图或投屏&#xff0c;是AirDroid 个人版的一个免费功能&#xff0c;局域网或非局域网条件下都可以使用。 利用AirDroid的屏幕镜像功能&#xff0c;你可以将自己的安卓设备投屏到电脑进行直播或开会演示&#xff1b;也可以将安卓设备的屏幕共享到另一台手机或…

【Docker】Docker简介

Docker简介 &#x1f4cb;导航 1. Docker简介1.1 什么是Docker&#xff1f;1.2 什么是容器&#xff1f;1.3 容器的优势&#xff1f;1.4 Docker的优势&#xff1f;1.5 虚拟技术与容器技术Docker的区别&#xff1f;1.6 为什么学习Docker? 2. 安装Docker3. Docker架构4. Docker命…

碎片笔记 | 大模型攻防简报

前言&#xff1a;与传统的AI攻防&#xff08;后门攻击、对抗样本、投毒攻击等&#xff09;不同&#xff0c;如今的大模型攻防涉及以下多个方面的内容&#xff1a; 目录 一、大模型的可信问题1.1 虚假内容生成1.2 隐私泄露 二、大模型的模型安全问题&#xff08;传统AI攻防&…

Apache Doris 2.0 如何实现导入性能提升 2-8 倍

数据导入吞吐是 OLAP 系统性能的重要衡量标准之一&#xff0c;高效的数据导入能力能够加速数据实时处理和分析的效率。随着 Apache Doris 用户规模的不断扩大&#xff0c; 越来越多用户对数据导入提出更高的要求&#xff0c;这也为 Apache Doris 的数据导入能力带来了更大的挑战…

Unity ProBuilder(自己创建斜面、拐角)

目录 基础操作 下载 打开面板 新增对象 材质保存 1.斜面实例 2.拐角实例 3.切割实例 4.单独面赋值 基础操作 下载 打开面板 新增对象 选中想创建的块体后&#xff0c;在编辑器见面拉出块体 材质保存 打开材质编辑器后&#xff0c;将材质赋值&#xff0c;之后&am…