机器视觉实验一报告角点检测和摄像机标定..docx

机器视觉实验一报告角点检测和摄像机标定..docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
机器视觉实验一报告角点检测和摄像机标定.

实验一报告 角点检测和摄像机标定一、实验目的掌握Hariss角点检测的基本原理和步骤。了解摄像机标定的基本原理和常用方法。复习VB、VC的基本概念、基本语法和编程方法,并熟练使用VB或VC编写遗传算法程序。二、实验设备微机三、实验原理角点是特征点最重要的一种表现形式。对角点提取的越准确,越有助于对图像的理解和分析,同时它对于确定场景中的物体乃至于立体视觉图像配准都有很重要的作用。在角点检测过程中,给定一个小的滑动窗口,分析可知有三种情况:1)平滑区域:无论窗口如何移动,图像强度无显著变化。2)边缘区域:沿边缘方向灰度值无明显变化。3)兴趣点区域:无论朝哪个方向移动,均会产生灰度值的巨大变化。传统的Harris角点检测算法的主要步骤可描述如下:采用Sobel算子计算梯度图像:Ix,Iy。逐点计算乘积图像: Ix2,Iy2,IxIy。用高斯窗w(x, y)对乘积图像中的所有像素点进行卷积。 (1)对每个像素点,计算得到矩阵C,并对矩阵C进行特征值分解,得到两个特征值1,2。 (2)对每个像素点,计算区域判别准则值R (3)式中,k一般取值0.06。通过判断R值的大小,检测角点。判断标准如下:如果是平滑区域,|R|很小;如果是边缘区域,R0;如果是兴趣点区域,R0。四、预习要求认真阅读教材中Harris角点检测的基本原理与步骤。复习VB、VC的基本概念、基本语法和编程方法。五、实验内容及步骤基本要求:(每位同学必须完成)上机编写程序,解决Harris角点检测问题,调试程序。根据实验结果,撰写实验报告。提高要求:在角点检测基础上,完成摄像机的标定,标定方法不限。六、Harris角点检测的代码实现harris类1.#ifndef HARRIS_H2.#define HARRIS_H3.#include opencv2/opencv.hpp4. 5.class harris 6.{ 7.private: 8. cv::Mat cornerStrength; //opencv harris函数检测结果,也就是每个像素的角点响应函数值 9. cv::Mat cornerTh; //cornerStrength阈值化的结果 10. cv::Mat localMax; //局部最大值结果 11. int neighbourhood; //邻域窗口大小 12. int aperture;//sobel边缘检测窗口大小(sobel获取各像素点x,y方向的灰度导数) 13. double k; 14. double maxStrength;//角点响应函数最大值 15. double threshold;//阈值除去响应小的值 16. int nonMaxSize;//这里采用默认的3,就是最大值抑制的邻域窗口大小 17. cv::Mat kernel;//最大值抑制的核,这里也就是膨胀用到的核 18.public: 19. harris():neighbourhood(3),aperture(3),k(0.01),maxStrength(0.0),threshold(0.01),nonMaxSize(3){ 20. 21. }; 22. 23. void setLocalMaxWindowsize(int nonMaxSize){ 24. this-nonMaxSize = nonMaxSize; 25. }; 26. 27. //计算角点响应函数以及非最大值抑制 28. void detect(const cv::Mat image){ 29. //opencv自带的角点响应函数计算函数 30. cv::cornerHarris (image,cornerStrength,neighbourhood,aperture,k); 31. double minStrength; 32. //计算最大最小响应值 33. cv::minMaxLoc (cornerStrength,minStrength,maxStrength); 34. 35. cv::Mat dilated; 36. //默认3*3核膨胀,膨胀之后,除了局部最大值点和原来相同,其它非局部最大值点被 37. //3*3邻域内的最大值点取代 38. cv::dilate (cornerStrength,dilated,cv::Mat()); 39. //与原图相比,只剩下和原图值相同的点,这些点都是局部最大值点,保存到localMax40. cv::compare(cornerStrength,dilated,localMax,cv::CMP_EQ); 41. } 42. 43. //获取角点图 44. cv::Mat getCornerMap(dou

您可能关注的文档

文档评论(0)

wuyuetian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档