一起自学SLAM算法:3.4 图像特征点提取

  连载文章,长期更新,欢迎关注:


写在前面

第1章-ROS入门必备知识

第2章-C++编程范式

第3章-OpenCV图像处理

        3.1 认识图像数据

        3.2 图像滤波

        3.3 图像变换

        3.4 图像特征点提取

第4章-机器人传感器

第5章-机器人主机

第6章-机器人底盘

第7章-SLAM中的数学基础

第8章-激光SLAM系统

第9章-视觉SLAM系统

第10章-其他SLAM系统

第11章-自主导航中的数学基础

第12章-典型自主导航系统

第13章-机器人SLAM导航综合实战


特征点提取算法能帮助计算机获取图像的区域特征信息,并应用于图像识别、图像匹配、三维重建、物体跟踪等领域。在实际工程中,具有很高的应用价值。在图像领域,特征点(feature points)也常常被称为关键点(key points)或兴趣点(interest points)。特征点的提取有多种算法,可以从图像纹理信息来提取,也可以通过图像区域灰度统计信息来,或者通过频谱变化、小波变换等变换后在变换空间进行提取。本节将对最常用的SIFT(scale invariant feature transform,尺度不变特征变换)特征点、SURF(Speeded Up Robust Features,加速稳健特征)特征点和ORB(Oriented FAST and Rotated BRIEF,快速特征点提取和描述)特征点进行分析和讲解,并对比其性能表现。

SIFT在性能方面非常突出,在业界有很高的名气;SURF是对SIFT的改进,在提取速度方面做了优化;ORB是用于取代SIFT和SURF的简洁提取算法,提取速度比SIFT和SURF快很多。后续视觉SLAM中的ORB_SLAM框架就是基于ORB特征点的,在实时性方面表现非常出色。因此学好本节的内容,将极大降低后续视觉SLAM章节的学习难度。

本节的重点放在SIFT、SURF和ORB三种特征点提取的原理讲解中,如果对OpenCV中具体实现程序感兴趣,可以阅读OpenCV3中相应的源代码,源代码的路径如下。

  • SIFT源码路径:opencv_contrib/modules/xfeatures2d/src/sift.cpp。
  • SURF源码路径:opencv_contrib/modules/xfeatures2d/src/surf.cpp。
  • ORB源码路径:opencv/modules/features2d/src/orb.cpp。

3.4.1 SIFT特征点

SIFT是对旋转、尺度和亮度保持不变,对仿射变换、噪声等也有比较好的稳定性的图像局部特征。那什么是旋转尺度不变性呢?简单点说就是同一个物体,用相机在不同的角度和距离拍出来的图片,图片中物体的特征应该是一样的,不因图片的大小和旋转而改变。

SIFT特征提取过程,如图3-7所示。由于所有操作都在灰度图上进行,因此输入原始图需要先经过灰度转换。然后构建高斯金字塔(Gaussian Pyramids),用于表示图像的尺度空间。将高斯金字塔每组(Octave)中相邻两图层(Layer)求差值得到高斯差分金字塔(Difference of Gaussian Pyramids,DoG金字塔),用于尺度空间的极值点检测。接着通过极值点检测、特征点定位和特征点筛选操作,提取出特征点在尺度空间的位置。之后回到高斯金字塔,求取该尺度空间位置上的特征点主方向以及邻域方向。最后利用特征点的方向信息可以生产特征的描述向量,整个提取过程最后输出所有特征点的描述向量。特征点包含尺度、位置和特征描述信息,利用这些信息就可以做图像识别、图像匹配等应用了。

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值