SIFT
笔记,可能不适合初学者
- 图片金字塔:图片下采样构成,图片之间分辨率不同,相邻之间长宽均相差1/2。
- 高斯模糊:对于图片金字塔中的每一张图片进行不同标准差的高斯核卷积;根据高斯核的标准差区分同一组图片的分辨率,完成对分辨率的细分(可以认为越模糊(高斯核标准差 σ \sigma σ越大),物体越近,尺寸越大 )。
- 高斯差分:对通过高斯卷积的之后的金字塔中的图片进行高斯差分,以便下一步,极值的求解。
- 求极值点:对于高斯差分之后的图片,在图片金字塔每个分辨率下,获得的高斯差分的结果(结果为3个差分图),根据差分图中分析极值所在位置,具体分析方式为:中间差分图的一个像素与立体邻域的像素进行比较,如果该像素的灰度值是最大值或者最小值,则将该像素记录为极值点。
- 极值的优化:主要是去除不稳定的极值点,主要根据两个准则删除,一是,删除低对比度的极值点,二是,删除不稳定的边缘点。
- 优化后的极值点(特征点)的主方向:得到特征点后,可以获得该特征点的所在的尺度图像(也就是在金字塔的哪一层),然后计算 3 ∗ 1.5 σ 3*1.5\sigma 3∗1.5σ半径范围内的像素的幅度值和角度值,并且在完成对于梯度方向的直方图的统计;该直方图的统计方式为:以角度值为横轴,以幅度值为纵轴,统计时将相同的角度值(或者某一范围内的角度值)对应的幅度值进行累加,作为纵轴,直方图的峰值对应的角度就是优化后特征点的主方向。
- 特征描述符的生成:得到主方向后的特征点具有的信息包括 ( x , y , σ , θ ) (x,y,\sigma,\theta) (x,y,σ,θ),即位置、所在尺度、和主方向的角度。对于一个特征点,知道其主方向,根据主方向对图片进行旋转,旋转完成后,以该特征点为中心,1616的大小圈出一块区域,计算该区域内每44个像素代表的区域的梯度方向的直方图(注意此处的直方图横轴的分辨率为45度,所以每块区域都有一个维度为8的向量进行描述),而整个窗口中共16个44的区域,所以整个特征点由一个168=128维的向量进行描述,该向量就是特征描述符。该特征描述符将旋转特性、特征点周边像素的性质考虑其中。
综上,SIFT算子的计算过程中将尺度(主要体现在图片金字塔、不同程度的高斯模糊)、旋转(主要体现在特征描述符的获取过程,有一个根据特征点的主方向旋转的过程)考虑其中,因此具有尺缩不变和旋转不变的特性。