自动驾驶汽车视觉- 图像特征提取与匹配技术

Feature detection and matching

特征提取和匹配是许多计算机视觉应用中的一个重要任务,广泛运用在运动结构、图像检索、目标检测等领域。每个计算机视觉初学者最先了解的特征检测器几乎都是1988年发布的HARRIS。在之后的几十年时间内各种各样的特征检测器/描述符如雨后春笋般出现,特征检测的精度与速度都得到了提高。

特征提取和匹配由关键点检测,关键点特征描述和关键点匹配三个步骤组成。不同的检测器,描述符以及匹配器之间的组合往往是初学者疑惑的内容。本文将主要介绍关键点检测,描述以及匹配的背后原理,不同的组合方式之间的优劣,并提出几组根据实践结果得出的最佳组合。

Github: https://github.com/williamhyin/SFND_2D_Feature_Tracking

Email: williamhyin@outlook.com

知乎专栏: 自动驾驶全栈工程师

Background Knowledge

特征(Feature)

特征是与解决某个应用程序相关的计算任务有关的一条信息。特征可能是图像中的特定结构,例如点,边缘或对象。特征也可能是应用于图像的一般邻域操作或特征检测的结果。这些功能可以分为两大类:

  • 图片中特定位置的特征,如山峰、建筑角落、门口或有趣形状的雪块。 这种局部化的特征通常被称为关键点特征(或者甚至是角点) ,它们通常以点位置周围出现的像素块来描述,这个像素块往往被称作图像补丁(Image patch)。
  • 可以根据其方向和局部外观(边缘轮廓)进行匹配的特征称为边缘,它们也可以很好地指示图像序列中的对象边界和遮挡事件。

特征点

边缘

特征提取和匹配的主要组成部分

  1. 检测(detection):识别感兴趣点
  2. 描述(description): 描述每个特征点周围的局部外观,这种描述在光照、平移、尺度和平面内旋转的变化下是(理想的)不变的。 我们通常会为每个特征点提供一个描述符向量。
  3. 匹配(mataching): 通过比较图像中的描述符来识别相似的特征。 对于两幅图像,我们可以得到一组对(Xi,Yi)->(Xi’ ,Yi’) ,其中(Xi,Yi)是一幅图像的特征,(Xi’ ,Yi’)是另一幅图像的特征.

Detector

关键点/兴趣点(Key point/ Interest point)

关键点也称兴趣点,是纹理中表达的点。关键点往往是物体边界方向突然改变的点或两个或多个边缘段之间的交点。它在图像空间中具有明确的位置或很好地定位。即使图像域的局部或全局存在如光照和亮度变化等的扰动,关键点仍然是稳定,可以被重复可靠地计算出。除此之外它应该提供有效的检测。

关键点的计算方法有两种:

  • 基于图像的亮度(通常通过图像导数)。
  • 基于边界提取(通常通过边缘检测和曲率分析)。

关键点检测器光度和几何变化的不变性

在OPENCV库,我们可以选择很多特征检测器,特征检测器的选择取决于将要检测的关键点的类型以及图像的属性,需要考虑相应检测器在光度和几何变换方面的鲁棒性。

选择合适的关键点检测器时,我们需要考虑四种基本转换类型:

  1. 旋转变换

  2. 尺度变换

  3. 强度变换

  4. 仿射变换

涂鸦序列是计算机视觉中使用的标准图像集之一,我们可以观察到第i+n帧的涂鸦图片包括了所有的变换类型。而对于高速公路序列,当专注于前面的车辆时,在第i帧和第i + n帧之间只有比例变化以及强度变化。

传统的HARRIS传感器在旋转和加性强度偏移情况下具有较强的鲁棒性,但对尺度变化、乘性强度偏移(即对比度变化)和仿射变换敏感。

自动尺度选择

为了在理想尺度上检测关键点,我们必须知道(或找到)它们在图像中的各自维度,并适应本节前面介绍的高斯窗口 w (x,y) 的大小。 如果关键点尺度是未知的或如果关键点与存在于不同的大小图像中,检测必须在多个尺度级连续执行。

基于相邻层之间的标准差增量,同一个关键点可能被多次检测到。 这就提出了选择最能代表关键点的“正确”尺度的问题。1998年Tony Lindeberg 发表了一种“自动选择比例的特征提取(Feature detection with automatic scale selection)”的方法。它提出了一个函数 f (x,y,scale) ,该函数可以用来选择在尺度上 FF 有稳定最大值的关键点。 Ff 最大化的尺度被称为各关键点的“特征尺度”。

如在下图中显示了这样一个函数 FF,它经过了几个尺度级别的评估,在第二张图中显示了一个清晰的最大值,可以看作是圆形区域内图像内容的特征尺度。

一个好的检测器能够根据局部邻域的结构特性自动选择关键点的特征尺度。 现代关键点探测器通常具有这种能力,因此对图像尺度的变化具有很强的鲁棒性。

常见关键点检测器

关键点检测器是一个非常受欢迎的研究领域,因此这些年来已经开发了许多强大的算法。关键点检测的应用包括物体识别和跟踪,图像匹配和全景拼接以及机器人制图和3D建模等。检测器的选择除了需要比较上述转换中的不变性之外,还需要比较检测器的检测性能和处理速度。

经典关键点检测器

经典关键点检测器的目的是为了最大化检测精度,复杂度一般不是首要考虑因素。

  • HARRIS- 1988 Harris Corner Detector (Harris, Stephens)
  • Shi, Tomasi- 1996 Good Features to Track (Shi, Tomasi)
  • SIFT- 1999 Scale Invariant Feature Transform (Lowe) -None free
  • SURT- 2006 Speeded Up Robust Features (Bay, Tuytelaars, Van Gool) -None free
