1. SIFT特征检测介绍 SIFT(Scale-Invariant Feature Transform)特征检测关键特性:
  2. -建立尺度空间,寻找极值
  3. -关键点定位(寻找关键点准确位置与删除弱边缘)
  4. -关键点方向指定
  5. -关键点描述子
  1. 关键点定位
  2. 我们在像素级别获得了极值点的位置,但是更准确的 值应该在亚像素位置,如何得到 这个过程称为关键 点(准确/精准)定位
  3. 删除弱边缘- 通过Hassian 矩阵特征值实现,小于阈值 自动舍
  1. 建立尺度空间,寻找极值。工作原理
  2. . 构建图像高斯金字塔,求取DOG,发现最大与最小值在每一级
  3. . 构建的高斯金字塔,每一层根据sigma的值不同,可以分为几个等级,最少有4 个。
  1. 关键点定位
    在像素级别获得了极值点的位置,但是更准确的 值应该在亚像素位置,如何得到 这个过程称为关键 点(准确/精准)定位。
  2. 删除弱边缘- 通过Hassian 矩阵特征值实现,小于阈值 自动舍
  1. 关键点方向指定
  2. 求得每一层对应图像的梯度,根据给定的窗口大小
  3. 计算每个高斯权重,sigma=scalex1., ~360之间建立 36个直方图Bins
  4. 找最高峰对应的Bin 大于max*% 的都保留 。这样就实现了旋转不变性,提高了匹配时候的稳定性。
  5. 大约有15%的关键点会有多个方向。
  1. 关键点描述子
  2. 拟合多项式插值寻找最大Peak
  3. 得到描述子 = 4x4x8=
  1. cv::xfeatures2d::SIFT::create(
      int nfeature=,
      int nOctaveLayers=,
      double contrastThreshold=0.04,
      double edgeThreshold=,
      double sigma=1.6
    )
  1. #include <opencv2/opencv.hpp>
  2. #include <opencv2/xfeatures2d.hpp>
  3. #include <iostream>
  4.  
  5. using namespace cv;
  6. using namespace std;
  7. using namespace cv::xfeatures2d;
  8.  
  9. int main(int argc, char** argv) {
  10. Mat src = imread("D:/vcprojects/images/test.png", IMREAD_GRAYSCALE);
  11. if (src.empty()) {
  12. printf("could not load image...\n");
  13. return -;
  14. }
  15. namedWindow("input image", CV_WINDOW_AUTOSIZE);
  16. imshow("input image", src);
  17.  
  18. int numFeatures = ;
  19. Ptr<SIFT> detector = SIFT::create(numFeatures);
  20. vector<KeyPoint> keypoints;
  21. detector->detect(src, keypoints, Mat());
  22. printf("Total KeyPoints : %d\n", keypoints.size());
  23.  
  24. Mat keypoint_img;
      //绘制
  25. drawKeypoints(src, keypoints, keypoint_img, Scalar::all(-), DrawMatchesFlags::DEFAULT);
  26. namedWindow("SIFT KeyPoints", CV_WINDOW_AUTOSIZE);
  27. imshow("SIFT KeyPoints", keypoint_img);
  28.  
  29. waitKey();
  30. return ;
  31. }

