最近看ORB-SLAM2源代码,构造Frame类部分出现了很多图像金字塔的内容,加上想起师兄和我讲的:图像算法岗的SIFT、SURF、FAST、ORB特征子肯定要会的呀,所以花了一晚上对SIFT特征子深入探究了下,期间感谢kyu_saku、
Brook@CV以及zddhub、Rachel-Zhang的博客,根据上述博客对SITF由浅入深的进行理解。
天涯路清晨对SIFT的介绍更清晰。
目录:
- SIFT概述
- 尺度空间的极值检测
- 去除对比度低、不稳定的边缘响应点
- 关键点方向分配
- 描述子
一、SIFT概述
SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换,由加拿大教授David G.Lowe提出的。SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种图像局部特征的提取算法。
实质:不同尺度空间上查找特征点,并计算特征点的方向。
基本步骤:
1.尺度空间极值检测:搜索所有尺度上的图像位置,通过高斯微分函数识别潜在的对于尺度和旋转不变的兴趣点。
2.关键点定位:
3.方向分配:基于图像局部的梯度方向
4.描述子:特征点周围的邻域内。
二、尺度空间的极值检测
对于一个局部区域,若是采用相同的窗口对图片进行观察,左边的小角到右边就不是一个角了,于是,需要提出具有尺度不变性的特征,这样才能保证物体大小发生变化后,依然能正确匹配。这就是尺度空间的由来。
构建尺度空间(图像金字塔)
上述最简单的解决方法就是对于不同尺度的图像都能用合适的窗口尺度Scale,观察窗口小了,那么把窗口放大点或者把图像缩小点不就好了。然后