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

news2024/11/27 7:21:45

文章目录

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


前情提要:

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


一、建图

不知道在线建图是否有其他方法,但是我只尝试过使用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.coloradmin.cn/o/1008887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

递归学习——记忆化搜索

目录 ​编辑 一,概念和效果 二,题目 1.斐波那契数 1.题目 2.题目接口 3.解题思路 2.不同的路径 1.题目 2.题目接口 3.解题思路 3.最长增长子序列 1.题目 2.题目接口 3.解题思路 4.猜数字游戏II 1.题目 2.题目接口 3.解题思路 总结&a…

2.docker基础使用命令

请点击滑动滚轮:放大查看 PS:发现滚轮不能放大了,这傻B的csdn,越做越垃圾了。。。 来这个地址看吧:https://img-blog.csdnimg.cn/7a5eb5a1eca4484fa0faa73b398257bd.png,滑动滚轮放大 ​ 源文件: 点击下载…

快速幂 c++

一般大家写都是 int ans 1; for (int i 1; i < a; i )ans * x;时间复杂度 但是这对于我们还不够&#xff0c;我们要 首先我们得知道一个数学知识 那么求 就有以下递归式 a 能被2整除 a 不能被2整除 (这里a/2是整除) 所以每次都调用 不就是么 最后补充一个东西…

【Java从入门到精通】这也许就是Java火热的原因吧!

前言&#xff1a;Java是一种高级的、面向对象的、可跨平台的程序设计语言。Java根据技术类别可划分为以下几类&#xff1a;JavaSE&#xff08;Standard Edition&#xff0c;标准版&#xff09;&#xff1a;支持面向桌面、嵌入式和移动设备的应用程序开发&#xff1b;JavaEE&…

Apollo介绍和入门

文章目录 Apollo介绍配置中心介绍apollo介绍主流配置中心功能特性对比 Apollo简介 入门简单的执行流程Apollo具体的执行流程Apollo对象执行流程分步执行流程 核心概念应用&#xff0c;环境&#xff0c;集群&#xff0c;命名空间企业部署方案灰度发布全量发布 配置发布的原理发送…

MyBatis基础之概念简介

文章目录 基本概念1. 关于 MyBatis2. MyBatis 的体系结构3. 使用 XML 构建 SqlSessionFactory4. SqlSession5. 默认的别名6. 补充 [注意] 放前面前 很多人可能在使用 MyBatis-plus 进行代码开发&#xff0c;MyBatis的这部分内容是用来更好的讲述之后的内容。 基本概念 1. 关于…

无涯教程-JavaScript - ISODD函数

描述 如果数字为奇数,则ISODD函数返回TRUE,如果数字为偶数,则返回FALSE。 语法 ISODD (number) 争论 Argument描述Required/OptionalNumber 要测试的值或表达式。 如果number不是整数,则将其截断。 Required Notes 您可以在执行计算之前使用此功能测试单元格的内容。 如果…

微服务 第一章 Java线程池技术应用

系列文章目录 第一章 Java线程池技术应用 文章目录 系列文章目录[TOC](文章目录) 前言1、Java创建线程方式回顾1.1、继承Thread类(只运行一次)1.1.1、改造成主线程常驻&#xff0c;每秒开启新线程运行1.1.2、匿名内部类1.1.3、缺点1.1.4、扩展知识&#xff1a;Java内部类1.1.4…

Python 内置函数详解 (2) 逻辑运算

近期在外旅游,本篇是出发编辑的,准备定时发布用,不完整,旅游回来后再补充。 Python 内置函数 Python3.11共有75个内置函数,其来历和分类请参考:Python 新版本有75个内置函数,你不会不知道吧_Hann Yang的博客-CSDN博客https://blog.csdn.net/boysoft2002/article/detai…

SOLIDWORKS PDM—数据库的备份计划

SOLIDWORKS产品数据管理 (PDM) 解决方案可帮助您控制设计数据&#xff0c;并且从本质上改进您的团队就产品开发进行管理和协作的方式。使用 SOLIDWORKS PDM Professional&#xff0c;您的团队能够&#xff1a;1. 安全地存储和索引设计数据以实现快速检索&#xff1b;2. 打消关于…

