原文链接:https://blog.csdn.net/weixin_38866505/article/details/78715155
SIFT算法
一.概述
SIFT算法实现物体识别主要有三大工序:
1.提取关键点
2.对关键点附加详细的信息(特征向量)
3.通过两方特征点(附带上特征向量的关键点)的两两比较找出相互匹配的若干对特征点
特征向量的生成算法总共包括四步:
1.检测尺度空间极值点,初步确定关键点位置和所在尺度。
2.精确确定关键点的位置和尺度,同时去除低对比度的关键点和不稳定的边缘响应点,以增强匹配稳定性、提高抗噪声能力。
3.为每个关键点指定方向参数,使算子具备旋转不变性。
4.关键点描述子的生成,即生成SIFT特征向量。
二.具体说明
1.构建高斯模板,根据公式
σ是标准差,其值越大,图像越模糊(平滑)。
2.高斯金字塔
设输入图像经过s次卷积后可以得到高斯卷积函数为G(x,y,2σ) 的输出图像,所有从σ到2σ的图像构成一个组octave,每个octave 固定有s个平面。每一层Ip= G(x,y,ksσ)*I , s=1,2,…,p. 而kp=2
在同一阶中相邻两层的尺度因子比例系数是k,则第1阶第2层的尺度因子是kσ, 然后其它层以此类推;
第2阶的第1层由第一阶的中间层尺度图像进行降采样获得, 其尺度因子是k2σ,然后第2阶的第2层的尺度因子是第1层的k倍即k3σ;
第3阶的第1层由第2阶的中间层尺度图像进行降采样获得。其它阶的构成以此类推。
降采样时,高斯金字塔上一组图像的初始图像(底层图像)是由前一组图像的倒数第三张图像隔点采样得到的。
3.构建高斯差分金字塔(通过高斯金字塔中相邻尺度空间函数相减获得)
4.空间极值点检测
在DOG尺度空间金字塔中,为了检测到DOG空间的最大值和最小值, DOG尺度空间中中间层(最底层和最顶层除外)的每个像素点需要跟同一层的相邻8个像素点以及它上一层和下一层的9个相邻像素点总共26个相邻像素点进行比较,以确保在尺度空间和二维图像空间都检测到局部极值。标记为叉号的像素若比相邻26个像素的DOG值都大或都小,则该点将作为一个局部极值点,记下它的位置和对应尺度。
5.关键点定位
检测到的极值点是离散空间的极值点,
通过拟合三维二次函数来精确确定关键点的位置和尺度;
由于DOG算子会产生较强的边缘响应还需去除低对比度的关键点和不稳定的边缘响应点,以增强匹配稳定性、提高抗噪声能力。
关键点尺度: σ = σ0 * pow( 2.0, s/S)
式中: σ为关键点的尺度,
s 为关键点在高斯差分金字塔中所处于的层数
S 为每组的层数
6.关键点方向分配
为了使描述符具有旋转不变性,需要利用图像的局部特征为给每一个关键点分配一个基准方向。使用图像梯度的方法求取局部结构的稳定方向。对于在DOG金字塔中检测出的关键点,采集其所在高斯金字塔图像3σ邻域窗口内像素的梯度和方向分布特征。
在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。梯度直方图将0~360度的方向范围分为8个柱(bins),其中每柱45度。
1
7.关键点特征描述
SIFT描述子是关键点邻域高斯图像梯度统计结果的表示。通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。
128维关键点描述子生成步骤
① 确定计算描述子的图像区域,计算关键点主方向
描述子梯度方向直方图由关键点所在尺度的模糊图像计算产生。图像区域的半径通过下式计算:
Lowe实验结果表明:描述子采用4×4×8=128维向量表征,综合效果最优(不变性与独特性)。
左图的种子点由8×8单元组成。每一个小格都代表了特征点邻域所在的尺度空间的一个像素,箭头方向代表了像素梯度方向,箭头长度代表该像素的幅值
在4×4的窗口内计算8个方向的梯度方向直方图。绘制每个梯度方向的累加可形成一个种子点,一个关键点由4个种子点的信息组成。
② 计算关键点周围的16*16的窗口中每一个像素的梯度,描述子使用在关键点尺度空间内4*4的窗口中计算8个方向的梯度信息,共4*4*8=128维向量表征。
8.特征向量匹配
首先进行相似性度量。
所谓相似性度量是指用什么来确定待匹配特征之间的相似性,它通常是某种代价函数或者是距离函数的形式,一般采用各种距离函数作为特征的相似性度量,如欧氏距离、马氏距离等。
其次消除错配。
无论采用何种特征描述符和相似性判定度量,错配难以避免。这一步主要做的就是根据几何或光度的约束信息去除候选匹配点中的错配。一般利用RANSAC随机抽样一致性算法去除错误的匹配点对,得到最佳匹配点。通过对最佳匹配点的特征向量进行匹配,最后得到图像特征向量的匹配。
9.关键点匹配
分别对模板图(参考图,reference image)和实时图(观测图,observation image)建立关键点描述子集合。目标的识别是通过两点集内关键点描述子的比对来完成。具有128维的关键点描述子的相似性度量采用欧式距离。
三.总结
SIFT算法特点:
SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性。
独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配。
多量性,即使少数的几个物体也可以产生大量SIFT特征向量。
经过优化的SIFT算法可满足一定的速度需求。
可扩展性,可以很方便的与其他形式的特征向量进行
---------------------
作者:suntianqi_vip
来源:CSDN
原文:https://blog.csdn.net/weixin_38866505/article/details/78715155
版权声明:本文为博主原创文章,转载请附上博文链接!