参考资料
- SIFT文献-David-UBC: 《Distinctive Image Features from Scale-Invariant Keypoints》
- SIFT算法介绍: SIFT特征详解 - Brook_icv - 博客园 (cnblogs.com)
简介
Scale-invariant feature transform 尺度不变特征变换
SIFT算法不仅只有尺度不变性,当旋转图像,改变图像亮度,移动拍摄位置时,仍可得到较好的检测效果.
特点如下
- 具有较好的稳定性和不变形,能够适当旋转、尺度缩放、亮度的变化,能在一定程度上不受视角变化、仿射变换、噪声的干扰。
- 区分性好,能够在海量特征数据库中进行快速准确的区分信息进行匹配
- 多属性,就算只有单个物体,也能产生大量特征向量
- 高速性,能够快速的进行特征向量匹配
- 可扩展性,能够与其它形式的特征向量进行联合
主要流程
- 提取关键点:关键点是一些十分突出的不会因光照、尺度、旋转等因素而消失的点,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。此步骤是搜索所有尺度空间上的图像位置。通过高斯微分函数来识别潜在的具有尺度和旋转不变的兴趣点。
- 特征方向赋值 基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向,后续的所有操作都是对于关键点的方向、尺度和位置进行变换,从而提供这些特征的不变性。
- 特征点描述 在每个特征点周围的邻域内,在选定的尺度上测量图像的局部梯度,这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变换。
- (可选)特征点匹配
关键点提取采用的是图像金字塔,高斯模糊算法构建多分辨率图像,然后用高斯差分定位到极值点,剔除不好的特征点之后得到关键点。
效果如下
|
|
特征方向的确定采用的是如下公式,通过特征点的坐标(x,y)与L函数,取得梯度的模值(大小)和方向
然后根据特征方向进行加权得到关键点描述符
后续根据关键点描述符来进行图像匹配(可选),效果如下