常见图像特征点——FAST角点,ORB,SIFT

图像特征点性质:

可重复性:在不同图像中能重现

可区别性:不同的点有不同的表达

高效:特征点数量应远小于像素数量

本地:特征仅与一小片区域相关

 

1.FAST特征点

   FAST是一种角点,主要检测局部像素灰度变化明显的地方,以速度快著称。它的思想是:如果一个像素与它领域的像素差别较大,那它更可能是角点。相比于其他角点检测算法,FAST只需比较像素亮度大小,十分快捷。其检测过程如下:

(1)在图像中选取像素p,假设它的亮度为Ip

(2)设置一个阈值T

(3)以像素p为中心,选取半径为3的圆上的16个像素点

(4)假如选取的圆上,有连续的N个点的亮度大于Ip+T或小于Ip-T,那么像素p可以被认为是特征点(一般N取9或12)

(5)循环以上四步,对每一个像素执行相同的操作。

此外,原始的FAST角点经常出现“扎堆”的现象。所以在第一遍检测之后,还需要用非极大值抑制,在一定区域内仅保留响应极大值的角点,避免角点集中的问题。

 

2.ORB特征点

ORB特征点是由Oriented FAST(特征点Rotated BRIEF(特征描述)组成。Fast角点本不具有方向,由于特征点匹配需要,ORB对Fast角点进行了改进,改进后的 FAST 被称为 Oriented FAST,具有旋转不变性和尺度不变性

Oriented FAST获得尺度不变性的方式如下:

(1)对图像做不同尺度的高斯模糊

(2)对图像做降采样(隔点采样)

(3)对每层金字塔做FAST特征点

(4)检测n幅不同比例的图像提取特征点总和作为这幅图像的Oriented FAST特征点。

Oriented FAST获得旋转不变性的操作如下:

通过以上方法,FAST角点便具有了尺度与旋转的描述,大大提升了它们在不同图像之间表述的鲁棒性。

 

BRIEF描述子

BRIEF是一种二进制描述子,它的描述向量由N(N一般取128或者256)个0和1组成,这里的0和1编码了关键点附近两个像素(例如p和q)的大小关系:如果p比q大,则取1,反之就取0。我们按照某种概率分布取了N个这样的p,q,最后就得到N维由0,1组成的向量。

 

3. SIFT特征点

要获取SIFT特征点,首先先建立高斯金字塔及高斯差分金字塔。

高斯金字塔构建过程:

1.先将原图像扩大一倍之后作为高斯金字塔的第1组第1层,将第1组第1层图像经高斯卷积(其实就是高斯平滑或称高斯滤波)之后作为第1组金字塔的第2层,高斯卷积函数为:

                                                      

 

 

2.对于参数σ,在Sift算子中取的是固定值1.6。

3.将σ乘以一个比例系数k,等到一个新的平滑因子σ=k*σ,用它来平滑第1组第2层图像,结果图像作为第3层。

4.如此这般重复,最后得到L层图像,在同一组中,每一层图像的尺寸都是一样的,只是平滑系数不一样。它们对应的平滑系数分别为:0,σ,kσ,k2σ,k3σ……k^(L-2)σ。

5. 将第1组倒数第三层图像作比例因子为2的降采样,得到的图像作为第2组的第1层,然后对第2组的第1层图像做平滑因子为σ的高斯平滑,得到第2组的第2层,就像步骤2中一样,如此得到第2组的L层图像,同组内它们的尺寸是一样的,对应的平滑系数分别为:0,σ,kσ,k2σ,k3σ……k^(L-2)σ。但是在尺寸方面第2组是第1组图像的一半。

这样反复执行,就可以得到一共O组,每组L层,共计O*L个图像,这些图像一起就构成了高斯金字塔,结构如下:

                                                                

之后由高斯金字塔相邻的特征图进行相减即可得到高斯差分金字塔,过程如下图所示:

 

                                                         

高斯差分金字塔表达式如下:

                                               

第二需要进行极值点的精确定位。

1. 阈值化(去除那些噪声极致点)

如果 abs(val)>0.5*T/n,那么,就认为这些点是噪声而不是极值点其中T=0.04(经验值)n=每一组的高斯差分金字塔中要取特征的图片层数(即高斯金字塔一组层数-3)

2. 在高斯差分金字塔中寻找极值点

去除噪声点后,我们就可以在高斯差分金字塔的三层中寻找极值点了。对于图像中的一个像素点而言,它需要与自己周围的 8 邻域,以及尺度空间中上下两层中的相邻的 18(2x9)个点相比。如果是局部最大值,则认为可能是一个关键点

通过比较检测得到的DoG的局部极值点实在离散的空间搜索得到的,由于离散空间是对连续空间采样得到的结果,因此在离散空间找到的极值点不一定是真正意义上的极值点,因此要设法将不满足条件的点剔除掉。可以通过尺度空间DoG函数进行曲线拟合寻找极值点,这一步的本质是去掉DoG局部曲率非常不对称的点通过对特征点x上得到的对比度函数D(x)进行泰勒展开,最终可得到如下表达式:

                                                                  

设对比度的阈值为T,若上述表达式大于等于T则该特征点保留,否则剔除掉之后还会进行剔除不稳定的边缘响应点的操作。

第三需要求取特征点的主方向现在我们要为每一个关键点赋予一个反向参数,这样它才会具有旋转不变性。获取关键点(所在尺度空间)的邻域,然后计算这个区域的梯度大小和方向。计算公式如下:

 

                                              

计算得到梯度方向后,就要使用直方图统计特征点邻域内像素对应的梯度方向和幅值。梯度方向的直方图的横轴是梯度方向的角度(梯度方向的范围是0到360度,直方图每36度一个柱共10个柱,或者没45度一个柱共8个柱),纵轴是梯度方向对应梯度幅值的累加,在直方图的峰值就是特征点的主方向。在Lowe的论文还提到了使用高斯函数对直方图进行平滑以增强特征点近的邻域点对关键点方向的作用,并减少突变的影响。为了得到更精确的方向,通常还可以对离散的梯度直方图进行插值拟合。具体而言,关键点的方向可以由和主峰值最近的三个柱值通过抛物线插值得到。在梯度直方图中,当存在一个相当于主峰值80%能量的柱值时,则可以将这个方向认为是该特征点辅助方向。得到特征点的主方向后,对于每个特征点可以得到三个信息(x,y,σ,θ),即位置、尺度和方向。由此可以确定一个SIFT特征区域,一个SIFT特征区域由三个值表示,中心表示特征点位置,半径表示关键点的尺度,箭头表示主方向。

 

第四构建关键点的描述符。

通过以上的步骤已经找到了SIFT特征点位置、尺度和方向信息,下面就需要使用一组向量来描述关键点也就是生成特征点描述子,这个描述符不只包含特征点,也含有特征点周围对其有贡献的像素点。

为了保证特征矢量的旋转不变性,要以特征点为中心,在附近邻域内将坐标轴旋转θ(特征点的主方向)角度,即将坐标轴旋转为特征点的主方向。旋转后邻域内像素的新坐标为:

                                                                       

 

旋转后以主方向为中心取 8×8的窗口。下图所示,左图的中央为当前关键点的位置,每个小格代表为关键点邻域所在尺度空间的一个像素,求取每个像素的梯度幅值与梯度方向,箭头方向代表该像素的梯度方向,长度代表梯度幅值,然后利用高斯窗口对其进行加权运算。最后在每个4×4的小块上绘制8个方向的梯度直方图,计算每个梯度方向的累加值,即可形成一个种子点对每个关键点使用4×4共16个种子点来描述,这样一个关键点就可以产生128维的SIFT特征向量

                                                                                

 

之后就可以采用关键点特征向量的欧式距离来作为两幅图像中关键点的相似性判定度量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值