视觉slam十四讲 pdf_视觉SLAM十四讲|第12讲 回环检测

40b870906542ad4053c3c2db4e658fdf.png

1. 什么是回环检测

前面有说过累积误差的问题,前一时刻的误差会积累到后面,导致画不成圈圈,如图12-1所示,而画圈圈(全局一致性)很重要,所以需要有一个步骤来纠正当前的计算偏差。

6c4d430d869581596882a1484df36856.png

回环检测通过判断相机是否经过同一个地方来进行纠正的,本讲介绍的方法是基于外观的,拿到两张图像后,比较两张图像的相似度,越高说明越有可能是同一个地方。在评价时更注重算法的准确率。

2.相似度计算

在计算相似度之前需要定义一个能够用来描述图像的量,这个量可以表达图像的特征或者属性,我们可以通过这个量来计算图像的相似度。在本节中采用词袋模型。

词袋模型是用向量来描述图像,比如用向量[0,1,1,0,1]来表达图像a,其中第i个元素表示图像是否拥有特征i,向量的维度也就是总的特征数量由“字典”决定(也可以看成每个特征是字典中的一个单词,字典从a到z有3000个单词,那么向量就有3000维,如果某个图像只具有100个特征,那么除了这100个元素以外,该图像其他位置的元素值都是0)。

字典生成:前面学习了提取ORB特征来描述图像,在生成字典时,通常会选用一个比较大的图像数据集,用ORB特征描述每一幅图像,然后使用聚类算法,聚成N类,生成N维的ORB字典。

当字典很大时,O(n)的查找效率会很影响使用,为了提升查找效率可以使用k叉树结构表达字典。先聚成k类,作为k个根结点,在根结点上再对属于当前根结点的所有图像聚成k类,作为第二层,依次向下,最后得到的叶子节点就是词袋模型中的每个特征(也可以说是字典中的每个单词)。

相似度计算,最简单的方法是使用TF-IDF模型,TF计算的是特征i在图像A中出现的频率(也就是单词i,在句子中出现的频率),

IDF是指某个特征在整个字典中出现的频率越低,则这个特征的区分度越高(比如一组100张的人脸图片,提取出来的特征有眼睛、鼻子、嘴巴、苹果,那么对于这100张图片来说几乎每张都有眼睛、鼻子、嘴巴的特征,这些特征出现频率很高,不能够对于这组图片进行很好的区分。然而可能只有20张图片中有苹果,所以苹果这个特征能够很好的将这20张图片区分出来)

假设当前字典中有N个单词,根据词袋模型,图片A就要用N维向量表示,每一维的元素值,是这一维特征的TFIDF值,

,再根据两张图像的向量进行距离计算,得到相似度。

3. 后续处理

两张图片的相似度数值,并不能直接说明是否同一场景,会存在同一个环境下每个地方都不一样的情况。在实际比较时取先验相似度

,表示此时与上一时刻关键帧的相似性,将其他分值根据这个值进行归一化。认为如果当前帧与之前某关键帧的相似度超过了当前帧与上一帧相似度的3倍,则可能存在回环。

参考文献

[1] 《视觉SLAM十四讲从理论到实践》 高翔,张涛

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

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

相关文章

Caffe2 的基本数据结构(Basics of Caffe2 - Workspaces, Operators, and Nets)[4]

这篇文章主要介绍Caffe2的基本数据结构: WorkspacesOperatorsNets在开始之前最好先阅读以下Intro Turorial首先,导入caffe2。其中core和worksapce模块,这是必须的两个模块。如果你要使用Caffe2生成的protocol buffers,那么你也需要…

学习Java中遇到的问题积累_1

1.奇数性 看下面代码时候是否能判断参数 i 是奇数? public static boolean isOdd(int i){ return i % 2 1; }答案是: NO 看似正确的判断奇数, 但是如果 i 是负数, 那么它返回值都是false 造成这种现象的是 > 从思想上固化, 认为奇数只在正数范围, 故判断负数将报错, 在…

Linux 开发者最应该知道的命令汇总

1最近发现一个好东西,在 github 上发现的,我觉得非常适合大家研究 linux,说白了就是一些命令而已,只不过是作者帮忙总结好了,比较适合大家开发和学习 linux 系统,so , 推荐给大家学习下。https:…

华为任职资格_华为采购总部专业任职资格标准|

目 录 序 言 概述 .........................第一部分 级别定义.....................第二部分 资格标准 ....................1、采购工程师(生产采购)任职资格标准........2、采购员(生产采购)任职资格标准............3、采购员…

VirtualBox设置共享目录(主机win7,虚拟机Ubuntu)

1、安装增强功能包 启动虚拟机后,在 设备 -》 分配光驱 选择VBoxGuestAdditions.iso增强包镜像(在virtualbox安装目录下) 在虚拟机中挂载光驱镜像: #mkdir /mnt/cdrom#mount /dev/cdrom /mnt/cdrom 执行增强包安装程序&#xff…

C 语言内存分配

1昨天有一个群里的同学问我,他问我的问题是 c 语言函数是存在哪里的?是如何执行的?我下意识的觉得这位同学应该是个初学者,所以今天就写下一些基础方面的内容,「C语言的内存布局」。程序代码可以看做是一个…

