SIFT(Scale - Invariant Feature Transform,尺度不变特征变换)是一种计算机视觉领域的特征提取算法,具有重要的地位和广泛的应用。
算法原理
-
构建高斯金字塔 :
为了实现多尺度检测,SIFT 算法会构建高斯金字塔。首先将原始图像进行高斯模糊,然后依次对模糊后的图像进行降采样,每次降采样后图像尺寸减半,从而得到一系列不同尺度的图像,构成一个八度。通常会构建多个八度,每个八度包含若干层,以覆盖不同的尺度范围。
-
差分高斯金字塔与关键点检测 :
基于高斯金字塔构建差分高斯金字塔,即将同一八度中相邻两层高斯图像相减得到。关键点检测就是在这个差分高斯金字塔中,通过寻找每个样本点在周围邻域中的极值点来确定。具体来说,对于每个图像点,会将其与同层相邻的 8 个点以及上下层相邻的 9 个点(共 26 个点)进行比较,如果该点的差分高斯响应值是这 26 个点中的最大值或最小值,则认为该点是一个极值点,即候选关键点。
-
关键点定位与筛选 :
为了提高关键点的定位精度,并去除一些低对比度的关键点和不稳定的边缘响应点,需要对初步检测到的关键点进行定位和筛选。通过拟合三维二次函数到邻域像素来对关键点的位置和尺度进行迭代精修,确定其精确位置和对应的尺度。同时,计算关键点的对比度,去除对比度过低的点,以确保关键点的稳定性。
-
关键点方向赋值 :
为了使关键点具有旋转不变性,需要为每个关键点分配一个方向。在关键点的邻域内,利用高斯加权函数计算图像梯度的方向直方图。直方图的峰值方向即为该关键点的主方向,关键点的方向由其邻域内梯度的方向分布情况来确定,从而使得关键点描述子具有旋转不变性。
-
关键点描述子生成 :

最低0.47元/天 解锁文章
2977

被折叠的 条评论
为什么被折叠?