opencv::sift特征提取的更多相关文章

  1. 3. opencv进行SIFT特征提取

    opencv中sift特征提取的步骤 使用SiftFeatureDetector的detect方法检测特征存入一个向量里,并使用drawKeypoints在图中标识出来 SiftDescriptorE ...

  2. VS2010+Opencv+SIFT以及出现的问题-关于代码sift_3_c的说明

    http://blog.sina.com.cn/s/blog_a6b913e30101dvrt.html 一.前提 安装Opencv,因该版本的SIFT是基于Opencv的. 下载SIFT源码,见Ro ...

  3. [转]SIFT特征提取分析

    SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图中的特征点(interest points,or corner points) ...

  4. SIFT特征提取分析

    SIFT特征提取分析 sift 关键点,关键点检测 读'D. G. Lowe. Distinctive Image Features from Scale-Invariant Keypoints[J] ...

  5. Opencv Sift算子特征提取与匹配

    SIFT算法的过程实质是在不同尺度空间上查找特征点(关键点),用128维方向向量的方式对特征点进行描述,最后通过对比描述向量实现目标匹配. 概括起来主要有三大步骤: 1.提取关键点: 2.对关键点附加 ...

  6. SIFT特征提取分析(转载)

    转载自: http://blog.csdn.net/abcjennifer/article/details/7639681 SIFT(Scale-invariant feature transform ...

  7. 学习OpenCV——BOW特征提取函数(特征点篇)

    没日没夜的改论文生活终于要告一段落了,比起改论文,学OpenCV就是一件幸福的事情.OpenCV的发展越来越完善了,已经可以直接使用BOW函数来进行对象分类了. 简单的通过特征点分类的方法:     ...

  8. SIFT 特征提取算法总结

    原文链接:http://www.cnblogs.com/cfantaisie/archive/2011/06/14/2080917.html   主要步骤 1).尺度空间的生成: 2).检测尺度空间极 ...

  9. 在vs环境中跑动sift特征提取(代码部分)

    因为在前两天的学习中发现.在opencv环境中跑动sift特征点提取还是比较困难的. 所以在此,进行记述. 遇到的问题分别有,csdn不愿意花费积分.配置gtk困难.教程海量然而能跑者鲜.描述不详尽等 ...

随机推荐

  1. 开源导入导出通用库Magicodes.ExporterAndImporter发布

    导入导出通用库 Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库,并且仍在跟随项目不断地打磨. GitHub地址: https://github.com/xin ...

  2. Stanford公开课《编译原理》学习笔记(1~4课)

    目录 一. 编译的基本流程 二. Lexical Analysis(词法分析阶段) 2.1 Lexical Specification(分词原则) 2.2 Finite Automata (典型分词算 ...

  3. Nginx正确配置Location

    文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 之前已经讲过Nginx的基本配置,本篇文章主要对Nginx中Location指令的作用进行介绍.本篇文章主要对 ...

  4. Java 自定义注解 校验指定字段对应数据库内容重复

    一.前言 在项目中,某些情景下我们需要验证编码是否重复,账号是否重复,身份证号是否重复等... 而像验证这类代码如下: 那么有没有办法可以解决这类似的重复代码量呢? 我们可以通过自定义注解校验的方式去 ...

  5. ActiveMQ JMX使用

    一.说明 ActiveMQ使用过程中,可以使用自带的控制台进行相关的操作以及查看,但是当队列数相当多的时候,在查询以及整体的监控上,就可能相当的不便.所以可通过JMX的方式,进行MQ中队列相关指标的以 ...

  6. 写论文与PPT汇报时matlab图片的背景透明处理

    不少同学在使用Word写论文时,将matlab生成的图保存为jpg格式,然后粘贴到文档中.word背景为纯白色,jpg图的缺点没有显示,实际上会存在很大白边,以及放大后不清晰的问题,很影响PPT展示和 ...

  7. Qt for Android开发入门

    1.    Qt for Android环境搭建 1.1    打包需要的工具 1.2   JDK安装 如果之前配置过,就可以跳过这一步. 下载java jdk 64:java jdk 1.8 x64 ...

  8. DefaultSerializer requires a Serializable payload but received an object of type [model.Admin]

    一.问题描述:   在用redis做二级缓存时,出现如下异常   DefaultSerializer requires a Serializable payload but received an o ...

  9. Mac配置环境变量path

    查看当前配置的path有哪些: 1. echo $PATH  当前所有的 2. cat /etc/paths  这个文件是操作系统自带的 mac系统环境变量的加载顺序(优先级): /etc/profi ...

  10. select2 分组后的选项无法被选中

    在使用select2组件的过程中发现分组下的选项无法选中,与分组在同一级的选项可以被选中! 1.所用select2版本select2-4.0.32 2.HTML代码: <input id=&qu ...