【SLAM】 前端-视觉里程计之特征点

2023-09-19 01:33:30

前端-视觉里程计之特征点

参考资料:
以不变应万变:前端-视觉里程计之特征点
视觉SLAM——特征点法

task05 本次了解了特征点是由关键子和描述子组成,并且对比了SIFT、SURF等七种获取特征点的方法,同时对比了SIFT、SURF和ORB方法之间的优劣,如果需要尺度和旋转不变性,SIFT和SURF可能更合适,但如果需要实时性和计算效率,ORB可能是更好的选择。

1.特征点

SLAM(Simultaneous Localization and Mapping)中的特征点是指在地图构建和定位过程中,用于描述环境中显著性特征的数据点或区域。这些特征点通常具有独特的几何或视觉属性,使它们容易在不同帧之间进行识别和匹配,从而用于机器或传感器设备的定位和地图构建。

1.1特征点组成

特征点由关键点和描述子组成。

关键点:特征点在图像中的位置、大小、方向等。
描述子:特征点周围的图像信息。
当两个特征点的描述子在向量空间上的距离相近,就可以认为这两个是相同的特征点。

1.2特征点常见类型

SLAM中的特征点可以是各种类型,取决于传感器类型和SLAM系统的设计。以下是一些常见的特征点类型:

  • 角点(Corners):角点是图像中具有明显角度变化的像素点,通常是两个边缘相交的地方。由于它们在不同视角下保持几何特性,角点是常用的特征点类型。

  • 边缘(Edges):边缘是图像中明显的亮度或颜色变化的线段,通常位于物体之间的边界。边缘也可以用于定位和地图构建。

  • 描述符(Descriptors):特征点通常伴随着描述符,这些描述符是特征点周围像素值的数值或二进制表示。描述符用于匹配相同特征点在不同图像帧之间的对应关系。

  • ORB特征点(Oriented FAST and Rotated BRIEF):ORB是一种常用的特征点检测和描述符生成算法,它结合了FAST角点检测和BRIEF描述符,具有计算速度快和鲁棒性高的特点。

  • SIFT特征点(Scale-Invariant Feature Transform):SIFT是一种具有尺度不变性的特征点检测和描述符生成算法,通常用于在不同尺度和旋转条件下匹配特征点。

特征点的选择和提取是SLAM系统中的关键步骤,因为它们直接影响定位的准确性和地图的质量。SLAM系统会不断追踪这些特征点,并根据它们的运动来估计机器的位姿,并使用它们来构建环境地图。这些特征点的稳定性、鲁棒性和性能对SLAM的成功运行至关重要。

1.3特征点的特点

前端直接通过图片矩阵方面处理,获取特征点,可以估计目标的运动轨迹。
在此,希望特征点有一下的特点

  • 可重复性(在不同的图像中可以找到相同的特征)
  • 可区别性(不同的特征点有不同的表达)
  • 高效性(在一张图片中,特征点的数量远远小于整个图片的像素点)
  • 本地性(每一个特征点仅与自己附近的一小片区域有关联)

2.常见特征点的获取方法

详细介绍见以不变应万变:前端-视觉里程计之特征点

2.1 SIFT

2.2 SURF

2.3 KAZE

2.4 Harris角点

2.5 Shi-Tomasi角点

2.6 Fast

2.7 ORB

3.思考

3.1请说说SIFT或SURF的原理,并对比它们与ORB之间的优劣。

SIFT(Scale-Invariant Feature Transform)、SURF(Speeded-Up Robust Features)和ORB(Oriented FAST and Rotated BRIEF)都是用于计算机视觉中的特征点检测和描述符生成的算法。以下是它们的原理以及它们之间的一些优劣比较:

SIFT(Scale-Invariant Feature Transform)

  • 原理:SIFT基于图像中的局部特征点,具有尺度不变性和旋转不变性。它通过以下步骤生成特征点:

    1. 尺度空间极值检测:在不同尺度下寻找极值点。
    2. 关键点定位:通过局部极值点周围的梯度信息来定位关键点。
    3. 方向分配:为每个关键点分配主方向,提供旋转不变性。
    4. 描述符生成:生成与关键点周围图像区域相关的描述符。
  • 优势

    • 尺度和旋转不变性:SIFT在不同尺度和旋转条件下仍能匹配特征点。
    • 鲁棒性:对光照变化和一定程度的遮挡具有一定鲁棒性。
  • 劣势

    • 计算量大:SIFT的计算成本相对较高,不适合实时应用。
    • 受专利保护:SIFT算法曾受到专利保护,使用时需要考虑专利问题。

