知识点
SIFT特征提取是图像特征提取中最经典的一个算法,归纳起来SIFT特征提取主要有如下几步:
- 构建高斯多尺度金字塔
- 关键点查找/过滤与精准定位
- 窗口区域角度方向直方图
- 描述子生成
OpenCV已经实现了SIFT算法,但是在OpenCV3.0之后因为专利授权问题,该算法在扩展模块xfeature2d中,需要自己编译才可以使用,OpenCV Python中从3.4.2之后扩展模块也无法使用,需要自己单独编译python SDK才可以使用。其使用方法与我们前面介绍的ORB完全一致。都是遵循下面的步骤
- 创建对象
- 通过detect方法提取对象关键点
- 同drawKeypoints绘制关键点
构建多尺度高斯金字塔
为了在每组图像中检测 S 个尺度的极值点,DoG 金字塔每组需 S+2 层图像,因为每组的第一层和最后一层图像上不能检测极值,DoG 金字塔由高斯金字塔相邻两层相减得到,则高斯金字塔每组最少需 S+3 层图像,实际计算时 S 通常在2到5之间。
代码(python)
1 | """ |
结果
略