首页 > 代码库 > SIFT/SURF
SIFT/SURF
SIFT/SURF为了实现不同图像中相同场景的匹配,主要步骤:
1、尺度空间的建立;
2、特征点的提取;
3、利用特征点周围邻域的信息生成特征描述子;(以特征点为中心,在周围邻域内统计特征,将特征附加到稳定点上,生成特征描述子)
4、特征点匹配。
如果两幅图像中的物体只是旋转和缩放的关系,加上图像的亮度及对比度的不同,要在这些条件下实现物体之间的匹配,只要找到多于三对物体间的匹配点就可以通过射影几何的理论建立它们的一一对应。
如何找到这样的匹配点呢?SIFT/SURF作者的想法是首先找到图像中的一些“稳定点”,这些点是一些特殊的点,不会因为视角的改变、光照的变化、噪音的干扰而消失,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。这样如果两幅图像中有相同的景物,那么这些稳定点就会在两幅图像的相同景物上同时出现,这样就能实现匹配。因此,SIFT/SURF算法的基础是稳定点。
SIFT/SURF提取的稳定点,首先都要求是局部极值。但是,当两个物体的大小比例不一样时,大图像的局部极值点在小图像的对应位置上有可能不是极值点。于是SIFT/SURF采用图像金字塔的方法,每一个截面与原图像相似,这样两个金字塔中就有可能包含大小最近似的两个截面了。
这样找到的特征点会比较多,经过一些处理后滤掉一些相对不稳定的点。
比较:
SIFT在尺度和旋转变换的情况下效果最好;
SURF在亮度变化下匹配效果最好,在模糊方面优于SIFT,速度是SIFT的3倍。
|
SIFT |
SURF |
尺度空间 |
DOG与不同尺度的图片卷积 |
不同尺度的box filters与原图片卷积 |
特征点检测 |
先进行非极大抑制,再去除低对比度的点。再通过Hessian矩阵去除边缘的点 |
先利用Hessian矩阵确定候选点,然后进行非极大抑制 |
方向 |
在正方形区域内统计梯度的幅值的直方图,找max对应的方向。可以有多个方向。 |
在圆形区域内,计算各个扇形范围内x、y方向的haar小波响应,找模最大的扇形方向 |
特征描述子 |
16*16的采样点划分为4*4的区域,计算每个区域的采样点的梯度方向和幅值,统计成8bin直方图,一共4*4*8=128维 |
20*20s的区域划分为4*4的子区域,每个子区域找5*5个采样点,计算采样点的haar小波响应,记录∑dx, ∑dy,∑|dx|,∑|dy|,一共4*4*4=64维 |
SIFT/SURF