局部特征系列:
  • 局部特征(1)——入门篇
  • 局部特征(2)——Harris角点 
  • 局部特征(3)——SURF特征总结 
  • 局部特征(4)——SIFT和SURF的比较 
  • 局部特征(5)——如何利用彩色信息 Color Descriptors 
  • 局部特征(6)——局部特征描述汇总 

--------------------------------------------------------------

第一部分:兴趣点的检测

1、建立积分图。

优点:任何一个垂直矩形区域的面积只需要进行3次 +/-法就能计算。一阶的haar小波响应只要5次+/-法就能计算。计算的时间和区域大小无关。

2、建立图像的尺度空间(应该分别有Dxx、Dxy、Dyy 三个尺度金字塔):

用box filters代替二阶高斯差分模板。

保持图像的大小不变,对box filters进行尺度变换:建立高斯金字塔,金字塔分为多个Octaves,每个Octave分为4个Scale levels。第一级的Octave的模块大小为9、15、21、27(相差6),第二级为15、27、39、51(相差12),第三级为27、51、75、99(相差24)。每一级第一个level的大小为上一级第二个level的大小。继续建立高斯金字塔,直到filter的大小大于原图像的大小为止(问题是大于每一Octave的第一个mask大小还是最后一个mask的大小?)。

尺度变换的方法,与每个Octave第一个scale level的size(L)/3有关,例如第一个Octave的L为9,L/3=9/3=3,则对于每行/列,连续出现L/3个相同的值,则再插入2个相同的值。若某连续3行同时为1,则再插入两行0。若只连续1行为1,则1*(2/3)=1(四舍五入)。插入的行/列要求左右/上下对称。

3、对于尺度空间中的每一个box filter,与图像卷积,计算每一点上的Dxx、Dyy、Dxy,再计算每一点Hessian矩阵的行列式。(卷积可以用积分图实现快速计算。)

其中w是因为box filters只是高斯二阶差分的近似,为了使行列式的值大致相等,乘以这个权值,取0.9。注意,每Octave提高一级,计算行列式的时候,采样的间隔提高一倍。例如第一个Octave,每个点都计算,到了第二个Octave,隔一个点计算一个……(用增大模板大小,对图像上的点采样计算的方法,等同于实现对图像进行下采样并改变模板尺度的大小。)

对于每一个Octave,对计算出行列式的值设一个阈值,大于该阈值的列为候选兴趣点。对候选极值点进行非极大抑制:对于该level的周围8个点以及上下scale level相应位置的9*2个点,一共26个点进行比较行列式的大小,若该点是周围26个点中行列式最大的,则保留。(每一个Octave的头尾两个scale level是没法计算的。)

为什么可以用Hessian矩阵来判断极小值/极大值,请见最后。

最后,内插子像素精确定位(具体未看)。

第二部分:特征描述子

1、 主方向的确定(U-Surf没有此步骤)

s = 当前mask大小 * 1.2 / 9

以兴趣点为中心,确定6s为半径的圆。对圆内以s为步长的采样点计算haar小波响应(边长为4s)。

以兴趣点为中心,对小波响应进行高斯加权()。对一个扇形区间(比如π/3)的水平和垂直方向的小波响应分别求和。最长矢量对应的扇形方向就是主方向。(每一个扇形窗可否有重复?)

2、以兴趣点为中心,主方向为参考x轴方向,20s为边长,做正方形区域,并将该区域分为4*4个子区域。(SURF-36把它分为3*3个子区域,区分性略差但速度快。)每个子区域取5*5个采样点,计算这些采样点上的haar小波响应dx和dy。以兴趣点为中心,对响应进行高斯加权(σ=3.3s)。

3、对每个子区域的dx、dy、|dx|、|dy|进行求和,归一化为单位向量。对于4*4个子块一共可以构成64维空间。(SURF-128在统计dx和|dx|时,把dy分为大于0时候和小于0时候两种情况,而在统计dy和|dy|时将dx分为大于0和小于0两种情况,这样每个子区域是8维向量)。

附:最近的思考(2011.7.10补充):

1、为什么Hessian矩阵可以用来判断极大值/极小值

我的理解如下:

在x0点上,hessian矩阵是正定的,且各分量的一阶偏导数为0,则x0为极小值点。

在x0点上,hessian矩阵是负定的,且各分量的一阶偏导数为0,则x0为极大值点。

对于某个局部区域,若hessian矩阵是半正定的,则这个区域是凸的(反之依然成立);若负定,则这个区域是凹的(反之依然成立)。而对于正定和负定来说,Hessian矩阵的行列式总是大于等于0的。反过来就是说:某个点若是极大值/极小值,hessian矩阵的行列式必然要大于等于0,而大于等于0如果是满足的,这个点不一定是极大值/极小值(还要判断一阶导数)。所以后面还要进行极大值抑制。

