SURF 与 SIFT
来源:互联网 发布:wrecking ball网络歌手 编辑:程序博客网 时间:2024/06/03 20:16
[转载]SURF 与 SIFT
共同点:
SIFT/SURF为了实现不同图像中相同场景的匹配,主要包括三个步骤:
1、尺度空间的建立;
2、特征点的提取;
3、利用特征点周围邻域的信息生成特征描述子
4、特征点匹配。
共同的大问题有以下几个:
1、为什么选用高斯金字塔来作特征提取?
2、Hessian矩阵为什么能用来筛选极值点?
3、为什么采用梯度特征作为局部不变特征?
4、为什么可以采用某些特征点的局部不变特征进行整幅图像的匹配?
从直观的人类视觉印象来看,人类视觉对物体的描述也是局部化的,基于局部不变特征的图像识别方法十分接近于人类视觉机理,通过局部化的特征组合,形成对目标物体的整体印象,这就为局部不变特征提取方法提供了生物学上的解释,因此局部不变特征也得到了广泛应用。
不同点的比较:
从博客上看到一个总结,我修改了一些内容。大家可以参看以下链接:
http://blog.csdn.net/ijuliet/archive/2009/10/07/4640624.aspx
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,
性能的比较:
论文:A comparison of SIFT, PCA-SIFT and SURF
比较的结果如下:
method
Time
Scale
Rotation
Blur
Illumination
Affine
Sift
common
best
best
common
common
good
Pca-sift
good
good
good
best
good
best
Surf
best
common
common
good
best
good
下面,先整理SIFT思路:
1. 输入图像,建议做double(width*=2, height*=2, size*=4), 并高斯过滤进行平滑。
2. 由图片size决定建几个塔,每塔几层图像(一般3-5层)。0塔的第0层是原始图像(或你double后的图像),往上每一层是对其下一层进行Laplacian变换(高斯卷积,其中sigma值渐大,例如可以是sigma, k*sigma, k*k*sigma…),直观上看来越往上图片越模糊。塔间的图片是降采样关系,例如1塔的第0层可以由0塔的第3层down sample得到,然后进行与0塔类似的高斯卷积操作。
3. 构建DoG金字塔。DoG金字塔由上一步生成的Gauss金字塔计算得到,塔数相同,每塔层数少1,因为DoG的每一层由Gauss的相邻两层相减得到。
4. 在DoG塔里进行极值点检测,并根据用户预设的对比度阈值、主曲率阈值去除不合法特征点。极值点检测用的Non-Maximal Suppression,即在3*3*3个点中进行灰度值比较,最小或最大才过关。
5. 计算每个特征点的尺度。注意塔间尺度关系,sigma*2.0^(octvs+intvl/intvls)
6. 计算每个特征点的梯度模值和方向。用特征点周围一个矩阵区域(patch)内的点来描述该特征点,用的直方图进行模值统计并寻找主方向,主方向可以不止一个。
7. 最后要生成64D或128D的特征描述符了。对齐主方向,计算方向直方图2D数组,假如每个直方图有8bin,那么64D(2*2*8bin)或128D(4*4*8bin)。
大面儿上说,SURF vs. SIFT:
SIFT
SURF
特征点检测
用不同尺度的图片与高斯函数做卷积
用不同大小的box filter与原始图像(integral image)做卷积,易于并行
方向
特征点邻接矩形区域内,利用梯度直方图计算
特征点邻接圆域内,计算x、y方向上的Haar小波响应
描述符生成
20*20(单位为pixel)区域划分为4*4(或2*2)的子区域,每个子域计算8bin直方图
20*20(单位为sigma)区域划分为4*4子域,每个子域计算5*5个采样点的Haar小波响 应,记录∑dx, ∑dy, ∑|dx|,∑|dy|。
SURF基于integral image,利用determination of Hessian matrix来描述极值点,也就是可能的特征点。那么什么是积分图像?在这里Hessian矩阵又是什么?怎么求得这个det(H)?它怎么样了就是极值点了?box filter是怎么来地,什么样儿?这里有相关文档和源码下载,很详细很清晰,这里我就不八了,您佬哪里不明白,跟帖交流。我比较好奇的是,Bay是如何发现integral image * box filter与高斯卷积这层近似关系的?为什么他会想到这么做?此外,基于integral image * Haar wavelet filter进行主方向的判定及描述符的生成,这样的卷积结果是什么?又说明了什么?是一种与邻接点差异或变化率的反映?Integral image is so fabulous。有兴趣的朋友一起讨论一下?
Luo Juan对这三种算法进行了实验比较,衡量参数有Processing time/ scale / changes/ rotation/ blur/ illumination/ affine,衡量指标有重复度或RANSAC内点概率,图片库来自这里。下面是大体赛况,您可以搜索"A comparison of SIFT, PCA-SIFT and SURF"看直播。
method
Time
Scale
Rotation
Blur
Illumination
Affine
Sift
common
best
best
common
common
good
PCA-sift
good
good
good
best
good
best
Surf
best
common
common
good
best
good
另外,SIFT、SURF也分别有了GPU实现,欢迎一起探讨学习!
SIFT on GPU, S.Heymann, 2005
SIFT on GPU(2), Sudipta N.Sinha, 2006
SURF on GPU, Nico Cornelis, 2008
此外,cy513的"SIFT/SURF算法的深入剖析——谈SIFT的精妙与不足"写地很棒,链过去方便大家阅读。
- SURF与SIFT比较
- SURF与SIFT比较
- SURF与SIFT比较
- SURF与SIFT比较
- SURF与SIFT比较
- SURF与SIFT比较
- SURF 与 SIFT
- sift与surf比较
- Sift与Surf的区别
- SIFT与SURF之比较
- SURF 与 SIFT的共同点与区别
- SIFT & SURF
- SURF&SIFT
- [转载]SURF 与 SIFT的共同点与不同点
- SIFT算法与SURF算法特征检测效率对比
- surf与sift特征点检测代码实现
- OpenCV-Python sift/surf特征匹配与显示
- SIFT 和SURF
- 在Spring中使用AOP实现日志功能
- Hive 自定义函数
- Quartz动态定时任务管理
- python基础学习三——混合数据类型
- 数据库
- SURF 与 SIFT
- cookie和session
- 使用HTML语言和CSS开发商业站点_表单
- 快速排序
- mysql密码丢失问题解决
- 第k短路(POJ 2449: Remmarguts' Date)
- 使用AsyncTask实现异步下载
- 初来乍到,聊一聊我自己的学习之路
- Jsp与servlet的区别