SURF(Speeded-Up Robust Features)

  • 原理:SURF是一种计算速度较快的特征点检测和描述符生成算法,它基于积分图像和箱子滤波器。其步骤包括:

    1. 快速积分图像计算:通过积分图像加速滤波器响应的计算。
    2. 关键点检测:检测极值点作为关键点。
    3. 描述符生成:生成描述符以描述关键点周围的图像区域。
  • 优势

    • 计算速度快:SURF相对于SIFT具有更快的计算速度,适合实时应用。
    • 尺度不变性:SURF具有尺度不变性。
  • 劣势

    • 对旋转不变性较差:相对于SIFT,SURF的旋转不变性较差。
    • 对强照明变化和视角变化较敏感。

ORB(Oriented FAST and Rotated BRIEF)

  • 原理:ORB是一种结合了FAST角点检测和BRIEF二进制描述符的算法,具有如下步骤:

    1. 使用FAST算法检测关键点。
    2. 为关键点分配方向以提供旋转不变性。
    3. 使用BRIEF生成二进制描述符。
  • 优势

    • 计算速度快:ORB相对于SIFT在计算速度上更快。
    • 适用于实时应用:ORB适用于实时应用,如移动机器人和自动驾驶。
    • 开源:ORB是一个开源算法,没有专利限制。
  • 劣势

    • 对尺度变化和视角变化较敏感:相对于SIFT和SURF,ORB的尺度和旋转不变性较差。
    • 描述符维度较低:相对于SIFT和SURF,ORB生成的描述符维度较低,可能不如它们在复杂场景下精确。

选择适当的特征点检测和描述符生成算法取决于应用场景、计算资源和性能需求。如果需要尺度和旋转不变性,SIFT和SURF可能更合适,但如果需要实时性和计算效率,ORB可能是更好的选择。

5.2我们发现,OpenCV提供的ORB特征点在图像中分布不够均匀。你是否能够找到或提出让特征点分布更均匀的方法?

在使用ORB特征点检测时,特征点的分布可能会不够均匀,导致在某些区域出现特征点密集,而在其他区域特征点稀疏。这可能会影响SLAM或计算机视觉应用的性能,因为不均匀分布的特征点可能会导致匹配不准确或者无法覆盖整个场景。以下是一些方法,可以改善特征点的均匀分布:

  1. 自适应阈值:调整ORB算法的阈值参数,使其在不同区域产生不同数量的特征点。通常,可以根据图像区域的梯度或纹理信息来自适应地调整阈值,以确保特征点在不同区域均匀分布。

  2. 多尺度处理:在图像的不同尺度上运行ORB算法,以便在不同尺度下检测特征点。这有助于覆盖不同大小和距离的特征。

  3. 非极大值抑制(Non-Maximum Suppression):在ORB算法中,通常会使用FAST角点检测器,可以通过调整FAST检测器的非极大值抑制参数,以控制在一个区域内保留的特征点数量。

  4. 区域采样:将图像分成不同的区域,然后在每个区域内运行ORB算法,以确保每个区域都有足够的特征点。这可以通过图像分割或网格采样来实现。

  5. 均匀化权重:在ORB特征点检测之后,可以对特征点的分布进行后处理。通过对特征点分布进行重新加权,使其在图像中更均匀分布。

  6. 自定义特征点选择:根据应用的需求,可以自己实现特征点的选择和过滤算法,以确保它们在图像中均匀分布,并且适合特定任务。

需要注意的是,改善特征点的均匀分布可能需要一些实验和参数调整,以适应不同的图像和应用场景。最佳方法取决于您的具体需求和数据集。

更多推荐

SQL注入类型判断

