一、算法描述
尺度不变特征转换(Scale-invariant feature transform,SIFT),是一种图像特征提取与描述算法。SIFT是由David Lowe在1999年所发表,2004年进行了完善与总结。SIFT算法可以处理两幅图像之间发生平移、旋转、尺度变换、光照变化等情况下的特征匹配问题,并能在一定程度上对视角变化、仿射变化也具有稳定的特征匹配能力。其应用范围包含物体辨识、机器人地图感知与导航、影像缝合、3D模型建立、手势辨识、影像追踪和动作比对。
SIFT算法的特点有:
1. SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;
2. 独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;
3. 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;
4. 高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;
5. 可扩展性,可以很方便的与其他形式的特征向量进行联合。
二、基本原理与实现步骤
一幅图像的SIFT特征向量的生成主要包括5步:尺度空间的生成、尺度空间极值检测、精确确定极值点、关键点方向确定、特征向量生成。
(1)DOG尺度空间生成
我们将图像的尺度空间表示成一个函数L(x,y,sigma),它是由一个变尺度的高斯函数G(x,y,sigma)与图像I(x,y)卷积产生的,即
G(x,y,sigma)则为
(x,y)是空间坐标,是尺度坐标。σ大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的σ值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。 SIFT算法建议,在某一个尺度上对斑点的检测,可以通过对两个相邻高斯尺度空间的图像相减,得到一个DOG(Diffrence of Gaussians)的响应值图像D(x,y,sigma)。然后仿照