OpenCV4特征匹配

2024-08-21 12:28
文章标签 匹配 特征 opencv4

本文主要是介绍OpenCV4特征匹配,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 一.特征检测的基本概念
    • 二.Harris角点检测
    • 三.Shi-Tomasi角点检测
    • 四.SIFT关键点检测
    • 五.SURF特征检测(属于opencv_contrib)
    • 六.ORB特征检测
    • 七.特征匹配方法
    • 八.FLANN特征匹配
  • 流程梳理

一.特征检测的基本概念

OpenCV特征的场景

  • 1.图像搜索,如以图搜图
  • 2.拼图游戏
  • 3.图像拼接,将两张有关联的图拼接到一起

特征点匹配就是在不同的图像中寻找同一个物体的同一个特征点。因为每个特征点都具有标志着唯一身份和特点的描述子,因此特征点匹配其实就是在两个图像中寻找具有相似描述子的两个特征点。根据描述子特点的不同,寻找两个相似描述子的方法也不尽相同,总体上可以总结为两类:
第一类是计算两个描述子之间的欧氏距离,这种匹配方式的特征点有SIFT特征点、SURF特征点等;
第二类是计算两个描述子之间的汉明距离,这种匹配方式的特征点有ORB特征点、BRJSK特征点等。

角点

  • 1.在特征中最重要的是角点
  • 2.灰度梯度的最大值对应的像素
  • 3.两条线的交点

二.Harris角点检测

Harris角点检测API

cornerHarris(img, dst, blockSize, kernel_size, k)
- blockSize: 检测窗口大小
- kernel_size: Sobel的卷积核
- k: 权重系数,经验值,一般取0.02~0.04之间

三.Shi-Tomasi角点检测

  • 1.Shi-Tomasi是Harris角点检测的改进
  • 2.Harris角点检测算法的稳定性和k有关,而k是一个经验值

四.SIFT关键点检测

SIFT(Scale-Invariant Feature Transform)

SIFT出现的原因
虽然Harris角点具有旋转不变的特征,但缩放后,原来的角点有可能就检测不到了

使用SIFT的步骤

  • 1.创建SIFT对象
  • 2.进行检测
  • 3.绘制关键点,drawKeypoints

五.SURF特征检测(属于opencv_contrib)

SURF(Speeded-Up Robust Features)

SIFT最大的问题是速度慢,因此才有了SURF

六.ORB特征检测

ORB(Oriented FAST and Rotated BRIEF)

ORB可以做到实时监测

七.特征匹配方法

模板匹配:模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本、最常用的匹配方法。模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效
特征匹配:所谓特征匹配FBM(Feature-Based Matching),就是指将从影像中提取的特征作为共轭实体,而将所提特征属性或描述参数(实际上是特征的特征,也可以认为是影像的特征)作为匹配实体,通过计算匹配实体之间的相似性测度以实现共轭实体配准的影像匹配方法。在匹配目标发生旋转或大小变化时,该算法依旧有效

  • 1.BF(Brute-Force):暴力特征匹配方法
  • 2.FLANN:最快邻近区特征匹配方法

类似于VisionMaster中的高精度匹配和快速匹配

暴力特征匹配原理
它使用第一组中的每个特征的描述子,与第二组中的所有特征描述子进行匹配,计算它们之间的差距,然后将最接近的一个匹配返回

OpenCV特征匹配步骤

  • 1.创建匹配器:BFMatcher(normType, crossCheck)
  • 2.进行特征匹配:bf.match(des1, des2)
  • 3.绘制匹配点:drawMatches()

八.FLANN特征匹配

FLANN优缺点

  • 1.在进行批量特征匹配时,FLANN速度更快
  • 2.由于它使用的是邻近近似值,所以精度较差

流程梳理

在这里插入图片描述

这篇关于OpenCV4特征匹配的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093154

相关文章

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

hdu 3065 AC自动机 匹配串编号以及出现次数

题意: 仍旧是天朝语题。 Input 第一行,一个整数N(1<=N<=1000),表示病毒特征码的个数。 接下来N行,每行表示一个病毒特征码,特征码字符串长度在1—50之间,并且只包含“英文大写字符”。任意两个病毒特征码,不会完全相同。 在这之后一行,表示“万恶之源”网站源码,源码字符串长度在2000000之内。字符串中字符都是ASCII码可见字符(不包括回车)。

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

POJ 3057 最大二分匹配+bfs + 二分

SampleInput35 5XXDXXX...XD...XX...DXXXXX5 12XXXXXXXXXXXXX..........DX.XXXXXXXXXXX..........XXXXXXXXXXXXX5 5XDXXXX.X.DXX.XXD.X.XXXXDXSampleOutput321impossible

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

二分图的最大匹配——《啊哈!算法》

二分图 如果一个图的所有顶点可以被分为X和Y两个集合,并且所有边的两个顶点恰好一个属于X,另外一个属于Y,即每个集合内的顶点没有边相连,那么此图就是二分图。 二分图在任务调度、工作安排等方面有较多的应用。 判断二分图:首先将任意一个顶点着红色,然后将其相邻的顶点着蓝色,如果按照这样的着色方法可以将全部顶点着色的话,并且相邻的顶点着色不同,那么该图就是二分图。 java

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

JavaScript 根据关键字匹配数组项

要在JavaScript数组中根据关键字匹配项,可以使用filter方法结合一个测试函数。以下是一个示例代码,定义了一个函数findByKeyword,该函数接受一个数组和一个关键字,然后返回一个新数组,其中包含与关键字匹配的所有项。 function findByKeyword(array, keyword) {return array.filter(item => {// 假设要匹配的是对象

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

匹配电子邮件地址的正则表达式

这个正则表达式 QRegularExpression regex(R"((\w+)(\.|_)?(\w+)@(\w+)(\.(\w+))+))"); 用于匹配电子邮件地址的格式。下面是对这个正则表达式的逐步解析和解释: 1. QRegularExpression 构造函数 QRegularExpression regex(R"((\w+)(\.|_)?(\w*)@(\w+)(\.(\w+))+