OpenCV4特征匹配

目录

一.特征检测的基本概念

OpenCV特征的场景

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

特征点匹配 就是在不同的图像中寻找同一个物体的同一个特征点。因为每个特征点都具有标志着唯一身份和特点的描述子,因此特征点匹配其实就是在两个图像中寻找具有相似描述子的两个特征点。根据描述子特点的不同,寻找两个相似描述子的方法也不尽相同,总体上可以总结为两类:

第一类是计算两个描述子之间的欧氏距离,这种匹配方式的特征点有SIFT特征点、SURF特征点等;

第二类是计算两个描述子之间的汉明距离,这种匹配方式的特征点有ORB特征点、BRJSK特征点等。

角点

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

二.Harris角点检测

Harris角点检测API

python 复制代码
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.由于它使用的是邻近近似值,所以精度较差

流程梳理

相关推荐
R-G-B2 小时前
OpenCV Python——报错AttributeError: module ‘cv2‘ has no attribute ‘bgsegm‘,解决办法
人工智能·python·opencv·opencv python·attributeerror·module ‘cv2‘·no attribute
似乎很简单5 小时前
【opencv-Python学习笔记(5):几何变换】
笔记·opencv·学习
荼蘼9 小时前
OpenCv(二)——边界填充、阈值处理
人工智能·opencv·计算机视觉
蜀中廖化18 小时前
机器学习:基于OpenCV和Python的智能图像处理 实战
python·opencv·机器学习
R-G-B20 小时前
【P27 4-8】OpenCV Python——Mat类、深拷贝(clone、copyTo、copy)、浅拷贝,原理讲解与示例代码
人工智能·python·opencv·浅拷贝·深拷贝·opencv python·mat类
星期天要睡觉1 天前
计算机视觉(opencv)实战三——图像运算、cv2.add()、cv2.addWeighted()
人工智能·opencv·计算机视觉
rhythmcc1 天前
【visual studio】visual studio配置环境opencv和onnxruntime
c++·人工智能·opencv
WeiJingYu.1 天前
计算机视觉Open-CV
人工智能·opencv·计算机视觉
小关会打代码1 天前
计算机视觉第一课opencv(二)保姆级教
人工智能·opencv·计算机视觉
猫头虎1 天前
用 Python 写你的第一个爬虫:小白也能轻松搞定数据抓取(超详细包含最新所有Python爬虫库的教程)
爬虫·python·opencv·scrapy·beautifulsoup·numpy·scipy