Linux——进程间通信(管道及共享内存)

目录 0. 前言 1. 进程通信的目的 2. 进程通信发展及分类 3. 进程通信匿名管道 3.1 什么是管道&#xff1f; 3.2 匿名管道系统调用 3.3 fork后子进程继承&#xff08;基于内存级&#xff09; 3.4 站在文件描述符角度-深度理解管道 3.5 站在内核角度-管道本质 3.6 父子…

电动车彻底取代燃油车?瑞士限制,中国每天烧7辆,现实不乐观

随着新能源汽车在国内汽车市场的销量占比突破三成&#xff0c;业界对于电动汽车取代燃油车相当乐观&#xff0c;然而电动汽车存在的不少问题却不容忽视&#xff0c;这正逐渐成为电动汽车普及的巨大障碍。 电动汽车如今面临的问题不少&#xff0c;最让消费者吐槽的是充电问题&am…

python自学

自学第一步 第一个简单的基础&#xff0c;向世界说你好 启动python 开始 print是打印输出的意思&#xff0c;就是输出引号内的内容。 标点符号必须要是英文的&#xff0c;因为他只认识英文的标点符号。 exit&#xff08;&#xff09;推出python。 我们创建一个文本文档&…

删除数组中的重复项——双指针

双指针法&#xff0c;说是双指针其实就是在一个数组中定义两个数组下标变量&#xff0c;通过两个下标的移动和赋值来实现 代码&#xff1a; int removeDuplicates(int* nums, int numsSize){int left1; int right1; while(left<numsSize) {if(nums[left]!nums[left-1]){num…

耐蚀合金连续油管最新版 学习记录

声明 本文是学习GB-T 42858-2023 耐蚀合金连续油管. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了耐蚀合金连续油管的订货、材料、制造、检验试验、标记等。 本文件适用于油气井用耐蚀合金连续油管(以下简称"油管")…

2023备战秋招Java面试八股文合集

Java就业大环境仍然根基稳定&#xff0c;市场上有很多机会&#xff0c;技术好的人前景就好&#xff0c;就看你有多大本事了。小编得到了一份很不错的资源&#xff0c;建议大家可以认真地来看看以下的资料&#xff0c;来提升一下自己的核心竞争力&#xff0c;在面试中轻松应对面…

易基因: MeRIP-seq等揭示组蛋白乙酰化和m6A修饰在眼部黑色素瘤发生中的互作调控|肿瘤研究

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 组蛋白去乙酰化抑制剂(HDACis)在多种恶性肿瘤中显示出令人鼓舞的结果。N6-甲基腺嘌呤(m6A)是最普遍的mRNA修饰&#xff0c;在肿瘤发生调控中起重要作用。然而&#xff0c;对组蛋白乙酰化…

美国海运价格,美国专线直达怎么收费?

美国海运价格是根据多个因素来确定的&#xff0c;包括货物的重量、体积、目的地、起运港口和目的港口之间的距离、运输方式(整箱或拼箱)以及货物的特殊要求等。以下是一些常见的影响美国海运价格的因素&#xff1a; 一、货物重量和体积&#xff1a; 货物的重量和体积是计算海运…

esxi扩容磁盘

esxi扩容磁盘 fdisk -l没用扩容 登录Esxi管理界面扩容磁盘 进入服务器查看 没用变化 &#xff08;有些可能进去磁盘就是更新&#xff0c;直接就是扩容的&#xff0c;但是没扩容就需要执行下面的命令&#xff09; [root234-ces /]# fdisk -l Disk /dev/sda: 85.9 GB, 858993…

uniapp 轮播列表左右滑动,滑动到中间放大

html <!-- 轮播 --><view class"heade"><swiper class"swiper" display-multiple-items3 circulartrue previous-margin1rpxnext-margin1rpx current0 change"swiperChange" ><block v-for"(item,index) in list"…