Opencv下利用SIFT、SURF、ORB三种特征点实现图像匹配

来源:互联网 发布:依恋淘宝官方旗舰店 编辑:程序博客网 时间:2024/05/16 15:30

Opencv下利用SIFT、SURF、ORB三种特征点实现图像匹配

视频项目中要用到拼接,这里记录一下SIFT、SURF、ORB三种特征点。
本文不做过多的理论解释,只是利用opencv简单实现三种特征点匹配算法的验证(改进的部分暂未上传)。

代码下载地址:Opencv下利用SIFT、SURF、ORB三种特征点实现图像匹配

环境:
Windows下vs2010,opev2.4.9;
代码release下编译,工程release下的exe可以直接运行;编译工程需要配置opencv,见:opencv配置
注意:
工程具体添加以下lib(release下的dll与以下的lib是对应的):
opencv_core249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_features2d249.lib
opencv_nonfree249.lib
opencv_legacy249.lib

  1. SIFT算法
    SIFT特征是图像的局部特征,对平移、旋转、尺度缩放、亮度变化、遮挡和噪声等具有良好的不变性,对视觉变化、仿射变换也保持一定程度的稳定性。SIFT算法时间复杂度的瓶颈在于描述子的建立和匹配 ,如何优化对特征点的描述方法是提升SIFT效率的关键。
    作者David Lowe原文(附有demo)
    Distinctive image features from scale-invariant keypoints
    下载地址:
    http://www.cs.ubc.ca/~lowe/keypoints/
    附个SIFT算法讲解的帖子:
    http://blog.csdn.net/abcjennifer/article/details/7639681/
    https://www.52ml.net/2713.html

  2. SURF算法
    SURF算法的优点是速度远快于SIFT且稳定性好;在时间上,SURF运行速度大约为SIFT的3倍;在质量上,SURF的鲁棒性很好,特征点识别率较SIFT高,在视角、光照、尺度变化等情形下,大体上都优于SIFT。
    作者原文:Speeded-Up Robust Features (SURF)
    下载地址:
    http://www.sciencedirect.com/science/article/pii/S1077314207001555
    附个SURF算法讲解的子:
    https://www.52ml.net/2709.html

  3. ORB算法
    这个算法是由Ethan Rublee,Vincent Rabaud,Kurt Konolige以及Gary R.Bradski在2011年一篇名为“ORB:An Efficient Alternative to SIFT or SURF”的文章中提出。
    原文下载地址:
    http://ieeexplore.ieee.org/document/6126544/?reload=true&arnumber=6126544
    附个ORB算法讲解的帖子:
    http://www.cnblogs.com/ronny/p/4083537.html

  4. 三种特征点
    1)尺度、旋转不变性(ORB算法在尺度方面效果较差);
    2)ORB较快,SURF运行速度大约为SIFT的3倍,ORB是sift的100倍,是surf的10倍。(这里摘录网上看到的,,具体视具体的数据);
    3)SURF的鲁棒性较好
    具体的三种性能比较可见这篇文章:
    (1)多种角度比较SIFT、SURF、BRISK、ORB、FREAK算法
    (2)http://blog.jobbole.com/83919/

  5. 衡量指标与改进方向
    一般用于图像匹配或者配置及拼接时:常有以下衡量指标
    检测关键点,检测时间,匹配点对数,匹配时间;误匹配点对;主观效果。
    改进方向:
    特征点提取:对上述三种算法的特征点提取及描述方面加以某种改进。
    匹配:通常在匹配时有kd树搜素、双向匹配;在视频中可在首帧进行匹配求得变换矩阵,在首帧之后的k帧一直采用上述变换矩阵。RANSAC算法剔除误匹配点。

效果图:

简单使用:

这里写图片描述

这里写图片描述

匹配效果:

第一组:

SIFT:

SIFT

SURF:

SURF

ORB:

ORB

第二组:

SIFT:

SIFT:

SURF:

SURF:

ORB:

ORB:

随机测试:

随机测试
在提取特征点后,只利用opencv自带的BruteForceMatcher进行特征点的匹配且未进行误匹配点的剔除的情况下。匹配结果在两幅根本不关联的图像也会匹配出较多的匹配点。所有,利用上述三种算法进行特征点提取后,要在匹配中进行改进。改进版的下次再写。

1 0
原创粉丝点击