一、SIFT特征原理描述
SIFT,即尺度不变特征变换,是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种非常稳定的局部特征。
1.SIFT算法的特点
1.1稳定性
SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;
1.2区分性好
信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;
1.3 多量性
即使少数的几个物体也可以产生大量的SIFT特征向量;
1.4高速性
经优化的SIFT匹配算法甚至可以达到实时的要求;
1.5可扩展性
可以很方便的与其他形式的特征向量进行联合。
2.SIFT算法特征检测
SIFT特征检测主要包括以下4个基本步骤:尺度空间极值检测、 关键点定位、方向确定和关键点描述。
3.SIFT算法特征匹配
3.1SIFT特征的生成
即从多幅图像中提取对尺度缩放、旋转、亮度变化无关的特征向量。主要包括:
a. 构建尺度空间,检测极值点,获得尺度不变性
b. 特征点过滤并进行精确定位
c. 为特征点分配方向值
d. 生成特征描述子
旋转后以主方向为中心取 8×8的窗口。如下图所示,左图的中央为当前关键点的位置,每个小格代表为关键点邻域所在尺度空间的一个像素,求取每个像素的梯度幅值与梯度方向,箭头方向代表该像素的梯度方向,长度代表梯度幅值,然后利用高斯窗口对其进行加权运算。最后在每4×4的小块上绘制8个方向的梯度直方图,计算每个梯度方向的累加值,即可形成一个种子点,如右图所示。每个特征点由4个种子点组成,每个种子点有8个方向的向量信息。
与求主方向不同,此时每个种子区域的梯度直方图在0-360之间划分为8个方向区间,每个区间为45度,即每个种子点有8个方向的梯度强度信息。
在实际的计算过程中,为了增强匹配的稳健性,Lowe建议对每个关键点使用4×4共16个种子点来描述,这样一个关键点就可以产生128维的SIFT特征向量。
3.2SIFT特征向量的匹配
当两幅图像的SIFT特征向量生成以后,下一步就可以采用关键点特征向量的欧式距离来作为两幅图像中关键点的相似性判定度量。取图1的某个关键点,通过遍历找到图像2中的距离最近的两个关键点。在这两个关键点中,如果最近距离除以次近距离小于某个阈值,则判定为一对匹配点。
4.尺度空间
在未知的场景中,计算机视觉并不能提供物体的尺度大小,其中的一种方法是把物体不同尺度下的图像都提供给机器,让机器能够对物体在不同的尺度下有一个统一的认知。在建立统一认知的过程中,要考虑的就是在图像在不同的尺度下都存在的特征点。
4.1多分辨率图像金字塔
图像金字塔是同一图像在不同的分辨率下得到的一组结果,其生成过程一般包括两个步骤:
a.对原始图像进行平滑
b.对处理后的图像进行降采样(通常是水平、垂直方向的1/2)
降采样后得到一系列不断尺寸缩小的图像。多分辨率的图像金字塔的本质是降采样,图像的局部特征则难以保持,也就是无法保持特征的尺度不变性。
4.2 高斯尺度空间
我们知道图像和高斯函数进行卷积运算能够对图像进行模糊,使用不同的“高斯核”可得到不同模糊程度的图像。一副图像其高斯尺度空间可由其和不同的高斯卷积得到:
其中,G(x,y,σ)是高斯核函数。
σ称为尺度空间因子,它是高斯正态分布的标准差,反映了图像被模糊的程度,其值越大图像越模糊,对应的尺度也就越大。L(x,y,σ)代表着图像的高斯尺度空间。
构建尺度空间的目的是为了检测出在不同的尺度下都存在的特征点,而检测特征点较好的算子是高斯拉普拉斯,LoG。
使用LoG虽然能较好的检测到图像中的特征点,但是其运算量过大,通常使用DoG(差分高斯)来近似计算LoG。设k为相邻两个高斯尺度空间的比例因子,则DoG的定义为:
其中,L(x,y,σ)是图像的高斯尺度空间。
从上式可以知道,将相邻的两个高斯空间的图像相减就得到了DoG的响应图像。为了得到DoG图像,先要构建高斯尺度空间,而高斯的尺度空间可以在图像金字塔降采样的基础上加上高斯滤波得到,也就是对图像金字塔的每层图像使用不同的参数σ进行高斯模糊,使每层金字塔有多张高斯模糊过的图像。降采样时,金字塔上边一组图像的第一张是由其下面一组图像倒数第三张降采样得到。
高斯金字塔有多组,每组又有多层。一组中的多个层之间的尺度是不一样的(也就是使用的高斯参数σ是不同的),相邻两层之间的尺度相差一个比例因子k。