0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全面解读图像局部特征点检测算法

h1654155999.2342 来源:博客园 作者:思维之际 2021-09-01 10:19 次阅读

研究图像特征检测已经有一段时间了,图像特征检测的方法很多,又加上各种算法的变形,所以难以在短时间内全面的了解,只是对主流的特征检测算法的原理进行了学习。总体来说,图像特征可以包括颜色特征、纹理特等、形状特征以及局部特征点等。其中局部特点具有很好的稳定性,不容易受外界环境的干扰,本篇文章也是对这方面知识的一个总结。

本篇文章现在(2015/1/30)只是以初稿的形式,列出了主体的框架,后面还有许多地方需要增加与修改,例如2013年新出现的基于非线性尺度空间的KAZE特征提取方法以及它的改进AKATE等。在应用方面,后面会增一些具有实际代码的例子,尤其是基于特征点的搜索与运动目标跟踪方面。

1. 局部特征点

图像特征提取是图像分析与图像识别的前提,它是将高维的图像数据进行简化表达最有效的方式,从一幅图像的M×N×3的数据矩阵中,我们看不出任何信息,所以我们必须根据这些数据提取出图像中的关键信息,一些基本元件以及它们的关系。

局部特征点是图像特征的局部表达,它只能反正图像上具有的局部特殊性,所以它只适合于对图像进行匹配,检索等应用。对于图像理解则不太适合。而后者更关心一些全局特征,如颜色分布,纹理特征,主要物体的形状等。全局特征容易受到环境的干扰,光照,旋转,噪声等不利因素都会影响全局特征。

相比而言,局部特征点,往往对应着图像中的一些线条交叉,明暗变化的结构中,受到的干扰也少。而斑点与角点是两类局部特征点。斑点通常是指与周围有着颜色和灰度差别的区域,如草原上的一棵树或一栋房子。它是一个区域,所以它比角点的噪能力要强,稳定性要好。而角点则是图像中一边物体的拐角或者线条之间的交叉部分。

2. 斑点检测原理与举例

2.1 LoG与DoH

斑点检测的方法主要包括利用高斯拉普拉斯算子检测的方法(LOG),以及利用像素点Hessian矩阵(二阶微分)及其行列式值的方法(DOH)。LoG的方法已经在斑点检测这入篇文章里作了详细的描述。因为二维高斯函数的拉普拉斯核很像一个斑点,所以可以利用卷积来求出图像中的斑点状的结构。DoH方法就是利用图像点二阶微分Hessian矩阵:

4d727a42-f843-11eb-9bcf-12bb97331649.png

Hessian矩阵行列式的值,同样也反映了图像局部的结构信息。与LoG相比,DoH对图像中的细长结构的斑点有较好的抑制作用。无论是LoG还是DoH,它们对图像中的斑点进行检测,其步骤都可以分为以下两步:1)使用不同的σ生成4d848624-f843-11eb-9bcf-12bb97331649.png模板,并对图像进行卷积运算;2)在图像的位置空间与尺度空间中搜索LoG与DoH响应的峰值。

2.2 SIFT

详细的算法描述参考:SIFT定位算法关键步骤的说明2004年,Lowe提高了高效的尺度不变特征变换算法(SIFT),利用原始图像与高斯核的卷积来建立尺度空间,并在高斯差分空间金字塔上提取出尺度不变性的特征点。该算法具有一定的仿射不变性,视角不变性,旋转不变性和光照不变性,所以在图像特征提高方面得到了最广泛的应用。

该算法大概可以归纳为三步:1)高斯差分金字塔的构建;2)特征点的搜索;3)特征描述。

在第一步中,它用组与层的结构构建了一个具有线性关系的金字塔结构,让我们可以在连续的高斯核尺度上查找特征点。它比LoG高明的地方在于,它用一阶高斯差分来近似高斯的拉普拉斯核,大大减少了运算量。

在第二步的特征点搜索中,主要的关键步骤是极值点的插值,因为在离散的空间中,局部极值点可能并不是真正意义上的极值点,真正的极植点可以落在了离散点的缝隙中。所以要对这些缝隙位置进行插值,然后再求极值点的坐标位置。

