总体来说,Sift算子具有以下特性:
(1)Sift特征是图像的局部特征,对平移、旋转、尺度缩放、亮度变化、遮挡和噪声等具有良好的不变性,对视觉变化、仿射变换也保持一定程度的稳定性。
(2)独特性好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配。
(3)多量性,即使少数的几个物体也可以产生大量Sift特征向量。
(4)速度相对较快,经优化的Sift匹配算法甚至可以达到实时的要求。
(5)可扩展性强,可以很方便的与其他形式的特征向量进行联合。
Sift特征匹配算法主要包括两个阶段,一个是Sift特征的生成,即从多幅图像中提取对尺度缩放、旋转、亮度变化无关的特征向量;第二阶段是Sift特征向量的匹配。
Sift特征的生成一般包括以下几个步骤:
1、构建尺度空间,检测极值点,获得尺度不变性;
2、特征点过滤并进行精确定位;
3、为特征点分配方向值;
4、生成特征描述子。
以特征点为中心取16*16的邻域作为采样窗口,将采样点与特征点的相对方向通过高斯加权后归入包含8个bin的方向直方图,最后获得4*4*8的128维特征描述子。示意图如下:
当两幅图像的Sift特征向量生成以后,下一步就可以采用关键点特征向量的欧式距离来作为两幅图像中关键点的相似性判定度量。取图1的某个关键点,通过遍历找到图像2中的距离最近的两个关键点。在这两个关键点中,如果次近距离除以最近距离小于某个阙值,则判定为一对匹配点。
一些Sift特征匹配的例子:
SIFT算法的教程、源码及应用软件
1、ubc:DAVID LOWE---SIFT算法的创始人,两篇巨经典经典的文章
http://www.cs.ubc.ca/~lowe/
2、cmu:YanKe---PCASIFT,总结的SIFT方面的文章SO全,巨经典
http://www.andrew.cmu.edu/user/yke/
3、ubc:MBROWN---SIFT算法用于图像拼接的经典应用autopano-sift,包括一个SIFTLIB库
http://www.cs.ubc.ca/~mbrown/autostitch/autostitch.html
http://www.cs.ubc.ca/~mbrown/panorama/panorama.html
4、toronto:Jepson---Matlab SIFT tutorial, 超级超级超级经典~
http://www.cs.toronto.edu/~jepson
5、ucla:Vedaldi---加州大学一个博士生编的SIFT,Matlab、C的都有,但没用过
http://www.cs.ucla.edu/~vedaldi/
6、一个小的拼接软件ptasmblr
http://www.tawbaware.com/ptasmblr.htm