- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计指导教师评语
成 绩:___________
指导教师签字:___________
目 录
目 录 3
1 选题背景及需求简介 4
2 总体设计 4
2.1系统功能组成 4
2.2开发工具 4
3 详细设计 5
3.1载入原始图片 5
3.2使用SURF算子检测关键点 5
3.3调用detect函数检测出SURF特征关键点,保存在vector容器中 5
3.4计算描述符(特征向量) 5
3.5使用FLANN匹配算子进行匹配 5
3.6计算出关键点之间距离的最大值和最小值 6
3.7存下匹配距离小于3*min_dist的点对 6
3.8绘制出匹配到的关键点 6
3.9显示最终结果 7
4 程序运行 7
4.1官方图像对 7
4.2个人图像对 7
5 参考资料 8
基于FLANN特征匹配寻找已知物体
1 选题背景及需求简介
计算机视觉是一个近几年来日趋成熟的领域。随着运算性能强劲而又价格实惠的计算设备的不断问世,创建复杂的图像应用从未像今天这般容易。OpenCV在计算机视觉领域扮演着重要的角色,它是一个基于开源发行的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。
特征点的检测和匹配是计算机视觉中非常重要的技术之一,在物体检测、视觉跟踪、三维重建等领域都有很广泛的应用。
程序部分在设计和开发阶段用到了很多网上的相关文献和资源,在本次设计中采用Microsoft Visual Studio2012版本和OpenCV2.4.9作为开发工具。
由于时间有限,代码部分分阶段开发,本次开发为第一阶段,主要实现了利用SURF检测器检测关键点、计算特征向量和采用FLANN算法匹配描述符向量。匹配准确率与时间效率等方面为第二阶段设计,在此不做介绍。
2 总体设计
2.1系统功能组成
在FLANN特征匹配的基础上,利用Homography映射找出已知物体。利用findHomography函数通过匹配的关键点找出相应的变换,再利用perspectiveTransform函数映射点群。
也就是分为以下两个步骤:
(1)使用findHomography寻找匹配上的关键点的变换。
(2)使用perspectiveTransform来映射点。
2.2开发工具
Microsoft Visual Studio 2012
OpenCV 2.4.9
3 详细设计
3.1载入原始图片
Mat srcImage1 = imread( view11.bmp, 1 );
Mat srcImage2 = imread( view15.bmp, 1 );
3.2使用SURF算子检测关键点
int minHessian = 400;//SURF算法中的hessian阈值
SurfFeatureDetector detector( minHessian );//定义一个SurfFeatureDetector(SURF) 特征检测类对象
vectorKeyPoint keypoints_object, keypoints_scene;//vector模板类,存放任意类型的动态数组
3.3调用detect函数检测出SURF特征关键点,保存在vector容器中
detector.detect( srcImage1, keypoints_object );
detector.detect( srcImage2, keypoints_scene );
3.4计算描述符(特征向量)
SurfDescriptorExtractor extractor;
Mat descriptors_object, descriptors_scene;
pute( srcImage1, keypoints_object, descriptors_object );
pute( srcImage2, keypoints_scene, descriptors_scene );
3.5使用FLANN匹配算子进行匹配
FlannBasedMatcher matcher;
vector DMatch matches;
matcher.match( descriptors_object, descriptors_scene, matches );
double max_dist = 0; double min_dist =
文档评论(0)