图像特征之SURF特征匹配
来源:互联网 发布:单片机按键开关机电路 编辑:程序博客网 时间:2024/06/07 03:53
原文站点:https://senitco.github.io/2017/06/27/image-feature-surf/
加速鲁棒特征(Speed Up Robust Feature, SURF)和SIFT特征类似,同样是一个用于检测、描述、匹配图像局部特征点的特征描述子。SIFT是被广泛应用的特征点提取算法,但其实时性较差,如果不借助于硬件的加速和专用图形处理器(GPUs)的配合,很难达到实时的要求。对于一些实时应用场景,如基于特征点匹配的实时目标跟踪系统,每秒要处理数十帧的图像,需要在毫秒级完成特征点的搜索定位、特征向量的生成、特征向量的匹配以及目标锁定等工作,SIFT特征很难满足这种需求。SURF借鉴了SIFT中近似简化(DoG近似替代LoG)的思想,将Hessian矩阵的高斯二阶微分模板进行了简化,借助于积分图,使得模板对图像的滤波只需要进行几次简单的加减法运算,并且这种运算与滤波模板的尺寸无关。SURF相当于SIFT的加速改进版本,在特征点检测取得相似性能的条件下,提高了运算速度。整体来说,SUFR比SIFT在运算速度上要快数倍,综合性能更优。
积分图像
SURF算法中用到了积分图的概念,借助积分图,图像与高斯二阶微分模板的滤波转化为对积分图像的加减运算,从而在特征点的检测时大大缩短了搜索时间。
积分图中任意一点
式中,
求取积分图时,对图像所有像素遍历一遍,得到积分图后,计算任何矩形区域内的像素灰度和只需进行三次加减运算,如下图所示。
Hessian矩阵近似
图像点的二阶微分Hessian矩阵的行列式(Determinant of Hessian, DoH)极大值,可用于图像的斑点检测(Blob Detection)。Hessian矩阵定义如下:
式中,
与LoG算子一样,DoH同样反映了图像局部的纹理或结构信息,与LoG相比,DoH对图像中细长结构的斑点有较好的抑制作用。LoG和DoH在利用二阶微分算子对图像进行斑点检测时,都需要利用高斯滤波平滑图像、抑制噪声,检测过程主要分为以下两步:
- 使用不同的
- 在图像的位置空间和尺度空间搜索LoG或DoH的峰值,并进行非极大值抑制,精确定位到图像极值点。
三个高斯微分算子的响应图像如下图所示:
由于二阶高斯微分模板被离散化和裁剪的原因,导致了图像在旋转奇数倍的
为了将模板与图像的卷积转化为盒子滤波器(Box Filter)运算,并能够使用积分图,需要对高斯二阶微分模板进行简化,使得简化后的模板只是由几个矩形区域组成,矩形区域内填充同一值,如下图所示,在简化模板中白色区域的值为1,黑色区域的值为-1或-2(由相对面积决定),灰色区域的值为0。
对于
式中,
在实际计算滤波响应值时,需要使用模板中盒子(矩形)区域的面积进行归一化处理,以保证一个统一的Frobenius范数能适应所有的滤波尺寸。
使用近似的Hessian矩阵行列式来表示一个图像中某一点处的斑点响应值,遍历图像中的所有像素,便形成了在某一尺度下斑点检测的响应图像。使用不同的模糊尺度和模板尺寸,便形成了多尺度斑点响应的金字塔图像,利用这一金字塔图像,可以进行斑点响应极值点的搜索定位,其过程与SIFT算法类似。
尺度空间表示
要想检测不同尺度的极值点,必须建立图像的尺度空间金字塔。一般的方法是通过采用不同
如前所述,使用
在建立盒状滤波金字塔时,与SIFT算法类似,需要将尺度空间划分为若干组(Octaves)。每组又由若干固定层组成,包括不同尺寸的滤波模板对同一输入图像进行滤波得到的一系列响应图。由于积分图像的离散特性,两个相邻层之间的最小尺度变化量,是由高斯二阶微分滤波模板在微分方向上对正负斑点响应长度(波瓣长度)
采用类似的方法处理其他组的模板序列,其方法是将滤波器尺寸增加量按Octave的组数
滤波器的尺寸
关键点定位
和LoG、DoG类似,建立尺度空间后,需要搜索定位关键点。将经过box filter处理过的响应图像中每个像素点与其3维邻域中的26个像素点进行比较,若是最极大值点,则认为是该区域的局部特征点。然后,采用3维线性插值法得到亚像素级的特征点,同时去掉一些小于给定阈值的点,使得极值检测出来的特征点更稳健。和DoG不同的是,不需要剔除边缘导致的极值点,因为Hessian矩阵的行列式已经考虑了边缘的问题。
特征点方向分配
为了保证特征描述子具有旋转不变性,与SIFT一样,需要对每个特征点分配一个主方向。为此,在以特征点为中心,以
使用
主方向为最大Haar响应累加值所对应的方向,即
仿照SIFT求主方向时策略,当存在大于主峰值80%以上的峰值时,则将对应方向认为是该特征点的辅方向。一个特征点可能会被指定多个方向,可以增强匹配的鲁棒性。
特征描述子生成
生成特征点描述子时,同样需要计算图像的Haar小波响应。与确定主方向不同的是,这里不再使用圆形区域,而是在一个矩形区域计算Haar小波响应。以特征点为中心,沿主方向将
将
由于共有
为了充分利用积分图像计算Haar小波的响应值,在具体实现中,并不是直接通过旋转Haar小波模板求其响应值,而是在积分图像上先使用水平和垂直的Haar模板求得响应值
SURF在求取描述子特征向量时,是对一个子块的梯度信息进行求和,而SIFT是依靠单个像素计算梯度的方向。在有噪声的干扰下,SURF描述子具有更好的鲁棒性。一般而言,特征向量的长度越长,所承载的信息量就越大,特征描述子的独特性就越好,但匹配时所付出的时间代价也越大。对于SURF描述子,可以将其扩展到128维。具体方法就是在求Haar小波响应值的统计和时,区分
下图是用SURF进行特征点匹配的实验结果
SURF与SIFT的对比
- 尺度空间:SIFT使用DoG金字塔与图像进行卷积操作,而且对图像有做降采样处理;SURF是用近似DoH金字塔(即不同尺度的box filters)与图像做卷积,借助积分图,实际操作只涉及到数次简单的加减运算,而且不改变图像大小。
- 特征点检测:SIFT是先进行非极大值抑制,去除对比度低的点,再通过Hessian矩阵剔除边缘点。而SURF是计算Hessian矩阵的行列式值(DoH),再进行非极大值抑制。
- 特征点主方向:SIFT在方形邻域窗口内统计梯度方向直方图,并对梯度幅值加权,取最大峰对应的方向;SURF是在圆形区域内,计算各个扇形范围内
x、y 方向的Haar小波响应值,确定响应累加和值最大的扇形方向。 - 特征描述子:SIFT将关键点附近的邻域划分为
4×4 的区域,统计每个子区域的梯度方向直方图,连接成一个4×4×8=128 维的特征向量;SURF将20s×20s 的邻域划分为4×4 个子块,计算每个子块的Haar小波响应,并统计4个特征量,得到4×4×4=64 维的特征向量。
总体来说,SURF和SIFT算法在特征点的检测取得了相似的性能,SURF借助积分图,将模板卷积操作近似转换为加减运算,在计算速度方面要优于SIFT特征。
reference
- Paper: SURF: Speeded Up Robust Features
- http://blog.csdn.net/songzitea/article/details/16986423
- http://www.cnblogs.com/ronny/p/4045979.html
- http://www.cnblogs.com/ronny/p/4048213.html
- http://www.cnblogs.com/YiXiaoZhou/p/5903690.html
- http://www.cnblogs.com/tornadomeet/archive/2012/08/17/2644903.html
- 图像特征之SURF特征匹配
- 图像特征之surf
- 【OpenCV】SURF算法之视频图像实时特征点匹配
- SURF特征匹配算法
- OpenCV Surf特征匹配
- 图像处理之SURF特征点检测
- 图像特征之SIFT特征匹配
- SURF 特征提取和匹配
- Surf特征匹配点提纯
- opencv3.1 surf特征匹配
- OpenCV中的SURF特征匹配
- Surf特征提取与匹配
- 图像特征提取4:Surf特征
- 图像特征提取4:Surf特征
- 图像特征— —SURF特征
- SURF特征--图像配准
- OpenCV检测图像SURF特征
- 图像算法之四:特征提取算法之SURF
- 如何在 Linux下从普通用户切换到root用户
- 银行卡识别-微信支付你不知道的秘密
- js实现简单的导航下拉菜单
- Java Keytool 生成 keystore 命令
- ava 前端加密传输后端解密以及验证码功能
- 图像特征之SURF特征匹配
- 比特币的原理及运作机制
- tensorflow使用gpu进行计算的配置步骤
- Spring的AOP面向切面编程
- Kafka+ Spark Streaming 创建stream编译报错
- 安装tslib中遇到的错误:./autogen.sh: 4: autoreconf: not found
- 国际化i18n
- 主键
- Word2Vec的原理及要点