6. SIFT

https://towardsdatascience.com/sift-scale-invariant-feature-transform-c7233dc60f37

总结

目的:是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,

步骤:

1、建立高斯差分金字塔

2、(关键点)极值点(key points关键点)的精确定位

3、确定关键点主方向

4、构建关键点描述符(对关键点进行匹配)

In general, SIFT algorithm can be decomposed into four steps:

Feature point (also called keypoint) detection

Feature point localization

Orientation assignment

Feature descriptor generation.

一、SIFT 运用:手机全景照片 找不同照片里面相同的物品

原理 1、建立高斯差分金字塔 为什么需要它:模拟近大远小,近处清晰,远处模糊 高斯核模拟近大远小

image1 同样大小的图片为一组octave 一组内有很多层 (同样大小图片论层,不同大小图片论组)

用不同方差σ(尺度)高斯核对原图进行卷积,得到不同层 用σ得到第一层,用降采样求第二层(隔点取点),得到缩小两倍的图片 一个像素点影响很小,图片只是不嫌弃了 然后逐个降采样,得到高斯金字塔

同一组,相邻的两层相减,得到高斯差分金字塔 DOG:高斯核值的差异

image2

较好参数(论文) M,N原图的长宽 n是希望提取多生长图片中的特征 image3 怎么定σ image4

为什么要高斯差分金字塔 因为希望SIFT有远近普遍性,无论相机距离远近,同一个物体应该都能识别出来是同一个物体 这是在模拟近大远小 近处清晰远处模糊(高斯核是唯一做的这个的线性核)

2、极值点(key points关键点)的精确定位

关键点是稳定的点,稳定信息的点,通常是极值 之前是认为,在八领域内(八个点比较),最小/大的就是极值 image5

现在有了尺度的概念,xy轴需要与上下层(合计26个点进行比较) image6

步骤 image7

image8

这一步目的是找到亚像素中极值点的准确位置

3、确定关键点主方向 image9 现在关键点有的参数(x,y,σ,可以都不是整数,σ也可以不落在某层 ) 找到和σ最接近的高斯图像 和哪个最接近就在哪个上面找(右到左,是在左边高斯金字塔找,不是在高斯差分金字塔找 image10 以这个点的位置为圆心,以尺度的1.5倍画一个圆,统计圆里面的梯度方向和幅值,进行投票统计, 再进行1.5σ高斯滤波(权值,越远影响越小 实际代码中每十度算一个方向

投票最大的是主方向,如果有一个大于主方向的百分之八十,设置为辅方向 所以一个点可以有一个主方向和一个辅方向 image11

特征点标记 image12

4、构建关键点描述符 目前关键点的参数:x,y,σ,主方向 为什么要构建描述符 在一张图片里面找到一个关键点还不够,需要匹配两个图片里面的关键点 需要一个描述符来匹配 描述符是一个128维度的向量 K近邻算法 image13

什么是描述符 在每个子区域内,统计八个方向上的梯度的尺度,结果高斯加权投票(不一定要这样,自定义) 有8*16 =128个数,就是描述符 image14

二、伪代码