特征点检测算法简述
说到特征 (feature) 可能包含许多种类:常用的图像领域的主要特征有颜色特征、纹理特征、形状特征、空间关系特征。其实不论哪种特征,其特征的描述或者表达的主要思路在于:通过特征的提取表达来区分图像的信息。特征点 可以理解为是图像中变化较大的信息区域,具有独特性。为什么要把图像中的变化较大的区域提取出来作为特征表述,其主要原因还是存在于模拟人眼观察一幅图像时候最先观察到的是整体轮廓或者变化显著的部分区域。谈及特征点提取算法的发展:近些年一直都在研究图像灰度像素信息之间的特征点检测方法(例如应用最广泛的Harris角点检测算子)。SIFT算子并没有采用Harris角点检测特征点,主要原因在于Harris检测算子并没有尺度不变性能。关于SIFT特征检测过程将在下面讲述。
SIFT算法特征点检测过程
SIFT算法特征点检测过程主要依赖于尺度空间完成时,通过各个相邻尺度图像之间相减得到差分高斯金字塔图像,随后进行Hessian矩阵检测与泰勒展开定位特征点精确位置。

从上图1可以看出经过不同尺度参数δ\deltaδ卷积运算后的图像(尺度参数差值为 σ=2σ=2σ=2)直接做差分运算,得到右边的差分高斯图像能够很清晰的看出右边的差分高斯图像主要轮廓和高频信息被保留了下来(边缘、极值点等)。那么作者为什么要采用差分高斯策略?这里其实主要在于差分高斯 (DoG) 近似于拉普拉斯高斯 (LoG) 函数。经过卷积运算后可以保留下高频信息,同时采用 DoG 计算效率大大降低,不需要 LoG 的二阶梯度求导运算。

从图2可以看出DoG的响应函数与LoG接近,同时在构建DoG时候不需要进行求导运算只需简单的作差。同时,高斯函数线性可分(能够将二维高斯卷积核函数分成水平、垂直两个向量进行单独运算进行加速)。因此,SIFT算法中DoG步骤完成初步的特征信息筛选。
SIFT特征点检测
DoG金字塔图像生成后,通过全搜索中间层DoG图像 (去除第一个和最后一个DoG图像) 的像素点,判断当前像素点的像素值是否大于(或者小于)周围8邻域的像素值。如果 当前像素点 大于周围8邻域的像素值,那么当前像素点的像素值对比相同位置不同层次间(上下两幅DoG图像相同坐标位置)的周围8邻域值对比,如果都大于上下两层共18个像素值,那么记录 当前像素 的为极大值点。同理,当前像素点为极小值点判决过程一样。通过上述搜索到的局部极大值或极小值点具有尺度不变特性,同时记录下当前像素点的尺度δ\deltaδ的参数值。当局部极大值极小值提取出来后,下面就是要对邻域的数据进行详细的匹配来确定位置、尺度和主要的曲率值。具有对比度很低(对噪声很敏感),或者在边缘位置很差的局部极值点需要剔除。所以,关于如何剔除点SIFT算法采取泰勒展开式和Hessian矩阵进行特征点剔除。
Hessian矩阵与泰勒展开式作用分别是什么?
泰勒展开式主要是对当前点附近进行曲线拟合来判决是否为最优极值点位置,如果存在偏移量(x,y,scale)>0.5(x, y, scale)>0.5(x,y,scale)>0.5那么进行迭代拟合。SIFT算法代码中迭代次数最大设置为5,通过奇异值分解Hessian矩阵提取主成分与原始位置矩阵偏导进行矩阵乘积运算获取(x,y,scale)(x, y, scale)(x,y,scale)的偏移量,不断迭代直至偏移量<0.5<0.5<0.5。
经过泰勒展开策略迭代搜索邻域极值点之后,就是对当前的特征点进行是否为边缘点进行判断。SIFT算法采用二阶Hessian矩阵来进行判别。主要思想如下图:

Hessian矩阵主要是消除边缘点提取没有在最大最小极值抑制阶段保留下来,其主要原因在于SIFT计算后续描述子匹配时边缘信息构建的局部区域描述子在边缘方向区分度不够唯一。关于Hessian矩阵求取特征值λ1λ_1λ1与λ2λ_2λ2如何消除边缘点(判断是否边缘区域)可以类似参考Harris角点对边缘响应原理一致如下图。
SIFT算法特征点实验过程
下面先来看一下SIFT算法特征点检测的流程图:

参考
http://www.cs.ubc.ca/~lowe/
http://robwhess.github.io/opensift/
本文详细介绍了SIFT算法在特征点检测中的应用,包括利用差分高斯金字塔图像筛选特征点,通过Hessian矩阵和泰勒展开式优化位置和剔除非最优极值点。SIFT算法通过尺度空间处理实现尺度不变性,并通过Hessian矩阵避免边缘点,确保了特征点的独特性和稳定性。
2056

被折叠的 条评论
为什么被折叠?



