课程小结——SURF特征提取
基于这一技术实现了一种高效的解决方案来优化特征提取和描述过程
背景
在计算机视觉领域中,为了实现尺度不变性提取图像特性这一目标,在每一步检测到的关键点上都会附加一个相应的比例因子。然而,在实际应用中常常会遇到图像尺度不一的问题,在不同图像中同一区域的关键点间距可能存在差异;如果不调整这些关键点的比例尺寸,则可能导致强度上的不一致。为此而提出了一种称为SURF(Speeded Up Robust Features)的独特算法。类似于SIFT算法的是SURF方法,在计算关键点时已经将比例因素纳入考量;由于其计算速度更快且处理效率更高,在性能上具有显著优势。值得注意的是,在关键点数量方面,SURF方法同样能够识别出更多的关键点,但相对而言其复杂性有所降低.
_
_
优缺点
SIFT算法的优势在于其特征具有高度稳定性,在一定程度上对于视图变化和噪声具有一定的抗干扰能力;然而其实时处理能力相对较低,并且在处理边缘较为光滑的目标时,在某种程度上其特征点提取能力相对较弱。
算法流程
1. 建立Hessian(黑塞矩阵)模型并产出所有兴趣点作为关键点进行特征识别;
2. 建立尺度空间表征;
3. 实现关键点多维度检测;
4. 对各关键点的方向进行分配;
5. 计算各关键点多维描述符;
6. 实现关键点多对多匹配。
_
_
算法描述
1、构建Hessian(黑塞矩阵),生成所有的兴趣点,用于特征的提取
Hessian矩阵由多元函数的二阶导数排列而成,并表征了函数在局部区域内的弯曲程度。
与SIFT相比,SURF构建金字塔图像存在显著区别,SURF基于Hessian矩阵行列式的近似值来生成特征图。
Hessian矩阵是Surf算法的关键部分,其主要作用在于通过构建该矩阵来实现图像边缘点(突变点)的稳固性提取,从而为后续特征信息提取奠定基础。
每一个像素点都可以求出一个Hessian矩阵:

Hessian矩阵的判别式为:

当Hessian矩阵的discriminant达到局部最大值时, 通过确定当前区域与周围区域在亮度上呈现明显的差异性特征来进行关键点位置的精确识别.
在SURF算法中定义的图像像素l(x,y)即对应于函数值f(x,y);然而为了确保特征点具有尺度不变性,在构造Hessian矩阵之前需对图像应用高斯滤波,并选取二阶标准高斯函数作为滤波核:

利用特定核间的卷积运算来求取二阶偏导数。利用特定核间的卷积运算来求取二阶偏导数后,则可以依次求得H矩阵中的三个元素Lxx、Lxy和Lyy,并进一步推导得到H矩阵:

基于高斯核服从正态分布的特点,在中心区域权重逐渐降低的情况下,在追求计算效率的前提下,Surf算法采用了盒式滤波器这一近似方法来替代高斯滤波器以减少计算量。这一设计使得在图像处理中能够显著提升运算速度的同时又能保持较好的效果表现。每个像素点的Hessian矩阵行列式的近似值计算可以通过以下公式实现:

引入一个加权系数值为0.9,在Dxy上进行设置。这种做法的主要目的是通过该方法减少由于盒式滤波器近似所导致的误差影响。
2、构建尺度空间
同Sift一样,Surf构建其尺度空间的方式也是由O个L层构成,其区别在于:Sift方法中每一层次下的图像尺寸比上一层次的小一半,而同一层次内的图像尺寸保持一致;但所使用的高斯模糊系数逐渐增大.相反,在Surf方法中,各个层次间的图像尺寸保持一致,而不同层次间的盒式滤波器模板尺寸则逐步增大:在同一层次内的各层则采用了相同尺寸的滤波器,但其使用的模糊系数却逐步增大.

3、特征点定位
采用相同的方法对特征点的定位过程实施统一处理,在具体操作中将经过Hessian矩阵处理后的每个像素点与其在二维图像空间及多尺度空间邻域内的26个相邻像素进行对比分析。通过这一过程初步确定关键点位置,并进一步去除能量较低或定位不准确的关键点候选。最终筛选出稳定可靠的特征关键点位置

4、特征点主方向分配
SIFT算法中的关键point方向分配机制主要通过计算每个关键point周围区域的梯度分布来进行确定。与SIFT不同,在SURF算法中通常会计算每个关键point周围圆形区域内的HARR小波变换特性。对于每个关键point周围的圆形区域,在60度范围内分别计算水平和垂直方向的小波系数总和。随后将扇区以固定角度间隔旋转,并重新计算该区域内各角度下的HARR小波系数值。最终选取具有最大HARR小波系数总和的那个扇区的方向作为该关键point的主要方向向量

5、生成特征点描述子
在SIFT算法中,在每个关键点周围选取一个大小为4 \times 4的小方块,并对该方块内的每个8个梯度方向进行计数统计。随后将这些统计结果汇总形成一个128维向量来描述该关键点处的特点。而SURF算法则与SIFT有所不同,在选择窗口时也是采用同样大小的一个4 \times 4矩形窗口,并且其提取的方向沿该关键点的主要方向进行定位。为了进一步细化窗口内的细节信息,在每个细分区域内会对图像进行二维离散余弦变换(DCT),并分别计算水平和垂直两个分量上的细节系数以及它们各自的绝对值之和四种不同的表征方式

该算法中选取了四个值作为每个子块区域的特征向量,并在此基础上构建了4 \times 4 \times 4 = 64维矢量序列来表示Surf特征中的描述子。相较于SIFT算法所采用的方法而言,在计算每个Surf描述子所需的数据量上仅需一半的时间与资源。
6、特征点匹配
与SIFT算法类似地,在SURF特征点匹配过程中也是基于两个特征点之间的欧氏距离计算其匹配程度,在此过程中会根据该距离值来判断两者的匹配程度高低;然而与SIFT方法不同之处在于,SURF算法在这一过程引入了Hessian矩阵迹的变化情况作为额外判据.具体而言,当两个特征点处的Hessian矩阵迹具有相同的符号时,则认为这两个区域在对比度变化方向上是一致的;反之,若两者对比度变化方向相反,即使它们之间的欧氏距离为零,也会被视为不符合条件而被直接排除.
详细描述见链接<>
程序实现
matlab源代码链接<>
---------------------------------------------------------------------------------------------------------------------------------------------------------
References