第二步中另一关键环节是删除边缘效应的点,因为只忽略那些DoG响应不够的点是不够的,DoG的值会受到边缘的影响,那些边缘上的点,虽然不是斑点,但是它的DoG响应也很强。所以我们要把这部分点删除。我们利用横跨边缘的地方,在沿边缘方向与垂直边缘方向表现出极大与极小的主曲率这一特性。

所以通过计算特征点处主曲率的比值即可以区分其是否在边缘上。这一点在理解上可以参见Harris角点的求法。最后一步,即为特征点的特征描述。特征点的方向的求法是需要对特征点邻域内的点的梯度方向进行直方图统计,选取直方图中比重最大的方向为特征点的主方向,还可以选择一个辅方向。在计算特征矢量时,需要对局部图像进行沿主方向旋转,然后再进邻域内的梯度直方图统计(4x4x8)。

2.3 SURF

详细的算法描述参考:1. SURF算法与源码分析、上 2. SURF算法与源码分析、下2006年,Bay和Ess等人基于SIFT算法的思路,提出了加速鲁棒特征(SURF),该算法主要针对于SIFT算法速度太慢,计算量大的缺点,使用了近似Harr小波方法来提取特征点,这种方法就是基于Hessian行列式(DoH)的斑点特征检测方法。

通过在不同的尺度上利用积分图像可以有效地计算出近似Harr小波值,简化了二阶微分模板的构建,搞高了尺度空间的特征检测的效率。SURF算法在积分图像上使用了盒子滤波器对二阶微分模板进行了简化,从而构建了Hessian矩阵元素值,进而缩短了特征提取的时间,提高了效率。其中SURF算法在每个尺度上对每个像素点进行检测,其近似构建的Hessian矩阵及其行列式的值分另为:

4d92bdfc-f843-11eb-9bcf-12bb97331649.png

其中Dxx,Dxy和Dyy为利用盒子滤波器获得的近似卷积值。如果c(x,y,σ)大于设置的门限值,则判定该像素点为关键字。然后与SIFT算法近似,在以关键点为中心的3×3×3像素邻域内进行非极大值抑制,最后通过对斑点特征进行插值运算,完成了SURF特征点的精确定位。而SURF特征点的描述,则也是充分利用了积分图,用两个方向上的Harr小波模板来计算梯度,然后用一个扇形对邻域内点的梯度方向进行统计,求得特征点的主方向。

3. 角点检测的原理与举例

角点检测的方法也是极多的,其中具有代表性的算法是Harris算法与FAST算法。这两个算法我都有专门写过博文来描述其算法原理。Harris角点和FAST特征点检测。

3.1 Harris角点特征提取

Harris角点检测是一种基于图像灰度的一阶导数矩阵检测方法。检测器的主要思想是局部自相似性/自相关性,即在某个局部窗口内图像块与在各个方向微小移动后的窗口内图像块的相似性。在像素点的邻域内,导数矩阵描述了数据信号的变化情况。假设在像素点邻域内任意方向上移动块区域,若强度发生了剧烈变化,则变化处的像素点为角点。定义2×2的Harris矩阵为:

4da8110c-f843-11eb-9bcf-12bb97331649.png

其中,Cx和Cy分别为点x=(x,y)在xx和y方向上的强度信息的一阶导数,ω(x,y)为对应位置的权重。通过计算Harris矩阵的角点响应值D来判断是否为角点。其计算公式为:4db81cf0-f843-11eb-9bcf-12bb97331649.png其中,det和trace为行列式和迹的操作符,m是取值为0.04~0.06的常数。当角点响应值大于设置的门限,且为该点邻域内的局部最大值时,则把该点当作角点。

3.2 FAST角点特征提取

基于加速分割测试的FAST算法可以快速地提取出角点特征。该算法判断一个候选点p是否为角点,依据的是在一个像素点p为圆心,半径为3个像素的离散化Bresenllam圆周上,在给定阈值t的条件下,如果在圆周上有n个连续的像素灰度值大于I(p)+t或小于I(p)−t。

针对于上面的定义,我们可以用快速的方法来完成检测,而不用把圆周上的所有点都比较一遍。首先比较上下左右四个点的像素值关系,至少要有3个点的像素灰度值大于I(p)+t或小于I(p)−t,则p为候选点,然后再进一步进行完整的判断。

