【OpenCV】94 ORB FAST特征关键点检测

94 ORB FAST特征关键点检测

代码

import cv2 as cv
import numpy as np

src = cv.imread("../images/test1.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
orb = cv.ORB_create()
kps = orb.detect(src)
result = cv.drawKeypoints(src, kps, None, (0, 255, 0), cv.DrawMatchesFlags_DEFAULT)
cv.imshow("result", result)
cv.waitKey(0)
cv.destroyAllWindows()

实验结果

在这里插入图片描述

解释

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特征点

retval = cv.ORB_create([, nfeatures[, scaleFactor[, nlevels[, edgeThreshold[, firstLevel[, WTA_K[, scoreType[, patchSize[, fastThreshold]]]]]]]]])
  • nfeatures = 500最终输出最大特征点数目
  • scaleFactor =1.2f金字塔上采样比率
  • nlevels =8金字塔层数
  • edgeThreshold =31边缘阈值
  • firstLevel= 0
  • WTA_K =2这个是跟BRIEF描述子用的
  • scoreType 对所有的特征点进行排名用的方法
  • patchSize 定向的Brief描述符使用的补丁大小。在较小的金字塔层上,特征覆盖的感知图像区域将更大
  • fastThreshold 快速阈值

在这里插入图片描述


所有内容均来源于贾志刚老师的知识星球——OpenCV研习社,本文为个人整理学习,已获得贾老师授权,有兴趣、有能力的可以加入贾老师的知识星球进行深入学习。
在这里插入图片描述

发布了111 篇原创文章 · 获赞 0 · 访问量 1655

猜你喜欢

转载自blog.csdn.net/liu_taiting/article/details/105008690