了解了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特征的更多相关文章

  1. 基于SURF特征的目标检测

    转战matlab了.步骤说一下: 目标图obj 含目标的场景图scene 载入图像 分别检测SURF特征点 分别提取SURF描述子,即特征向量 用两个特征相互匹配 利用匹配结果计算两者之间的trans ...

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

    基于SURF特征的图像与视频拼接技术的研究和实现(一)      一直有计划研究实时图像拼接,但是直到最近拜读西电2013年张亚娟的<基于SURF特征的图像与视频拼接技术的研究和实现>,条 ...

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

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/33320997 作者:毛星云(浅墨)  ...

  4. surf特征点检测

    ※注:参数SURF中的hessian阈值是图像Hessian矩阵判别式的阈值,值越大检测出的特征点就越少,也就意味着特征点越稳定 #include "opencv2/core/core.hp ...

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

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/30974513 作者:毛星云(浅墨)  ...

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

    opencv实现surf特征的提取.本来是一个非常easy的代码,结果我执行时却出现了各种错误,以下来谈谈我出现的错误及问题的解决过程. 首先,我把提取surf特征的过程整合成了一个函数,我单独建立一 ...

  7. OpenCV-Python sift/surf特征匹配与显示

    import cv2 import numpy as np def drawMatchesKnn_cv2(img1_gray,kp1,img2_gray,kp2,goodMatch): h1, w1 ...

  8. Opencv中使用Surf特征实现图像配准及对透视变换矩阵H的平移修正

    图像配准需要将一张测试图片按照第二张基准图片的尺寸.角度等形态信息进行透视(仿射)变换匹配,本例通过Surf特征的定位和匹配实现图像配准. 配准流程: 1. 提取两幅图像的Surf特征 2. 对Sur ...

  9. opencv::SURF特征

    SURF特征基本介绍 SURF(Speeded Up Robust Features)特征关键特性: -特征检测 -尺度空间 -选择不变性 -特征向量 工作原理 . 选择图像中POI(Points o ...

随机推荐

  1. [php基础]PHP.INI配置:文件上传功能配置教程

    昨天分享了在PHP网站开发中如何在php.ini中配置实现session功能的PHP教程,今天继续分享在利用PHP实现文件上传功能时几点关键php.ini的配置. 说到在php.ini中的文件上传的配 ...

  2. 获取subview

    通常我们在view层级里面对subView的操作可以通过两种方式:1.保留一个subview的引用,然后在类中通过该引用对该subview进行操作,但是要注意在适当的位置添加内存维护的代码,退出前手动 ...

  3. Swift - 41 - swift1.2新特性(1)

    更简洁的if-let import UIKit func attack(name: String, enemyName: String, weapon: String) { print("\ ...

  4. 武汉科技大学ACM :1006: 华科版C语言程序设计教程(第二版)习题7.15

    Problem Description 输入n个字符串(n<=100),输出其中最长的串,如果有多个则取最先找到的那一个. Input 多组测试数据. 每组测试数据第一行包含一个整数n,表示一共 ...

  5. PHP文章管理(2)

    ##############index.php######################  <?session_start();  require"./inc/func.php&qu ...

  6. 字符串匹配算法之Sunday算法

    字符串匹配查找算法中,最着名的两个是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore).两个算法在最坏情况下均具有线性的查找时间.但是在实用上,KMP算法并不比最简 ...

  7. 文成小盆友python-num12 Redis发布与订阅补充,python操作rabbitMQ

    本篇主要内容: redis发布与订阅补充 python操作rabbitMQ 一,redis 发布与订阅补充 如下一个简单的监控模型,通过这个模式所有的收听者都能收听到一份数据. 用代码来实现一个red ...

  8. Web开发-各状态码的意思

    常见的HTTP 1.1状态码以及它们对应的状态信息和含义 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分.(HTTP 1.1新) 101 Switching Protoc ...

  9. Qt on Android

    Qt on Android Episode 7(翻译) http://blog.csdn.net/foruok/article/details/46323129 Android基础整理之四大组件Act ...

  10. 基本排序算法:Python实现

    基本排序算法,包括冒泡排序,插入排序,选择排序,堆排序,快速排序等. [冒泡排序] 复杂度是n*n #coding:utf8 #author:HaxtraZ #description:冒泡排序 def ...