一、 算法简述
关键点:指图像中极具代表性的点,不随角度、尺度、光照等条件变化其特征的点,例如角点、边缘点、暗区域的亮点及亮区域等。
SIFT 算法可以用于物体识别、机器人地图感知与导航、影像缝合、3D 模型建立、手势辨别、影像追踪、动作对比等领域。
SIFT 算法分为以五步:
- 空间极值检测: 利用 DoG 在图像金字塔上获得极值点,这些点是关键点的候选。
- 关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度(达到亚像素精度)。这步操作可以去除低对比度的关键点和不稳定的边缘响应点(因为 DoG 算子会产生较强的边缘响应),以增强匹配的稳定性,提高抗噪声能力。
- 方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。(关键点事实上对应着其金字塔层次的一个区域,对该区域中各点的梯度进行直方图统计,从而获得主方向与辅方向)。
至此,每个关键点有三个信息:位置、所处尺度、方向。
后面的所有的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。 - 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。
具体做法是:- 先将关键点区域旋转为主方向
- 选
区域,每
的小块计算
个种子点内
个梯度方向的累加值(此时即可得
个特征值,此即为 SIFT 特征向量)
- 对两幅图,分别计算其 SIFT 特征向量,遍历一幅图中的关键点,计算其与第二幅图中关键点的欧式距离,选择欧式距离最小的两个点,若最近的距离除以次近的距离少于某个比例阈值,则为一匹配
这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。
为什么说 SIFT 算法可以不随角度、尺度、光照等条件变化呢?
- 尺度不变性:构建空间金字塔,从空间金字塔中挑选最适合尺度,此可对应尺度不变
- 旋转不变性:计算关键点 SIFT 特征向量时,将区域旋转到了主方向,此可对应旋转不变
- 亮度不变性:SIFT 特征向量进行归一化,可去除光照变化的影响,此可对应亮度不变
网友评论