为了加快算法的检测速度,可以使用机器学习ID3贪心算法来构建决策树。这里需要说明的是,在2010年Elmar和Gregory等人提出了自适应通用加速分割检测(AGAST)算法,通过把FAST算法中ID3决策树改造为二叉树,并能够根据当前处理的图像信息动态且高效地分配决策树,提高了算法的运算速度。

4. 二进制字符串特征描述子

可以注意到在两种角点检测算法里,我们并没有像SIFT或SURF那样提到特征点的描述问题。事实上,特征点一旦检测出来,无论是斑点还是角点描述方法都是一样的,可以选用你认为最有效的特征描述子。特征描述是实现图像匹配与图像搜索必不可少的步骤。

到目前为止,人们研究了各种各样的特征描述子,比较有代表性的就是浮点型特征描述子和二进帽字符串特征描述子。像SIFT与SURF算法里的,用梯度统计直方图来描述的描述子都属于浮点型特征描述子。但它们计算起来,算法复杂,效率较低,所以后来就出现了许多新型的特征描述算法,如BRIEF。后来很多二进制串描述子ORB,BRISK,FREAK等都是在它上面的基础上的改进。

4.1 BRIEF算法

BRJEF算法的主要思想是:在特征点周围邻域内选取若干个像素点对,通过对这些点对的灰度值比较,将比较的结果组合成一个二进制串字符串用来描述特征点。最后,使用汉明距离来计算在特征描述子是否匹配。BRIEF算法的详细描述可以参考:BRIEF特征描述子

4.2 BRISK算法

BRISK算法在特征点检测部分没有选用FAST特征点检测,而是选用了稳定性更强的AGAST算法。在特征描述子的构建中,BRISK算法通过利用简单的像素灰度值比较,进而得到一个级联的二进制比特串来描述每个特征点,这一点上原理与BRIEF是一致的。BRISK算法里采用了邻域采样模式,即以特征点为圆心,构建多个不同半径的离散化Bresenham同心圆,然后再每一个同心圆上获得具有相同间距的N个采样点。

4dc42a36-f843-11eb-9bcf-12bb97331649.jpg

由于这种邻域采样模式在采样时会产生图像灰度混叠的影响,所以BRISK算法首先对图像进行了高斯平滑图像。并且使用的高斯函数标准差σi与各自同心圆上点间距成正比。假设在(N2)个采样点中任意选取一对采样点(pi,pj),其平滑后的灰度值分别为I(pi,σi)和I(pj,σj),则两点间的局部梯度为:

4de08fdc-f843-11eb-9bcf-12bb97331649.png

假设把所有采样点对构成的集合记为A,则4dfd0428-f843-11eb-9bcf-12bb97331649.png那么短距离采样点对构成的集合S以及长距离采样点构成的集合L分别为:

4e0b33b8-f843-11eb-9bcf-12bb97331649.png

其中,通常设置距离阈值为δmax=9.75δ,δmin=13.67δ,其中δ为特征点的尺度。由于长距离采样点对含有更多的特征点角度信息,且局部梯度相互抵消,所以可以在集合L中计算出特征点的特征模式方向为:

4e1538c2-f843-11eb-9bcf-12bb97331649.png

然后将采样模式围绕特征点旋转角度α=arctan2(gy,gx),进而特征描述子具有了旋转不变性。最后,在旋转后的短距离采样点集合S内,对所有的特征点对(Piα,pjα)行像素灰度值比较,最终形成512比特的二进制字符串描述子。

4.3 ORB算法

ORB算法使用FAST进行特征点检测,然后用BREIF进行特征点的特征描述,但是我们知道BRIEF并没有特征点方向的概念,所以ORB在BRIEF基础上引入了方向的计算方法,并在点对的挑选上使用贪婪搜索算法,挑出了一些区分性强的点对用来描述二进制串。ORB算法的详细描述可以参考:ORB特征点检测。

4.4 FREAK算法