SQL注入的类型分为字符型和数字型,以sqli-labs靶场1、2关为例:文章目录第一关第二关无错误回显的判断第一关第一关注入一个1’,错误回显出下面内容,其中1’是注入的内容,0,1后面的单引号和最前面的单引号是一对,剩下的两个单引号是一对,错误回显出上面内容说明是字符型注入。''1''LIMIT0,1'第二关第二关

Bigemap在市政工程设计给排水行业的应用场景?

去年单位采购的,今年11月份才分配给我使用。使用场景:现场定位:通过我们电脑导入cad图纸数据,根据需求可以画一些简单的示意路线,发送到手机进行现场比对,最后会在cad里面加入管道设计方案。去年单位采购的,今年11月份才分配给我使用。使用场景:现场定位:通过我们电脑导入cad图纸数据,根据需求可以画一些简单的示意路线,

Vue的详细教程--用Vue-cli搭建SPA项目

Vue的详细教程--用Vue-cli搭建SPA项目1.Vue-cli是什么2.什么是SPA项目1.vueinitwebpackspa2.一问一答模式2:运行完上面的命令后,我们需要将当前路径改变到SPA这个文件夹内,然后安装需要的模块此步骤可理解成:maven的web项目创建成功后,修改pom文件添加依赖3.启动并访问

MYSQL--索引

目录一、索引的概念:二、索引的作用:三、索引的缺点:四、创建索引的原则依据:五、索引的分类和创建:1.普通索引:2.唯一索引:3.主键索引:4.组合索引:5.全文索引:六、查看删除索引:1.查看索引:2.删除索引:一、索引的概念:索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于

SpringSecurity 初始化解析

文章目录前言加载SpringSecurity配置解析配置SpringSecurity解析器security:http解析FilterChainProxy的注册过程创建SpringSecurity过滤器总结前言通过上文分析知道了SpringSecurity对一个请求的具体处理流程。不知道大家是否跟我一样都有几个疑问:Fi

已知我有一个表格里有编号状态和名称的列,如何转换为目标样式?

点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤此臣所以报先帝而忠陛下之职分也。大家好,我是皮皮。一、前言前几天在Python最强王者交流群【黑科技·鼓包】问了一个Python自动化办公的问题,一起来看看吧。请教一下PANDA库的问题:已知我有一个表格里

字符串(字符数组)的各种操作功能

利用C语言编程平台以及所学的编程知识,完成以下工作:采用菜单形成,通过菜单项(1;2;3;......)等选择方式,分别实现以下对字符串(字符数组)的各种操作功能:初始化字符串(字符数组)A[],B[],C[]等,并键盘录入,要求字符串(字符数组)以’\0’为结束标志;调用自己编写的函数intlength(CharA[

JS基础语法

JS是一门面向对象的编程语言,运行在客户端的脚本语言,可以基于Node.js进行服务器端编程JS的作用:表单动态校验网页特效服务端开发浏览器执行JS:浏览器分为两部分:渲染引擎和JS引擎渲染引擎用来解析HTML和CSS,如chrome浏览器的Blink/Webkit,Firefox的Gecko。JS引擎用来读取网页的J

每日一练 | 华为认证真题练习Day1

Day1华为认证中级考试真题1、IP报文中用Tos字段进行QOS标记,Tos字段中是使用前6bit来标记DSCP的。A.正确​B.错误2、传统的丢包策略采用尾部丢弃(Tail-Drop)的方法,这种丢弃方法会导致TCP全局同步现场。A.正确B.错误3、下列选项中,属于AgileController的业务编排的亮点的是:

JavaScript函数this指向

一、this的指向规则1.this到底指向什么呢?我们先来看一个让人困惑的问题:定义一个函数,我们采用三种不同的方式对它进行调用,它产生了三种不同的结果//定义函数functionfoo(name){console.log("foo函数:",this)}//1.方式一:直接调用//foo()//2.方式二:通过对象调起

Revopoint的3D输出格式及转换工具

在CES展会期间,许多参观者向我们询问与我们的3D扫描仪相关的问题。最常见的问题包括我们的扫描仪导出的文件格式,以及该文件是否与3D打印机兼容?因此,我们决定回答这些问题,并在本文中对常见的3D文件格式进行一些简要介绍。计算机文件记录和存储数据,包括文本、图片、视频、计算机程序或其他类型的数据。就3D文件而言,顾名思义

热文推荐