ORB 特征关键点检测
概述
✔️ ORB - (Oriented Fast and Rotated BRIEF)算法是基于FAST特征检测与BRIEF特征描述子匹配实现。
✔️ 相比BRIEF算法中依靠随机方式获取而值点对,ORB通过FAST方法,FAST方式寻找候选特征点方式是假设灰度图像像素点A周围的像素存在连续大于或者小于A的灰度值,选择任意一个像素点P,假设半径为3,周围16个像素表示,如下图:

- 如上图,像素点P被标记为候选特征点、通常N取值为9、12,上图N=9。
- 为了简化计算,我们可以只计算1、9、5、13四个点,至少其中三个点满足上述不等式条件,即可将P视为候选点。
- 通过阈值进行最终的筛选即可得到ORB特征点。
函数
orb = cv2.ORB_create(
nfeatures = 500,
scaleFactor = 1.2f,
nlevels = 8,
edgeThreshold = 31,
firstLevel = 0,
WTA_K = 2,
scoreType = HARRIS_SCORE,
patchSize = 31,
fastThreshold = 20 )
输入
- nfeatures --> 最终输出最大特征点数目;
- scaleFactor --> 金字塔图像上采样比率;
- nlevels --> 高斯金字塔层数;
- edgeThreshold --> 边缘阈值;
- firstLevel= 0 --> 指定第一层的索引值;
- WTA_K --> 这个是跟BRIEF描述子用的;
- scoreType --> 对所有的特征点进行排名用的方法;
- patchSize --> 用于计算BRIEF描述子的特征点领域大小。
示例代码
import cv2 as cv
import numpy as np
src = cv.imread("test.jpg")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
# 创建orb检测器
orb = cv.ORB_create()
kps = orb.detect(src)
# -1表示随机颜色
result = cv.drawKeypoints(src, kps, None, -1, cv.DrawMatchesFlags_DEFAULT)
cv.imshow("result", result)
cv.imwrite('orb_result.jpg', result)
cv.waitKey(0)
cv.destroyAllWindows()

SIFT 特征关键点检测
概述
✔️ SIFT特征是非常稳定的图像特征,在图像搜索、特征匹配、图像分类检测等方面应用十分广泛,但是它的缺点也是非常明显,就是计算量比较大,很难实时,所以对一些实时