#<opencv2/opencv.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/xfeatures2d/nonfree.hpp>
#include <iostream>//using namespace cv::features2d;
using namespace std;
using namespace cv;
// 计算图像的SIFT特征及匹配
float cacSIFTFeatureAndCompare(cv::Mat srcImage1,cv::Mat srcImage2, float paraHessian)
{CV_Assert(srcImage1.data != NULL && srcImage2.data != NULL);// 转换为灰度cv::Mat grayMat1, grayMat2;cv::cvtColor(srcImage1, grayMat1, CV_RGB2GRAY);cv::cvtColor(srcImage2, grayMat2, CV_RGB2GRAY);// 初始化SIFT检测描述子cv::Ptr<Feature2D> sift = xfeatures2d::SIFT::create();// 关键点及特征描述矩阵声明vector<cv::KeyPoint> keyPoints1, keyPoints2;cv::Mat descriptorMat1, descriptorMat2;sift->detectAndCompute(grayMat1, Mat(), keyPoints1, descriptorMat1);sift->detectAndCompute(grayMat2, Mat(), keyPoints2, descriptorMat2);float result = 0;// 特征点匹配if (keyPoints1.size() > 0 && keyPoints2.size() > 0){// 计算特征匹配点cv::FlannBasedMatcher matcher;vector< cv::DMatch > matches;std::vector<cv::DMatch> viewMatches;matcher.match(descriptorMat1, descriptorMat2, matches);// 最优匹配判断double minDist = 100;for (int i = 0; i < matches.size(); i++){if (matches[i].distance < minDist)minDist = matches[i].distance;}// 计算距离特征符合要求的特征点int num = 0;std::cout << "minDist: " << minDist << std::endl;for (int i = 0; i < matches.size(); i++){// 特征点匹配距离判断if (matches[i].distance <= 2 * minDist){result += matches[i].distance * matches[i].distance;viewMatches.push_back(matches[i]);num++;}}// 匹配度计算result /= num;// 绘制特征点匹配结果cv::Mat matchMat;cv::drawMatches(srcImage1, keyPoints1,srcImage2, keyPoints2, matches, matchMat);cv::imshow("matchMat", matchMat);cv::waitKey(0);}return result;
}
int main()
{// 读取源图像及待匹配图像cv::Mat srcImage1 =cv::imread("Brox_Effect_000012.jpg", 1);if (srcImage1.empty())return -1;cv::Mat srcImage2 =cv::imread("Brox_Effect_000013.jpg", 1);if (srcImage2.empty())return -1;float matchRate = cacSIFTFeatureAndCompare(srcImage1, srcImage2, 1000);std::cout << "matchRate: " << matchRate << std::endl;return 0;
}

转载:http://blog.csdn.net/zhuwei1988

SIFT 特征检测及匹配相关推荐

  1. sift特征检测与匹配

    文章目录 一 实验背景 1.sift算法介绍 1.1sift算法特点 1.2sift算法可以解决的问题 1.3 sift算法实现具体步骤 2.关键点相关概念 2.1关键点(特征点) 2.2尺度空间 3 ...

  2. SIFT特征检测与特征匹配

    在网上的查到的代码大多是基于opencv2.4.9的特征检测算法,由于sift特征检测算法申请了专利,使得到了3.x版本以后需要配置contribe,但是以前的代码也是需要进行相应的转换. 下面的代码 ...

  3. 数字图像处理学习笔记(一):特征检测和匹配概述

    数字图像处理学习笔记(一):特征检测和匹配概述 参考博客: 特征点的匹配 SIFT特征详解 数字图像处理学习笔记(二):SIFT(尺度不变特征变换)算法 1.特征点概述 如何高效且准确的匹配出两个不同 ...

  4. OpenCV图像特征提取学习四,SIFT特征检测算法

    一.SIFT特征检测概述 SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换,由加拿大教授David G.Lowe提出的.SIFT特征具有对旋转.尺度 ...

  5. OpenCV + CPP 系列(卅五)图像特征提取(SURF特征检测、SIFT特征检测)

    文章目录 一.SIFT特征检测 二.SURF特征检测 演示SURF.SIFT特征检测 OpenCV-python 角点特征检测之二(SIFT.SURF.ORB) 一.SIFT特征检测 SIFT(Sca ...

  6. SIFT地理特征匹配

    SIFT算法 1.1 概述 SIFT(Scale-Invariant Feature Transform,尺度不变特征变换),由David G.Lowe提出,是一种计算机视觉的算法.它用来侦测与描述影 ...

  7. OpenCV基础(23)特征检测与匹配

    图像的8x8像素部分被考虑,并将这个 8x8 框进一步划分为 4 个块,每个块为 4x4 维度.在每个 4x4 块内,图像梯度以向量的形式表示.通过搜索最独特或不同的特征在图像中找到关键点.这里,Ke ...

  8. 烟雾环境下对RGB图SIFT特征提取,匹配及深度图有效值的影响

    烟雾环境下对RGB图SIFT特征提取,匹配及深度图有效值的影响 文章目录 烟雾环境下对RGB图SIFT特征提取,匹配及深度图有效值的影响 1 环境配置 1.1 opencv_contrib 1.2 M ...

  9. matlab特征检测,sift特征检测的matlab程序实现

    [实例简介] sift特征检测的matlab程序实现,多个matlab程序,详细注释,外带试验数据 [实例截图] [核心代码] SIFT_Matlab └── SIFT_YantaoNoemie ├─ ...

最新文章

  1. python小项目实例流程-python实现的简单RPG游戏流程实例
  2. 【光斑定位】空间激光通信、光斑定位、CCD、光斑定位——13000字
  3. CodeForces 651B
  4. 去年买彩票中了400多万
  5. java设置绝对布局_浅谈Java绝对布局 原创
  6. activate-power-mode效果实验(未完全成功)
  7. C++笔记----运算符重载
  8. C++STL源码剖析之vector
  9. jquery+baidu map api 仿安居客地图找房源(基于百度地图)
  10. selenium 模拟火狐浏览器
  11. 多目标跟踪(Multi-Object-Tracking)入门
  12. bin code led_一种led颜色BIN划分方法与流程
  13. TCP的四次挥手为什么需要2MSL ?
  14. 汇佳学校|多元艺术+探究式思维 领航国际艺术教育新趋势
  15. 解读常见传感器的CFA排列(彩色滤色矩阵,Color Filter Array)
  16. 知识表示的方法(2)——框架表示法
  17. 扇贝python骗局_北斗揭獐子岛扇贝骗局:27条采捕船数万航行数据还原轨迹
  18. 【vue2】子组件向父组件传参方法汇总
  19. python——常用的数学计算公式
  20. js提取JSON数据中需要的那部分数据

热门文章

  1. 如何理解分时系统的四个特征
  2. linux制作共享服务器,Linux如何制作一个简单的共享服务器
  3. 如何启用SQL Server 2008的FILESTREAM特性
  4. 专访小邪:从十年技术之路看阿里技术体系的变革
  5. Mybatis遍历查询 ——foreach
  6. 跟阿里云技术专家阙寒一起深度了解视频直播CDN技术
  7. SAP QM 'QM System' 有什么控制作用?
  8. 2月国内搜索市场:360继续上升 百度下降0.62%
  9. Ext Scheduler Web资源甘特图控件
  10. JAVA String之contains方法使用