目录
一.特征检测的基本概念
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.由于它使用的是邻近近似值,所以精度较差