- SIFT算法
1.1 概述
SIFT(Scale-Invariant Feature Transform,尺度不变特征变换),由David G.Lowe提出,是一种计算机视觉的算法。它用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量。SIFT算法可解决的问题有目标的旋转、缩放、平移(RST)、图像仿射/投影变换(视点viewpoint)、弱光照影响(illumination)、部分目标遮挡(occlusion)、杂物场景(clutter)、噪声等。
1.2 SIFT特征检测的步骤
(1)尺度空间的极值检测:搜索所有尺度空间上的图像,通过高斯微分函数来识别潜在的对尺度和选择不变的兴趣点。
(2)特征点定位 在每个候选的位置上,通过一个拟合精细模型来确定位置尺度,关键点的选取依据他们的稳定程度。
(3)特征方向赋值 基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向,后续的所有操作都是对于关键点的方向、尺度和位置进行变换,从而提供这些特征的不变性。
(4)特征点描述 在每个特征点周围的邻域内,在选定的尺度上测量图像的局部梯度,这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变换。
1.3 SIFT算法原理
sift算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。这些是一些十分突出的点,不会因光照、尺度、旋转等因素的改变而消失,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。
SIFT图像匹配
程序代码
运行结果
匹配地理标记图像
以集美大学吕振万楼及其周围建筑为参照物,采用17张图片进行地理标记。
程序代码
运行结果
实验结果表明,SIFT采用henssian矩阵获取图像局部最值还是十分稳定的,但是在求主方向阶段太过于依赖局部区域像素的梯度方向,有可能使得找到的主方向不准确,后面的特征向量提取以及匹配都严重依赖于主方向,即使不大偏差角度也可以造成后面特征匹配的放大误差,从而匹配不成功。如图中间部分,将吕振万楼与建发楼道匹配在一起,对于相似建筑匹配错误。
最后,同样的景物在不同的照片中可能出现不同的形状、大小、角度、亮度,甚至扭曲;计算机视觉的知识表明通过光学镜头获取的图像,对于平面形状的两个物体它们之间可以建立射影对应,对于像人脸这种曲面物体在不同角度距离不同相机参数下获取的两幅图像,它们之间不是一个线性对应关系,就是说我们即使获得两张图像中的脸上若干匹配好的点对,还是无法从中推导出其他点的对应。