四、尺度不变的SURF特征检测
当我们想匹配不同图像时,经常会遇到图像尺度不同的问题,不同图像中特征点的距离变得不同,物体变成不同的尺寸,如果我们通过修正特征点的大小,就会造成强度不匹配。为了解决这个问题,我们提出一个尺度不变的SURF特征检测,在计算特征点的时候把尺度因素加入之中。SURF与SIFT算法相似,SIFT算法比较稳定,检测特征点更多,但是复杂度较高,而SURF要运算简单,效率高,运算时间短一点。
4.1 SURF算法简介
为了实现尺度不变性的特征点检测与匹配,SURF算法与SIFT算法的第一步都是构造图像多尺度空间(图像金字塔)。sift算法使用高斯卷积,高斯函数有两个参数,高斯核的尺寸K与σ值,默认最底层(0层)的σ = 1.6,原图像的σ=0.5(σ越大图像越模糊,所以源图像是最清晰的),尺寸空间即图像金字塔,Ksize决定有个塔,σ决定每个塔有几层(Octave),不同K和σ构造出的尺寸空间。在这种多尺度空间计算特征点就满足了尺度不变的特性。但是sift使用高斯卷积计算复杂,SURF算法则用高斯滤波与Hessian矩阵结合近似实现多尺度空间,计算复杂度降低多了。
同一层中k的值改变,不同层是σ的值改变
SURF第二步是根据非极大值抑制初步确定特征点,与SIFT相似。
第三步根据3维线性插值法得到半像素点的特征点,最后选取特征点的主方向,SURF是对特征点进行邻域统计,取半径为6S(单位)的圆区域,统计那个60°的扇形中haar小波特征总和最大,即为最大特征点主方向。
第四步构造特征点算术描述子,SURF算法是选取一个20S(单位)的区域,分成4X4分,每一份中有5X5S,统计一份中的∑dx,∑dy,∑|dx|,∑|dy|,这样就得到4X4X4 = 64的向量描述子。SIFT是128个描述子,比SURF复杂一点。