SIFT和SURF算法都是特征检测中较常用的算法,SURF是对SIFT的一种改进,尤其在效率上有明显提升。
下面的实验给出了SIFT算法和SURF算法在特征检测效率上的对比,
所用的SIFT源码来自Rob.Hess,下载地址:http://robwhess.github.io/opensift/
SURF源码来自Chris.Evan的OpenSURF,下载地址:http://www.chrisevansdev.com/computer-vision-opensurf.html
SURF特征检测中的绿色箭头表示暗背景中的亮点(laplacian符号为0),粉色箭头表示亮背景中的暗点(laplacian符号为1)。
(1) 图像尺寸:288 * 400
检测图中的SIFT特征点用时:0.308204秒,特征点个数:354 检测图中的SURF特征点用时:0.10825秒,特征点个数:119
(2) 图像尺寸:244 * 265
检测图中的SIFT特征点用时:0.61654秒,特征点个数:879 检测图中的SURF特征点用时:0.145502秒,特征点个数:213
(2)图像尺寸:520 * 387
检测图中的SIFT特征点用时:1.19946秒,特征点个数:1795 检测图中的SURF特征点用时:0.270752秒,特征点个数:419
(4)图像尺寸:640 * 480
检测图中的SIFT特征点用时:0.58695秒,特征点个数:594 检测图1中的SURF特征点用时:0.268403秒,特征点个数:301
(5)图像尺寸:400 * 300
检测图中的SIFT特征点用时:0.12064秒,特征点个数:50 检测图中的SURF特征点用时:0.153961秒,特征点个数:196
可以看到,一般来说,SURF算法的效率是SIFT算法的3倍左右,而检测出的特征点的个数是SIFT算法的1/3左右,当然也和图像大小、纹理复杂程度、算法参数设置有关。从第(5)组例子中可以看出,SURF算法在边缘抑制上做的似乎没有SIFT好,好多边缘都被检测成了特征点,从而导致特征点个数多于SIFT。
参考