Fast Retina KeyPoint,即快速视网膜关键点。根据视网膜原理进行点对采样,中间密集一些,离中心越远越稀疏。并且由粗到精构建描述子,穷举贪婪搜索找相关性小的。42个感受野,一千对点的组合,找前512个即可。这512个分成4组,前128对相关性更小,可以代表粗的信息,后面越来越精。匹配的时候可以先看前16bytes,即代表精信息的部分,如果距离小于某个阈值,再继续,否则就不用往下看了。

5. 应用之图像匹配

图像匹配的研究目标是精确判断两幅图像之间的相似性。图像之间的相似性的定义又随着不同的应用需求而改变。例如,在物体检索系统中(找出含有亚伯拉罕·林肯的脸的图像),我们认为同一物体的不同图像是相近的。而在物体类别检索系统中(找出含有人脸的图像),我们则认为相同类的物体之间是相近的。

这里局部特征点的应用主要表现在第一种相似性上,也就是说我们需要设计某种图像匹配算法来判断两幅图像是否是对同一物体或场景所成的图像。理想的图像匹配算法应该认为两幅同一物体的图像之间相似度很高,而两幅不同物体的图像之间相似度很低,如下图所示。

4e2238c4-f843-11eb-9bcf-12bb97331649.png

由于成像时光照,环境,角度的不一致,我们获取的同一物体的图像是存在差异的,如同上图中的两辆小车的图像一样,角度不同,成像就不同。我们直接利用图像进行比较是无法进行判断小车是否为同一类的。必须进行特征点的提取,再对特征点进行匹配。图像会存在哪些变换呢?

一般来说包括了光照变化与几何变化,光照变化表现是图像上是全局或局部颜色的变化,而几何变化种类就比较多了,可以是平移、旋转、尺度、仿射、投影变换等等。所以我们在研究局部特征点时才要求特征点对这些变化具有稳定性,同时要有很强的独特性,可以让图像与其他类的图像区分性强,即类内距离小而类间距离大。

6. 参考文献

[1] 基于角点的图像特征提取与匹配算法研究,薛金龙,2014.[2] 基于局部特征的图像匹配与识别,宫明明,2014.[3] 基于视觉信息的图像特征提取算法研究,戴金波,2014.[4] 图像局部不变性特征与描述,王永明,王贵锦编著。

—版权声明—

仅用于学术分享,版权属于原作者。

若有侵权,请联系删除或修改!

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6867

    浏览量

    88800
  • 图像
    +关注

    关注

    2

    文章

    1083

    浏览量

    40410
  • 源码
    +关注

    关注

    8

    文章

    633

    浏览量

    29134
  • orb
    orb
    +关注

    关注

    0

    文章

    21

    浏览量

    9885

原文标题:一文读懂图像局部特征点检测算法!

