haar特征_图像特征算法(二)——SURF算法简述及Python标记SURF特征检测实践

上一篇:图像特征算法(一)——SIFT算法简述及Python标记SIFT特征检测实践

下一篇:图像特征算法(三)——ORB算法简述及Python中ORB特征匹配实践

一、SURF算法

1.算法简介

SURF(Speeded-Up Robust Features)加速稳健特征,是一种稳健的局部特征点检测和描述算法。 SURF是对SIFT算法的改进,该算子在保持 SIFT 算子优良性能特点的基础上,同时解决了 SIFT 计算复杂度高、耗时长的缺点,提升了算法的执行效率,为算法在实时计算机视觉系统中应用提供了可能。

2.SURF与SIFT的具体差异

(1)在生成尺度空间方面,SIFT中下一组图像的尺寸是上一组的一半,同一组间图像尺寸一样,但是所使用的高斯模糊系数逐渐增大。而在SURF中,不同组间图像的尺寸都是一致的,但不同组间使用的盒式滤波器的模板尺寸逐渐增大,同一组间不同层间使用相同尺寸的滤波器,但是滤波器的模糊系数逐渐增大。

(2)在特征点检验时,SIFT算子是先对图像进行非极大值抑制,再去除对比度较低的点。然后通过Hessian矩阵去除边缘的点。SURF算法是先通过Hessian矩阵来检测候选特征点,然后再对非极大值的点进行抑制。

(3)在特征向量的方向确定上,SIFT算法是在正方形区域内统计梯度的幅值的直方图,找到最大梯度幅值所对应的方向。SIFT算子确定的特征点可以有一个或一个以上方向,其中包括一个主方向与多个辅方向。SURF算法则是在圆形邻域内,检测各个扇形范围内水平、垂直方向上的Haar小波响应,找到模值最大的扇形指向,且该算法的方向只有一个。

(4)SIFT算法生成描述子时,是将16x16的采样点划分为4x4的区域,从而计算每个分区种子点的幅值并确定其方向,共计4x4x8=128维。SURF算法在生成特征描述子时将的正方形分割成4x4的小方格,每个子区域25个采样点,计算小波haar响应,一共4x4x4=64维。

综上,SURF算法在各个步骤上都简化了一些繁琐的工作,仅仅计算了特征点的一个主方向,生成的特征描述子也与前者相比降低了维数。

二、Python代码实践

1.测试环境

(1)pycharm下python3.7.6 (2)opencv-python 3.4.2.16 (3)opencv-contrib-python 3.4.2.16

2.测试代码

import 

3.核心函数

(1)cv2.xfeatures2d.SURF_create(hessianThreshold, nOctaves, nOctaveLayers, extended, upright)

生成关键点的函数

  • hessianThreshold:默认100,关键点检测的阈值,越高监测的点越少
  • nOctaves:默认4,金字塔组数
  • nOctaveLayers:默认3,每组金子塔的层数
  • extended:默认False,扩展描述符标志,True表示使用扩展的128个元素描述符,False表示使用64个元素描述符。
  • upright:默认False,垂直向上或旋转的特征标志,True表示不计算特征的方向,False-计算方向。

(2)cv2.drawKeypoint(image, keypoints, outImage, color, flags)

在图像中标记关键点的函数

  • image:输入图像
  • keypoints:获取的特征点
  • outImage:输出图像
  • color:颜色,默认为随机颜色
  • flags:绘制点的模式,有下图所示四种模式

haar特征_图像特征算法(二)——SURF算法简述及Python标记SURF特征检测实践_第1张图片

4.测试结果

haar特征_图像特征算法(二)——SURF算法简述及Python标记SURF特征检测实践_第2张图片

上图即利用SURF算法检测到的图像特征点,各圆圆心即为检测到的特征点,各圆中的直线即分别标记了各个特征点的主方向。

上一篇:图像特征算法(一)——SIFT算法简述及Python标记SIFT特征检测实践

下一篇:图像特征算法(三)——ORB算法简述及Python中ORB特征匹配实践

你可能感兴趣的:(haar特征,sift算法源码python,sift算法详解及代码解析,双向最大匹配算法python,学习sift算法的原理和步骤)