现代关键点检测器

近年来,一些更快的探测器已经开发出来,用于智能手机和其他便携设备上的实时应用。 下面的列表显示了属于这个组的最流行的检测器:

  • FAST- 2006 Features from Accelerated Segment Test (FAST) (Rosten, Drummond)
  • BRIEF- 2010 Binary Robust Independent Elementary Features (BRIEF) (Calonder, et al.)
  • ORB- 2011 Oriented FAST and Rotated BRIEF (ORB) (Rublee et al.)
  • BRISK- 2011 Binary Robust Invariant Scalable Keypoints (BRISK) (Leutenegger, Chli, Siegwart)
  • FREAK- 2012 Fast Retina Keypoint (FREAK) (Alahi, Ortiz, Vandergheynst)
  • KAZE- 2012 KAZE (Alcantarilla, Bartoli, Davidson)

Feature Descriptor

基于梯度与二进制的描述符

由于我们的任务是在图像序列中找到对应的关键点,因此我们需要一种基于相似性度量将关键点彼此可靠地分配的方法。很多文献中已经提出了各种各样的相似性度量(称为Descriptor),并且在很多作者已经同时发布了一种用于关键点检测的新方法以及针对其关键点类型进行了优化的相似性度量。也就是说已经封装好的OPENCV关键点检测器函数大部分同样可以用来生成关键点描述符。

区别在与:

关键点检测器是一种根据函数的局部最大值从图像中选择点的算法,例如我们在HARRIS检测器中看到的“角度”度量。

关键点描述符是用于描述关键点周围的图像补丁值的向量。 描述方法有比较原始像素值的方法也有更复杂的方法,如梯度方向的直方图。

关键点检测器一般是从一个帧图片中寻找到特征点。而描述符帮助我们在“关键点匹配”步骤中将不同图像中的相似关键点彼此分配。如下图所示,一个帧中的一组关键点被分配给另一帧中的关键点,以使它们各自描述符的相似性最大化,并且这些关键点代表图像中的同一对象。除了最大化相似性之外,好的描述符还应该能够最大程度地减少不匹配的次数,即避免将彼此不对应于同一对象的关键点分配给彼此。

基于梯度HOG描述符

虽然出现了越来越多快速的检测器/描述符组合,但是基于定向直方图(HOG)描述符之一的尺度不变特征转换(SIFT)依然被广泛运用。HOG的基本思想是通过物体在局部邻域中的强度梯度分布来描述物体的结构。为此,将图像划分为多个单元,在这些单元中计算梯度并将其收集到直方图中。然后,将所有单元格的直方图集用作相似性度量,以唯一地标识图像块或对象。

SIFT/SURF使用HOG作为描述符,既包括关键点检测器,也包括描述符,功能很强大,但是被专利保护。SURF是在SIFT的基础上改进,不仅提高了计算速度,而且更加安全鲁棒性,两者的实现原理很相似。在此我先仅介绍SIFT。

SIFT方法遵循五步过程,下面将对此进行简要概述。

  1. 首先,使用称为“拉普拉斯高斯(LoG)”的方法来检测图像中的关键点,该方法基于二阶强度导数。LoG应用于图像的各种比例级别,并且倾向于检测斑点而不是拐角。除了使用唯一的比例级别外,还根据关键点周围局部邻域中的强度梯度为关键点分配方向。

  2. 其次,对于每个关键点,其周围区域都会通过消除方向而改变,从而确保规范的方向。此外,该区域的大小将调整为16 x 16像素,从而提供了标准化的图像补丁。

  3. 第三,基于强度梯度IxIy计算归一化图像补丁内每个像素的方向和大小。

  4. 第四,将归一化的贴片划分为4 x 4单元的网格。在每个单元内,超出幅度阈值的像素的方向收集在由8个bin组成的直方图中。

  5. 最后,将所有16个单元格的8柱状直方图连接到一个128维向量(描述符)中,该向量用于唯一表示关键点。

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
计算机视觉图像识别是密切相关的领域。计算机视觉是指通过计算机技术图像和视频进行分析、理解和处理的能力。而图像识别则是计算机视觉的一个重要应用,它是指通过计算机技术图像中的目标对象进行自动分类和识别。 在图像识别中,计算机会通过特征提取、特征匹配和分类器训练等基本原理来实现目标的识别。首先,特征提取是从图像中提取出具有代表性的特征,如边缘、纹理和颜色等。这些特征将有助于计算机理解图像中的目标。接下来,特征匹配是将提取的特征与已知目标特征进行匹配,从而确定图像中的对象。最后,分类器训练是通过机器学习算法对不同类别的图像样本进行训练,使计算机能够自动分类新的图像计算机视觉图像识别的快速发展得益于深度学习和机器学习算法的应用。通过使用大规模的数据集和强大的计算能力,这些技术使得计算机能够实现对图像和视频的自动分析、理解和识别。这些技术在医疗、交通、制造、安防等多个领域都有广泛的应用。例如,在医疗领域,图像识别技术可以帮助医生对医学影像进行自动分析和诊断;在交通领域,它可以用于自动驾驶和交通监控系统;在制造领域,它可以用于质量检测和生产过程监控;在安防领域,它可以用于人脸识别和行为分析等。 总之,计算机视觉图像识别技术的发展为自动化检测和识别带来了巨大的潜力,广泛应用于各个领域,并对我们日常生活产生了重要影响。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [图像识别和计算机视觉:如何应用人工智能技术实现自动化检测和识别](https://blog.csdn.net/baidu_38876334/article/details/130691802)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值