文章出处:【微信号:gh_f39db674fbfd,微信公众号:尖刀视】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    《DNK210使用指南 -CanMV版 V1.0》第三十五章 image图像特征检测实验

    , 200))find_edges()方法用于检测图像中的边缘特征,该方法会将图像变为黑白,仅将边缘像素保留为白色,需要注意的是该方法仅支持灰度图像
    发表于 11-06 09:30

    旗晟机器人环境检测算法有哪些?

    硬件支撑,更离不开强大的算法库作为软件核心,二者相辅相成,缺一不可。今天就来了解旗晟机器人环境检测算法。 1、设施异常监测 通过集成高精度传感器与智能图像识别技术。它不仅能检测A字梯是
    的头像 发表于 07-19 17:54 498次阅读
    旗晟机器人环境<b class='flag-5'>检测算法</b>有哪些?

    DSP国产教学实验箱_实验案例_操作教程:5-11 边缘检测

    的目标是找到一个最优的边缘检测算法。最优边缘检测的含义是: (1)最优检测算法能够尽可能多地标识出图像中的实际边缘,漏检真实边缘的概率和
    发表于 07-19 10:38

    图像识别算法都有哪些方法

    传统方法和基于深度学习的方法。 传统图像识别算法 1.1 边缘检测 边缘检测图像识别的基础,它用于检测
    的头像 发表于 07-16 11:14 5082次阅读

    图像识别算法的核心技术是什么

    图像识别算法是计算机视觉领域的一个重要研究方向,其目标是使计算机能够像人类一样理解和识别图像中的内容。图像识别算法的核心技术包括以下几个方面
    的头像 发表于 07-16 11:02 564次阅读

    opencv图像识别有什么算法

    图像识别算法: 边缘检测 :边缘检测图像识别中的基本步骤之一,用于识别图像中的边缘。常见的边缘
    的头像 发表于 07-16 10:40 807次阅读

    口罩佩戴检测算法

    口罩佩戴检测算法基于YOLOv5在图像识别检测领域的优异性能,本文研究基于基于YOLOv5的口罩佩自动戴检测方法。首先从网络和真实生活中中寻找并采集不同场景人群口罩佩戴的图片约500张
    的头像 发表于 07-01 20:20 282次阅读
    口罩佩戴<b class='flag-5'>检测算法</b>

    人员跌倒识别检测算法

    人员跌倒识别检测算法是基于视频的检测方法,通过对目标人体监测,当目标人体出现突然倒地行为时,自动监测并触发报警。人员跌倒识别检测算法基于计算机识别技术,配合现场摄像头,自动识别如地铁手扶梯/楼梯
    的头像 发表于 06-30 11:47 422次阅读
    人员跌倒识别<b class='flag-5'>检测算法</b>

    安全帽佩戴检测算法

    安全帽佩戴监控是铁路工程施工人员安全管理中的重点和难点,它对检测算法的准确 率与检测速度都有较高的要求。本文提出一种基于神经网络架构搜索的安全帽佩戴检测算法 NAS-YOLO。该神经网络架构由上
    的头像 发表于 06-26 22:22 358次阅读
    安全帽佩戴<b class='flag-5'>检测算法</b>

    基于FPGA的实时边缘检测系统设计,Sobel图像边缘检测,FPGA图像处理

    ,所以先扩大系数近似为整数再运算。此处扩大256 倍后取整,将运算结果右移 8 位,提取 Y 分量即可得到灰度图像,即 3 边缘检测算法设计 如图4所示为待处理的3×3 像素点,使用 Sobel
    发表于 05-24 07:45

    英码科技EA500I基于昇腾Mind SDK实现实时人体关键点检测

    ,实时人体关键点检测应用可以用来识别异常行为或特定姿态,以达到场景安全防控的目的。 那么,什么是实时人体关键点检测? 简单来说,实时人体关键点检测是一种计算机视觉技术,它能够在图像或视
    的头像 发表于 04-21 17:44 962次阅读
    英码科技EA500I基于昇腾Mind SDK实现实时人体关键<b class='flag-5'>点检测</b>

    一文读懂:图像特征检测算法

    而斑点与角点是两类局部特征点。斑点通常是指与周围有着颜色和灰度差别的区域,如草原上的一棵树或一栋房子。它是一个区域,所以它比角点的噪能力要强,稳定性要好。而角点则是图像中一边物体的拐角或者线条之间的交叉部分。
    的头像 发表于 01-18 16:37 1427次阅读
    一文读懂:<b class='flag-5'>图像</b><b class='flag-5'>特征</b><b class='flag-5'>检测算法</b>!

    微美全息(NASDAQ:WIMI)探索全局-局部特征自适应融合网络框架在图像场景分类中的创新运用

    面临着许多挑战,如复杂的场景等。然而,现有的图像场景分类方法往往只关注全局或局部特征的提取,而忽略了全局和局部特征之间的互补关联。为了解决这
    的头像 发表于 01-05 16:08 354次阅读
    微美全息(NASDAQ:WIMI)探索全局-<b class='flag-5'>局部</b><b class='flag-5'>特征</b>自适应融合网络框架在<b class='flag-5'>图像</b>场景分类中的创新运用

    国产嵌入式实验箱操作教程_创龙教仪:5-12 边缘检测(LCD显示)

    ,Canny 的目标是找到一个最优的边缘检测算法。最优边缘检测的含义是: (1)最优检测算法能够尽可能多地标识出图像中的实际边缘,漏检真实
    发表于 12-14 14:09

    柔性印刷线路板缺陷检测方法指南

    现有的FPC缺陷检测算法多衍生于PCB检测算法,但受本身独特性限制,FPC板缺陷要求更高,检测样板尺寸更大,样板成像易变形,使得针对PCB板的缺陷检测算法不能直接套用FPC板的
    发表于 11-30 15:29 487次阅读