与SURF相关的局部特征是SIFT,已经有很多专家对它讨论过了,这里我也不再多谈,如果大家对它感兴趣的话,请看这里,而接下来的这篇博客则对SIFT和SURF做了比较

---------------------------

jiang1st2010

原文地址:http://blog.csdn.net/jiang1st2010/article/details/6564835

局部特征(3)——SURF特征总结相关推荐

  1. opencv上gpu版surf特征点与orb特征点提取及匹配实例

    opencv上gpu版surf特征点与orb特征点提取及匹配实例 标签: gpu版surfgpu orbsurf和orbgpu surf及orbsurf orb gpu 2016-09-25 23:4 ...

  2. 图像特征之SURF特征匹配

    原文站点:https://senitco.github.io/2017/06/27/image-feature-surf/   加速鲁棒特征(Speed Up Robust Feature, SURF ...

  3. 基于 C语言 surf 特征点的低重叠度图像拼接【100010118】

    基于 surf 特征点的低重叠度图像拼接 一. 题目说明 针对于重叠度低的图像研究基于图像特征匹配的图像拼接,实现多组图像对的拼接. 二. 问题分析 图像拼接是指将通过相机获取的具有一定重叠区域的两幅 ...

  4. Android OpenCV(五十八):SURF特征点检测

    SURF 特征点 SUFR (Speed Up Robust Fetures) ,是对 SIFT 算法的一种改进.SIFT (Scale-invariant Feature Transform) 即尺 ...

  5. OpenCV仿射变换 SURF特征点描述合辑

    原文:http://blog.csdn.net/poem_qianmo/article/details/33320997?utm_source=tuicool&utm_medium=refer ...

  6. 【深度学习笔记】SIFT特征和SURF特征比较

    SIFT特征和SURF特征都是优秀的尺度不变特征,常用来进行物体辨识和图像匹配.所谓的尺度不变特征是指每个检测到的特征点都伴随着对应的尺寸因子(特征点的局部尺寸参数与特征的尺度成正比),下面就这两种著 ...

  7. 基于SURF特征的目标检测

    转战matlab了.步骤说一下: 目标图obj 含目标的场景图scene 载入图像 分别检测SURF特征点 分别提取SURF描述子,即特征向量 用两个特征相互匹配 利用匹配结果计算两者之间的trans ...

  8. python3.6 opencv3.4.3使用surf特征出错【解决方案】

    python3.6 opencv3.4.3使用surf特征出错[解决方案] surf = cv2.xfeatures2d.SURF_create() cv2.error: OpenCV(3.4.3) ...

  9. 【OpenCV入门教程之十七】OpenCV重映射 SURF特征点检测合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/30974513 作者:毛星云(浅墨) ...

最新文章

  1. python时间序列因果检验_用python做时间序列预测八:Granger causality test(格兰杰因果检验)...
  2. 26 行 ABAP 代码使用 HTTP_GET 函数下载百度网站的首页数据
  3. 小米出招黑科技,5S或成全球首款”Under glass“指纹识别手机
  4. python文本替换 数据库_在Python中使用ASCII文件中的注释查找/替换子...
  5. js 数字千分位展示
  6. getopt设计shell脚本选项
  7. 如何用Pygame写游戏(七)
  8. mysql 事务 select_mysql 多个select需要放入一个事务吗?
  9. Linux 怎么找回管理员密码?
  10. 电子电路原理面试题目及答案(一)
  11. python反爬虫策略ppt_关于反爬虫策略
  12. 高通蓝牙耳机开发方法-周康
  13. linux一键安装aria2,Linux一键安装Aria2+Yaaw+FileManager实现BT磁力下载,并在线查看/观看...
  14. illustrator插件开发向导--基础入门(二)--插件定义--PiPL资源--插件管理--插件入口和消息--加载和卸载--启动和关闭
  15. 小米4android8.0root,小米8青春版获取root权限的教程
  16. 带修莫队 的 小优化 (针对yxc版本)
  17. 栈(stack)C语言实现(有详细注释讲解)
  18. RBAC角色访问控制
  19. 最新C#/CLR的访谈录( 访Peter Hallam)
  20. C# (江湖熟手)- Cefsharp 的使用(几行代码写个浏览器)

热门文章

  1. 实战并发编程 - 03基于不可变模式解决并发问题_1
  2. 高并发编程-线程生产者消费者的综合示例
  3. 白话Elasticsearch30-IK中文分词之热更新IK词库
  4. 基础JavaScript_Day01
  5. python获取url文件名_python httplib / urllib获取文件名
  6. 关闭占用某一端口号的进程 win10
  7. c 字符串数组_redis为什么不直接使用C字符串,而要自定义简单动态字符串?
  8. python corr画图_用一张很丑的图学习Python数据可视化基础--热力图
  9. python输出二进制数_二进制中1的个数(python)
  10. 湖南vb程序设计二级计算机考试题库答案,计算机二级VB语言程序设计考试题及答案...