SURF特征

了解了SIFT特征后,来学习SURF特征。

虽说是SIFT的一个变种,可是跟SIFT还是有差别的

差别有例如以下:

1.尺度空间的构建(近似)不同。

2.同意尺度空间多层图像同一时候被处理

3.特征点主方向确定採用haar小波特征统计方法。

4.特征点描写叙述子採用haar小波特征。

接下来贴个SURF匹配代码:

// Load image from file
	IplImage *pLeftImage = cvLoadImage("1.jpg", CV_LOAD_IMAGE_GRAYSCALE);
	IplImage *pRightImage = cvLoadImage("2.jpg", CV_LOAD_IMAGE_GRAYSCALE);

	// Convert IplImage to cv::Mat
	Mat matLeftImage = Mat(pLeftImage, false); //
	Mat matRightImage = Mat(pRightImage, false);

	// Key point and its descriptor
	vector<KeyPoint> LeftKey;
	vector<KeyPoint> RightKey;
	Mat LeftDescriptor;
	Mat RightDescriptor;
	vector<DMatch> Matches;

	// Detect key points from image
	FeatureDetector *pDetector = new SurfFeatureDetector; // 这里我们用了SURF特征点
	pDetector->detect(matLeftImage, LeftKey);
	pDetector->detect(matRightImage, RightKey);
	//	delete pDetector;

	// Extract descriptors
	DescriptorExtractor *pExtractor = new SurfDescriptorExtractor; // 提取SURF描写叙述向量
	pExtractor->compute(matLeftImage, LeftKey, LeftDescriptor);
	pExtractor->compute(matRightImage, RightKey, RightDescriptor);
	//delete pExtractor;

	// Matching features
	DescriptorMatcher *pMatcher = new FlannBasedMatcher; // 使用Flann匹配算法
	pMatcher->match(LeftDescriptor, RightDescriptor, Matches);
	//delete pMatcher;

	// Show result
	Mat OutImage;
	drawMatches(matLeftImage, LeftKey, matRightImage, RightKey, Matches, OutImage);
	cvNamedWindow( "SURF Match features", 1);
	cvShowImage("SURF Match features", &(IplImage(OutImage)));
	cvWaitKey( 0 );
	cvDestroyWindow( "SURF Match features" );
	return 0;

调试一下:

两幅图像分别生成SURF特征描写叙述子。

当然也可看到当中的值。

做这个也仅仅是想表达一下 ,OpenCV结合VS能够做到跟MATLAB一样的效果。。。。

SURF学习相关链接:

http://blog.csdn.net/andkobe/article/details/5778739

http://blog.csdn.net/crzy_sparrow/article/details/7392345

http://www2.ulg.ac.be/telecom/research/vibe/download.html

SURF特征,布布扣,bubuko.com

时间: 2025-01-08 12:56:42

SURF特征的相关文章

【OpenCV入门教程之十七】OpenCV重映射 &amp; SURF特征点检测合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/30974513 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 本篇文章中,我们一起探讨了OpenCV中

opencv提取surf特征点出现的错误

opencv实现surf特征的提取.本来是一个非常easy的代码,结果我执行时却出现了各种错误,以下来谈谈我出现的错误及问题的解决过程. 首先,我把提取surf特征的过程整合成了一个函数,我单独建立一个project读取两张图片,然后调用这个surf提取的函数时时不管是debug还是release模式下都是没有问题的.当我把这个函数加入到我如今已有的project代码里面的时候出现了各种奇葩错误.以下是我surf特征提取的函数 void surfdetect(IplImage *image1,I

【OpenCV新手教程之十八】OpenCV仿射变换 &amp;amp; SURF特征点描写叙述合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/33320997 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本号: 2.4.9 本篇文章中.我们一起探讨了OpenCV

【OpenCV入门教程之十八】OpenCV仿射变换 &amp; SURF特征点描述合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/33320997 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 本篇文章中,我们一起探讨了OpenCV中

【OpenCV新手教程之十七】OpenCV重映射 &amp;amp; SURF特征点检測合辑

本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/30974513 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本号: 2.4.9 本篇文章中,我们一起探讨了OpenCV

OpenCV仿射变换 &amp; SURF特征点描述合辑

OpenCV仿射变换 & SURF特征点描述合辑 转载地址:http://blog.csdn.net/poem_qianmo/article/details/33320997?utm_source=tuicool&utm_medium=referral

[blog]基于SURF特征的图像与视频拼接技术的研究和实现(一)

基于SURF特征的图像与视频拼接技术的研究和实现(一) 一直有计划研究实时图像拼接,但是直到最近拜读西电2013年张亚娟的<基于SURF特征的图像与视频拼接技术的研究和实现>,条理清晰.内容完整.实现的技术具有市场价值.因此定下决心以这篇论文为基础脉络,结合实际情况,进行“基于SURF特征的图像与视频拼接技术的研究和实现”. 一.基于opencv的surf实现 3.0以后,surf被分到了"opencv_contrib-master"中去,操作起来不习惯,这里仍然选择一直在

surf特征点keypoint转化成mat类型或存储起来的办法

surf特征点keypoint转化成mat类型或存储起来的办法 std::vector<cv::KeyPoint> keypoints; std::vector<cv::Point2f> points; std::vector<cv::KeyPoint>::iterator it; for( it= keypoints.begin(); it!= keypoints.end();it++) { points.push_back(it->pt); } cv::Mat

【opencv入门】重映射 &amp; SURF特征点检测合辑

一.OpenCV重映射 1.重映射的概念简析 重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程.为了完成映射过程, 我们需要获得一些插值为非整数像素的坐标,因为源图像与目标图像的像素坐标不是一一对应的.一般情况下,我们通过重映射来表达每个像素的位置 (x,y),像这样 : g(x,y) = f ( h(x,y) ) 在这里, g() 是目标图像, f() 是源图像, 而h(x,y) 是作用于 (x,y) 的映射方法函数. 来看个例子.若有一幅图像 I ,想满足下面的条件作重映射