正则表达式符号特殊详解_常用正则表达式_Java中正则表达式的使用

正则表达式符号详解 限定符: 指定一个组件必须出现多少次才能满足. 1.使用 “*”, “”, “?” 作为限定符: "*": 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。"": 匹配前面的子表达…

python中求包含5的数_Python 内置函数 ( ) 可以返回列表、元组、字典、集合、字符串以及 range 对象中元素个数。_学小易找答案...

【简答题】实例1:求两数相除的结果。 先后输入2个数据,计算第一个数除以第二个数的结果。 要求能够处理输入数据为非数字、除数为零、文件末尾EndOfFile 和用户使用Ctrl + C 命令终止程序等异常,提高用户体验。 当输入数据为非数字时提示错误信息并让用户重新输入。 input()函数…

没有梦想,你跟咸鱼有什么分别?

1标题起的有点夸张,其实这个就是一个招聘贴,之前从来没有用发头条文章来招聘,实在不好意思,这个招聘对我非常重要,这是一个非常好的朋友公司的招聘信息,也希望大家帮忙扩散一下,因为…

一个很Low的通讯录管理系统(但是能用)C/C++单链表实现

通讯录管理系统的设计 问题需求分析 在计算机还未普及之前通讯管理都是由联系人采用名片,通讯录往往采用的是笔录手工记帐的方式来操作的。现在一般的通讯录管理都是采用计算机作为工具的实用的计算机通讯录管理程序来帮助人们进行更有效的通讯录信息管理。本通讯…

2017《面向对象程序设计》课程作业三

作业链接github链接 对于文件读写和多参数主函数学习过程中遇到的问题 这次文件读写改用了C的形式,然后总体还算顺利,借鉴了林燊的,因为他写的代码最容易看懂;还有就是借鉴了《C程序设计》,讲真,谭浩强的还…

做人力资源需要掌握python_9种人力资源分析工具,高效打造数字化HR全流程

对于许多人和组织而言,采用HR分析是一大进步。确实,我经常被问到:“最好使用什么人力资源分析工具?”本文将为您提供该问题的答案,以下是要使用的九种最佳人力资源分析工具的列表。1、RR是最常用的HR分析工具。R非常适…

华为不做黑寡妇,开源编译器,与友商共建安卓性能

1今天我的一个老哥开了头条号,第一次发文章,我觉得不错,拿来用用,给大家看看华为技术总工的文采。这位总工潜伏在我的微信群里很少说话,大家一定要有这个想法,就是最低调的那个人,真…

点击链接如何直接跳转到相对应的聊天窗口

解决这个问题的步骤如下&#xff1a; <a target"_blank" href"http://wpa.qq.com/msgrd?v3&uin3237465337&siteqq&menuyes">一、登陆腾讯官方网站&#xff1a;http://wp.qq.com/ 二、登陆之后&#xff0c;点“设置”&#xff0c;按下图…

哈夫曼树编码与译码(完整C/C++实现代码)

哈夫曼编码的设计与应用 问题需求分析 用哈夫曼编码(Huffman Coding)&#xff0c;又称霍夫曼编码&#xff0c;是一种编码方式&#xff0c;哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法&#xff0c;该方法完全依据字符出现概率来构造异字头的平均长…

移动应用开发实例_物联网改变移动应用开发的4种方式

图片来源&#xff1a;pixabay.com来源&#xff1a;物联之家网(iothome.com)转载请注明来源&#xff01;物联网改变了移动应用程序的开发格局。那么&#xff0c;为物联网开发移动应用程序有何不同&#xff1f;物联网与移动应用程序开发齐头并进。物联网改变了人类与机器的互动方…

谁都能看懂的网络模型知识

&#xff11;.网络是我们做嵌入式 避无可避的知识点&#xff0c;但是网络的层次很多&#xff0c;很多时候我们根本理解不了其中的层次和作用&#xff0c;今天跟我们公司的 X 总聊到这个&#xff0c;给我普及了一些知识&#xff0c;我觉得非常有用&#xff0c;分享给大家。最近事…

Java微信公众平台获取签名

如果想使用微信的JSSDK&#xff0c;需要注册公众号和获取签名&#xff0c;Java代码实现如附件&#xff1a; 使用的是servlet&#xff0c;access_token和ticket缓存在application作用域里 附件为源代码&#xff1a;wx.zip转载于:https://www.cnblogs.com/yrcn/p/6831808.html

常用排序算法以及算法性能测试(完整C/C++代码实现)

排序算法性能的比较 注: 由于只是测试算法性能, 所以不会对排序算法做深入讲解, 在随后的时间将会推出排序的详细讲解 问题需求分析 排序算法经过了很长时间的演变&#xff0c;产生了很多种不同的方法。每种算法主要针对不同的数列进行排序&#xff0c;这些排序算法具有各自…

jquery点击事件传值加载页面_jQuery添加options点击事件并传值

var formStr "{supplierId:供应链企业|%-jm-sprt-%|93794498-3}";$.ajax({type : "post",dataType : "json",cache : false,url : "../../../webservice/gmall.json", // 提交到一般处理程序请求数据data :"businessCode6100100…