robust检验python_一起学opencv-python三十三(特征检测和描述:SURF,BRIEF和ORB)

SURF(Speeded Up Robust Features)

原理参考了https://www.cnblogs.com/gfgwxw/p/9415218.html

在上一讲中,我们看到了SIFT的关键点检测和描述。但它相对较慢,人们需要更加快速的版本。2006年,Bay,H.,Tuytelaars,T。和Van Gool,L三人发表了另一篇论文“SURF:Speeded Up Robust Features”,引入了一种名为SURF的新算法。顾名思义,它是SIFT的加速版本。

这个积分图我们也介绍过好多次了,用于快速计算卷积。

这块内容我们很熟悉了,这个感觉有点像联合概率分布的感觉。这个可以加速的原因就是避免了一些重复的计算,我们事先把一些计算结果存在积分图里面,可以直接利用而不是下次用到某一个结果的时候再次计算。

b就是高斯滤波器的二阶求导结果。

为什么可以

为什么经过高斯滤波可以看做是一种尺度变换呢?这是因为高斯滤波某种程度上和降采样(也就是缩小图片)实现的效果是一样的,因为高斯滤波可以弱化边缘,可以消除像素之间的差异,会让图像变得模糊,这一点和降采样的效果是很像的。

这就是前面提到的一种HAAR特征提取方法。

简而言之,SURF增加了许多功能来提高每一步的速度。分析显示它比SIFT快3倍,而性能与SIFT相当。SURF擅长处理模糊和旋转的图像,但不善于处理视角变化和光照变化(据opencv官方)。在opencv中它和SIFT的用法类似:

解释一些参数的含义,extended表示描述符的维数,0代表使用64维描述符而,1表示使用128维的描述符。upright表示是否计算方向,0代表计算方向,1代表不计算方向。hessianThreshold表示hessian行列式的阈值。nOctaves是高斯金字塔的组数,默认是4。

nOctaveLayers是每一组的层数,默认是2。

下面我们来试验对比下:

这个是SIFT的时间。

SURF的时间好长,但是检测出来的点很多,我们需要增大阈值了,我们这里设为1000,在实际情况下,最好是300-500。

enmm,看着太乱了,不好显示,再加大一下阈值。

可以看到方向是不一样的。如果不计算方向:

感觉也没有快多少。也感觉不到SURF比SIFT快,可能是我只运行了一次,具有偶然性?

BRIEF

参考了https://blog.csdn.net/hujingshuang/article/details/46910259

也就是说BRIEF其实本身并不是一种特征检测方法,而其实应该算是一种特征描述方法。

上面是分别用五种采样方法得到的图形。这里再介绍一种特征匹配方法:CenSurE。

参考了http://www.docin.com/p-1253563282.html

http://www.doc88.com/p-9929575192507.html

大致步骤都差不太多,它也是对SIFT的一种改进。

这里又要拿出来积分图了。

再详细的信息可以到http://www.doc88.com/p-9929575192507.html去看一看这篇硕士论文或者去参看原文:

Motilal Agrawal, Kurt Konolige, and Morten Rufus Blas. Censure: Center surround extremas for realtime feature detection and matching. In Computer Vision–ECCV 2008, pages 102–115. Springer, 2008.

opencv中CenSurE的类是

BRIEF的类是:

默认是取256对点,256个数据需要32*8个位,也就是32个字节,这个相比前面的128维(128个数字至少需要128*8位,也就是128个字节,64维也需要64个字节)

然后我们来试一下这个吧。

这个速度感觉好快啊,检测出来特征点只有89个,不过默认是不描述方向的。

时间还稍微短了一点?这个des出出来是一个元组:

第一个元素是关键点存储的一个列表,第二个元素是特征描述的一个元组。

它的长度是32个字节,用uint8存储。

ORB

ORB出现的很大的一个原因是:SIFT和SURF已获得专利,您应该支付它们的使用费用。但ORB不是!!!它不需要安装opencv-contrib就可以使用。关于它的原理,参考https://blog.csdn.net/zouzoupaopao229/article/details/52625678

这里又提到了FSAT,我们算是复习一下。

第一步主要还是排除。

原来的FAST里面并没有步骤四和五的内容。步骤四感觉就是和SIFT结合了一下。

这是我们第二次见了。

均值为0.5的时候信息熵最大,包含信息量最多,方差大。

4

关于积分图加速,其实我一直存有疑问,它是怎么加速高斯滤波的?参考了https://www.cnblogs.com/celerychen/archive/2013/03/09/2951660.html

按照2的思路,其它类型的滤波器或许也可以用均值来组合逼近,当然统计滤波就有点麻烦了。比如中值滤波我感觉要求最高的其实是排序算法,只要排序算法速度快,它的效率就高。

如果还不是很懂可以看看https://blog.csdn.net/yirant7/article/details/51332881

opencv里面怎么实现呢?

因为这里会有特征点数,所以需要排名,我们取前面n个,除了哈里斯得分,还有FAST得分。

我们来试一试:

感觉是比SIFT要快,但是没有100倍吧。我看换一种得分方式结果会有不同吗?

区别比较小吧。

特征检测和描述大概就学习这么多吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值