局部特征系列:
  • 局部特征(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. 已解决:大家使用原子哥的延时函数delay_ms,delay_us会出现进入延时函数出不来的情况
  2. android+命令行编译,打包生成apk文件,Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包...
  3. 如何解决线程安全的问题
  4. android更换工具链
  5. DBCP|C3P0参数详解
  6. React Native之函数作为参数传递给另外一个函数去调用
  7. 找出第二小元素(算法导论第三版9.1-1题)
  8. Labview-隧道 移位寄存器
  9. 第一章 微服务网关 - 入门
  10. php如何读取excel合并单元格_PHP读取excel中合并的单元格的值
  11. 除了被动阅读,用户想要的更多
  12. 富士康跳楼事件续集,主管扬言现场把人处理掉,并表示拒不处理善后
  13. GPU架构演进十年,从费米到安培
  14. 163邮箱链接服务器失败是怎么回事,outlook邮箱添加163邮箱账户失败该怎么办?...
  15. VMware vCenter Server 7.0 U2b/6.7 U3n/6.5 U3p 修复高危安全漏洞
  16. 一级域名与二级域名之间的区别
  17. android room 简书,Android Room 的坑
  18. 游戏建模都要用到哪些软件?3d游戏建模用什么软件容易
  19. TX2安装opencv3.4.0
  20. iPad,iPad Pro和iPad Mini有什么区别?

热门文章

  1. 如何用深度学习做自然语言处理?这里有份最佳实践清单
  2. 杨鹏谈世纪佳缘推荐算法:基于Spark GraphX,弃GBDT和LR用FM
  3. Java Review - ArrayList 源码解读
  4. SpringBoot - 构建监控体系03_使用 Admin Server 管理 Spring 应用程序
  5. linux服务器磁盘格式,linux下查看磁盘分区的文件系统格式
  6. mybatis-plus自动生成文件
  7. 后端程序员工作经验总结
  8. Java OkHttp3的简单使用
  9. Matlab-实时编辑器介绍
  10. android 编辑框带拖动,Android带输入框的对话框