Opencv下利用SIFT、SURF、ORB三种特征点实现图像匹配
Opencv下利用SIFT、SURF、ORB三种特征点实现图像匹配
视频项目中要用到拼接,这里记录一下SIFT、SURF、ORB三种特征点。 本文不做过多的理论解释,只是利用opencv简单实现三种特征点匹配算法的验证(改进的部分暂未上传)。
新的下载地址:环境: Windows下vs2010,opev2.4.9; 代码release下编译,工程release下的exe可以直接运行;编译工程需要配置opencv,见: 注意: 工程具体添加以下lib(release下的dll与以下的lib是对应的): opencv_core249.lib opencv_highgui249.lib opencv_imgproc249.lib opencv_features2d249.lib opencv_nonfree249.lib opencv_legacy249.lib
- 三种特征点 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/
- 衡量指标与改进方向 一般用于图像匹配或者配置及拼接时:常有以下衡量指标: 检测关键点,检测时间,匹配点对数,匹配时间;误匹配点对;主观效果。 改进方向: 特征点提取:对上述三种算法的特征点提取及描述方面加以某种改进。 匹配:通常在匹配时有kd树搜素、双向匹配;在视频中可在首帧进行匹配求得变换矩阵,在首帧之后的k帧一直采用上述变换矩阵。RANSAC算法剔除误匹配点。
简单使用:
匹配效果:
第一组:
SIFT:
SURF:
ORB:
第二组:
在提取特征点后,只利用opencv自带的BruteForceMatcher进行特征点的匹配且未进行误匹配点的剔除的情况下。匹配结果在两幅根本不关联的图像也会匹配出较多的匹配点。所有,利用上述三种算法进行特征点提取后,要在匹配中进行改进。改进版的下次再写。