OpenCV中的快速特征检测——FAST(Features from Accelerated Segment Test)

Posted 程序媛一枚~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV中的快速特征检测——FAST(Features from Accelerated Segment Test)相关的知识,希望对你有一定的参考价值。

OpenCV中的快速特征检测——FAST(Features from Accelerated Segment Test)

这篇博客将延续上俩篇博客,介绍OpenCV中的快速检测特征——角点检测的快速算法。SURF相比SIFT速度有所提升,但从实时应用程序的角度来看,速度还不够快。 一个最好的例子是SLAM(Simultaneous Localization and Mapping 同步定位和映射)移动机器人,它的计算资源有限。于是有了本文的快速算法。

FAST (Features from Accelerated Segment Test) 加速段测试的特征
FAST用于角点的高速检测,更快更好。
FAST比其他现有的角点探测器快几倍。但它对高水平的噪音不稳定,这取决于阈值。

1. 效果图

原始图如下:

FAST效果图如下:
左图显示带非极大值抑制的FAST(关键点846个),右图显示不带非极大值抑制的FAST(关键点2426个);

2. 源码

# 快速特征检测——FAST(Features from Accelerated Segment Test)  加速段测试的特征
# FAST用于角点的高速检测,更快更好。
# 快速算法比其他现有的角点探测器快几倍。但它对高水平的噪音不稳定,这取决于阈值。

import cv2

origin = cv2.imread('images/simple.jpg')
cv2.imshow("origin", origin)

gray = cv2.cvtColor(origin, cv2.COLOR_BGR2GRAY)

# 使用默认参数初始化快速特征检测器
# fast = cv2.FastFeatureDetector() # opencv2
fast = cv2.FastFeatureDetector_create()  # opencv3
print(fast)

# 寻找和绘制关键点
kp = fast.detect(gray, None)
img2 = cv2.drawKeypoints(gray, kp, outImage=gray, color=(255, 0, 0))
print('defaultParameter res keypoints: ', len(kp))

# 不支持打印所有的参数
# print("Threshold: ", fast.getThreshold('threshold'))
# print("nonmaxSuppression: ", fast.getNonmaxSuppression('nonmaxSuppression'))
# print("neighborhood: ", fast.getType('type'))
# print("Total Keypoints with nonmaxSuppression: ", len(kp))
cv2.imshow("default res", img2)
cv2.imwrite('fast_true.png', img2)

# 抑制极大值抑制 Disable nonmaxSuppression
fast.setNonmaxSuppression(0)
kp = fast.detect(gray, None)

print("Total Keypoints without nonmaxSuppression: ", len(kp))

img3 = cv2.drawKeypoints(gray, kp, gray, color=(255, 0, 0))
cv2.imshow("nonmaxSuppression res", img3)
cv2.waitKey(0)
cv2.imwrite('fast_false.png', img3)

参考

以上是关于OpenCV中的快速特征检测——FAST(Features from Accelerated Segment Test)的主要内容,如果未能解决你的问题,请参考以下文章

C# OpenCV FAST 特征检测

OpenCV 例程 300篇243. 特征检测之 FAST 算法

OpenCV 例程 300篇243. 特征检测之 FAST 算法

OpenCV 例程 300篇243. 特征检测之 FAST 算法

OpenCV实战(17)——FAST特征点检测

opencv动态背景下运动目标检测 FAST+SURF+FLANN配准差分 17/12/13更新图片