opencv中fast特征匹配_OpenCV 匹配兴趣点:SIFT、SURF 和二值描述子

本文探讨了在OpenCV中如何使用SIFT、SURF等算法进行特征匹配,包括尺度不变检测、描述子生成、匹配策略如交叉检查和比率检测,以及ORB和BRISK等二值描述子的匹配方法。通过示例代码展示了特征匹配的过程和结果。
摘要由CSDN通过智能技术生成

兴趣点的图像分析,我们需要构建多种表征方式,精确地描述每个关键点。这些描述子通常是二值类型、整数型或浮点数型组成的向量。好的描述子要具有足够的独特性和鲁棒性,能唯一地表示图像中的每个特征点,并且在亮度和视角变化时仍能提取出同一批点集。此外,尽量能够简洁,以减少计算资源的占用。

SIFT算法提出者 David Lowe

1.Harris、FAST

这两个特征检测算子不具有尺度不变等特性,所以使用这两个算子进行检测并匹配的效果一般不会很好。常见的方案是通过比较特征点附近的一个方块的像素集合的相似度,算法使用差的平方和(SSD),效果如下,这里不进行代码演示。可以看到,即使在视角差别不大的情况下,就已经有非常多的错误匹配项。

FAST & SSD

2.SIFT、SURF

so,尺度不变检测算子的优势就体现出来了。SIFT、SURF在检测出特征点之后,可以生成相应的描述子(Descriptor)。这些描述子具有的信息量比单纯地比较像素块的SSD多得多,于是能够更好地进行图像的匹配。至于描述子的数据结构,上一篇文章中提到过,这里不再赘述。其中SIFT是128维的向量,SURF则是检测Haar小波特征。

SIFT

SURF

直接进行匹配的话,也会有很多的错误匹配项,比上面那两位好不到哪里去。那么,算法研究员们想出了一些匹配策略,能够在一定程度上减少错误项。主要有:交叉检查匹配项

交叉检查是指在第一幅图像匹配到第二幅图像后,再用第二幅图像的关键点再逐个跟第一幅的图像进行比较,只有在两个方向都匹配了同一个关键点时,才认为是一个有效的匹配项。比率检测法

我们为每个关键点找到两个最佳的匹配项,方法是使用kNN最近邻(可以看我的这篇文章,其实在这里只是用了欧氏距离)。接下来计算排名第二的匹配项与排名第一的匹配项的差值之比(如果两个匹配项近乎相等,则结果接近为1)。比率过高的匹配项作为模糊匹配项,从结果中被排除。匹配差值的阈值化

很简单,就是将差值过大的匹配项排除掉。

上面的一些匹配策略可以结合使用来提升匹配效果。代码实现如下/******************************************************

* Created by 杨帮杰 on 10/5/18

* Right to use this code in any way you want without

* warranty, support or any guarantee of it working

* E-mail: yangbangjie1998@qq.com

* Association: SCAU 华南农业大学

******************************************************/#include #include #include #include #include #include #include #include #define IMAGE1_PATH "/home/jacob/下载/church01.jpg"#define IMAGE2_PATH "/home/jacob/下载/church02.jpg"#define IMAGE3_PATH "/home/jacob/下载/church03.jpg"using namespace cv;using namespace std;int main(){    /*******************SIFT、SURF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值