0. 特征检测定义、作用和使用相关
特征检测是从图像中
自动提取对象特征
用以表述该对象
,
同时还可以利用得到的特征数据
描述
在不同的图像中发现相同的对象
,(一旦得到两个对象的描述子,
就可以使用它们实现特征数据的匹配与比对,
从而分辨出它们是否具有相似性)
而且特征对对象的旋转、缩放、光照等具有不变性。整个过程可以分为三个部分:
检测、描述、匹配
。OpenCV中是通过
feature2d
与xfeature2d
完成整个流程操作的,从而实现
基于图像特征的对象检测与匹配。
1.SURF特征检测
SURF(Speeded Up Robust Feature)
特征就是图像最常见
的特征之一,
该方法在2006年由几位作者联合提出,
主要是用来克服SIFT(一种特征检测方法)计算量比较大,
运行速度比较慢的缺点;SURF具有以下的
优点
:基于积分图计算,快速关键点提取;
不同关键点描述;
快速描述子匹配;
同时具有旋转、尺度、光照不变性;
SURF通过建立
不同尺度的级联算子
来实现高斯图像的尺度不变性
特征,
计算LOG
得到每个像素点的Hessian矩阵
,-
在建立级联算子实现Hessian矩阵的计算中,
SURF使用了积分图
来实现预计算
,
通过积分图查找表
实现Hessiam矩阵快速计算。离散高斯
及其近似梯度算子
如下图:
算子级联
实现尺度空间不变性
,如下图:
![9125154-175fc2fde62882dd.png](https://i-blog.csdnimg.cn/blog_migrate/d65cccd84d56c435888ff4e3368333e6.webp?x-image-process=image/format,png)
最终把
高斯核
近似为一个盒子滤波
,
这样就可以不用进行高斯核与浮点数计算,
基于积分图,不断扩大盒子滤波核的大小,
就可以在不同层数计算结果;对
第一层
分别使用9×9、15×15、21×21、27×27
,扩大之后
进行下层级计算
。每个层级之间的差值
一般取值为12
,
这时下个层级
的滤波核
就是39×39
,再下一个层级
就是51×51
。
取值为24
时,下个层级
就是51×51
,
再下个层级就是75×75
。为了在每一层之间定位图像的关键点
(图像的关键点就是图像Hessian矩阵梯度最大值或者最小值所在点的附近),
对同一层级的不同层3×3×3范围内寻找极大值或者极小值作为候选点,
对满足条件的关键点,
使用插值公式寻找亚像素级别的关键点的准确位置,
最终得到SURF特征检测的关键点数据。
2.SURF特征描述子
特征描述子是用来描述每个关键点特征的唯一数据,它必须能够显著区分各个特征关键点的不同之处,SURF特征描述子是基于Haar小波响应理论的,可以通过积分图进行快速计算,描述子首先要选取关键点周围的像素块(ROI),通常ROI区域的大小为20个像素,分为4×4的网格区域,如下图:![9125154-b6bfe3e04f68dc5f.png](https://i-blog.csdnimg.cn/blog_migrate/be20fe3d7794e907163920936270f802.webp?x-image-process=image/format,png)
![9125154-9291282ec14ed4db.png](https://i-blog.csdnimg.cn/blog_migrate/05f3b95f4a09882c6c917c52f1948515.webp?x-image-process=image/format,png)
![9125154-ca150470e5c55ce8.png](https://i-blog.csdnimg.cn/blog_migrate/aba8fd61e09056b49ff4603e663a1a36.webp?x-image-process=image/format,png)
实验证明,在窗口较小的情况下,容易导致出现异常高峰的问题,在窗口比较大的情况下,容易出现向量过长,描述子描述不够准确的问题,所以一般情况下更趋向跳过方向指派步骤直接使用U-SURF,它在±15°范围内可以保证旋转不变性特征。