Corners检测「建议收藏」

Corners检测「建议收藏」HarrisCorners角点检测使用harriscorners检测器:使用OpenCV函数voidcornerHarris(InputArraysrc,OutputArraydst,intblockSize,                intksize,doublek,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1、Harris Corners角点检测

使用harris corners检测器:

使用OpenCV函数

void cornerHarris( InputArray src, OutputArray dst, int blockSize,
                                int ksize, double k,
                                int borderType=BORDER_DEFAULT );

参数:

blockSize:感兴趣点周围邻居矩阵大小

ksize:孔径大小与sobel方法中的参数一样

k:计算像素点强度值的系数

dst:存放各个像素点的average intensity change值,越大说明越有可能是角点

average internsity change的计算方法:

参考:1、《OpenCV CookBook》P199

         2、http://blog.csdn.net/crzy_sparrow/article/details/7391511

在《OpenCV CookBook》中对Harris Corners检测器稍稍做了改善,加入了非极大值抑制,也即不但感兴趣点的average internsity change要满足大于threshold,也要是局部极大值

部分代码如下:

	void detect(cv::Mat image)
	{
		cv::cornerHarris(image , cornersStrength ,
			ksize , aperture , k) ;
	}

	cv::Mat  getCornersMap(double threshold)
	{
		double minStrength ;
		cv::minMaxLoc(cornersStrength , &minStrength , &maxStrength) ;
		cv::Mat dilate ;
		cv::dilate(cornersStrength , dilate , cv::Mat()) ;//dilate后只有局部极大值没有改变

		cv::compare(cornersStrength , dilate , localMax , cv::CMP_EQ) ;//因局部极大值未变,所以只有局部极大值出为1
		threshold = threshold * maxStrength ;

		cv::threshold(cornersStrength , cornersMap , threshold , 255 , cv::THRESH_BINARY) ;//强度值满足>threshold
		cornersMap.convertTo(cornersMap , CV_8U) ;
		cv::bitwise_and(cornersMap , localMax , cornersMap) ;//结合得到满足两个条件的点定义为角点
		return cornersMap ;
	}

	void drawImage(cv::Mat &image)
	{
		std::vector<cv::Point> points ;
		for(int i = 0 ; i < cornersMap.rows ; ++ i)
		{
			const uchar * ptr = cornersMap.ptr(i) ;
			for(int j = 0 ; j < cornersMap.cols ; ++ j)
			{
				if(ptr[j])
				{
					points.push_back(cv::Point(j , i)) ;//注意顺序是先X坐标 ,再Y坐标
				}
			}
		}
		std::vector<cv::Point>::const_iterator itc = points.begin() ;
		while (points.end() != itc)
		{
			cv::circle(image , *itc , 3 , cv::Scalar(255) , 2) ;
			itc ++ ;
		}
	}

Jetbrains全家桶1年46,售后保障稳定

2、FAST(Features from Accelerated Segment Test)  Feature 

思想:给定候选像素点,指定半径,若圆上连续的超过圆周长3/4的像素点的比候选的中间点明亮或者暗淡,则认为候选点是一个keyPoint,可以使用一个快速判断的技巧:我们先预判断中心点上下左右四个点,它们中至少要有三个符合以上条件才有可能是keyPoint,我们可以先使用这个方法先预判一下。

代码:

	cv::Mat image =  cv::imread ("D:/Development/OpenCV/images/church01.jpg"  , 0);

	std::vector<cv::KeyPoint> keyPoints ;
	cv::FastFeatureDetector FastFD(40) ;
	FastFD.detect(image , keyPoints) ;
	cv::Mat timage = cv::imread ("D:/Development/OpenCV/images/church01.jpg") ;
	cv::drawKeypoints(image , keyPoints , timage , 
		cv::Scalar(-1 , -1 , -1) , cv::DrawMatchesFlags::DRAW_OVER_OUTIMG) ;

因其快速性常常用在视觉追踪中

参考:http://blog.csdn.net/skeeee/article/details/9405531

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200801.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 爱的思念与牵挂_惦记牵挂短语

    爱的思念与牵挂_惦记牵挂短语爱和喜欢是同等的,由喜欢到真诚,由真诚到爱,是一个即复杂又简单的过程;说复杂,爱又是简单的;说简单,爱又是真诚,思念,挂念的综合;我挂念她;挂念她的一切;她心情不好了;我挂念她是否生意上有什么难处;她心情不好了;我挂念她是否又遇到什么烦心的事,我挂念她的身体,她经常头疼;是不是有因为什么事烦了她;是不是有什么人无谓的惹她生气;我让她好好休息,我祈祷一切烦恼远离她;我知道她心很软;知道她心很善良;知

    2022年9月20日
    2
  • 图片批量重命名的2种好方法有哪些_怎么给手机图片重命名

    图片批量重命名的2种好方法有哪些_怎么给手机图片重命名第一种,使用CTRL+A(全选)快捷键或者按CTRL键使用鼠标选中部分图片按F2(重命名快捷键)或者鼠标右键→重命名重命名只有一个图片出现编辑框,编辑完成回车就可以了。第二种,使用pptX文档更改。格式为(image1.jpeg,image2.jpeg,image3.jpeg……)新建ppt文档点击插入→图片pptX!pptX!pptX!我试了ppt文档压缩后不能打开找到图片所在的路径,全选图片后点击打开,保存文档…

    2025年9月15日
    7
  • Numpy学习笔记二——初始化数组的10种方法

    Numpy学习笔记二——初始化数组的10种方法importnumpyasnp#创建一个长度为10的数组,数组的值都是0np.zeros(10,dtype=int)#创建一个3×5的浮点型数组,数组的值都是1np.ones((3,5),dtype=float)#创建一个3×5的浮点型数组,数组的值都是3.14np.full((3,5),3.14)#创建一个3×5的浮点型数组,数组的值是一个线性序列#从o开始,到20结束,步…

    2022年10月20日
    2
  • python自测100题「建议收藏」

    python自测100题「建议收藏」如果你在寻找python工作,那你的面试可能会涉及Python相关的问题。通过对网络资料的收集整理,本文列出了100道python的面试题以及答案,你可以根据需求阅读测试。python基础Q1.什么是Python?Python是一种面向对象的,交互式的,解释型的计算机程序设计语言。Python的设计具有高可读性,它使用英语关键词而非标点符号,语法结构也比其他语言简单。Q2.Py…

    2022年6月8日
    36
  • 小米手机-解BL锁+开ROOT权限

    小米手机-解BL锁+开ROOT权限在小米社区和网址https://miuiver.com/上,有MIUI的历史版本,还有刷机教程等等本文是参考上述的教程,并结合自己在刷机过程中,出现的问题进行记录并得到解决方案下面主要是,重要部分,同时还有一些容易出错的地方解BL锁要提前,在设置–更多设置–开发者模式–设备解锁状态中,绑定账号和设备,注意的地方,不要重复绑定设备,不然时间会重新计算的,吃亏了2次。只要登陆过一个小米账号,点击绑定一次即可。如果没有找到开发者模式,就先设置–我的设备–全部参数–.

    2022年6月10日
    73
  • jupyter的代码能用pycharm运行吗_pycharm project interpreter

    jupyter的代码能用pycharm运行吗_pycharm project interpreter最近在学CS231n的课程,打算把作业做一下。由于…

    2022年8月29日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号