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

  • 1. 效果图
  • 2. 源码
  • 参考
  • OpenCV中的尺度不变特征变换(SIFT Scale-Invariant Feature Transform)
  • OpenCV中的SURF(Speeded-Up Robust Features 加速鲁棒特征)

这篇博客将延续上俩篇博客,介绍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 cv2origin = 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)

参考

  • https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_fast/py_fast.html#fast

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

  1. OpenCV中的SURF特征检测、匹配与对象查找

    SURF算法工作原理 选择图像中的POI(Points of interest) Hessian Matrix 在不同的尺度空间发现关键点,非最大信号压制 发现特征点方法.旋转不变性要求 生成特征向量 ...

  2. 【opencv学习】图像特征检测

    import cv2 import numpy as np import matplotlib.pyplot as plt# 什么是特征? # 当你看到芒果图像时,如何识别它是芒果? # 通过分析颜色 ...

  3. OpenCV中图像特征提取与描述

    目录 图像特征提取与描述 图像的特征 Harris和Shi-Tomas算法 Harris角点检测 Shi-Tomasi角点检测 小结 SIFT/SURF算法 SIFT原理 基本流程 尺度空间极值检测 ...

  4. OpenCV中的几种角点检测方法

    1.Harris角点检测 import numpy as np import cv2 as cv import matplotlib.pyplot as pltplt.rcParams['font.s ...

  5. opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较

    opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较 参考: http://wenku.baidu.com/link?url=1aDYAJBCrrK-uk2w3sSNai7h52x_ ...

  6. Python+OpenCV:图像快速角点检测算法(FAST Algorithm for Corner Detection)

    Python+OpenCV:图像快速角点检测算法(FAST Algorithm for Corner Detection) 理论 Feature Detection using FAST Select ...

  7. (四)OpenCV中的特征检测之BRIEF(二进制强大的独立基本特征)

    注释:本文翻译自OpenCV3.0.0 document->OpenCV-Python Tutorials,包括对原文档种错误代码的纠正 1.概述 SIFT使用具有128个浮点数的特征描述符. ...

  8. OpenCV中的SURF(Speeded-Up Robust Features 加速鲁棒特征)

    OpenCV中的SURF(加速健壮功能) 1. 效果图 2. 原理 2.1 为什么SURF比SIFT快? 2.3 怎样获取SIFT与SURF? 3. 源码 参考 上一篇博客介绍了用于关键点检测和描述的 ...

  9. 《Fast Phonetic Similarity Search over Large Repositories》——大型存储库中的快速语音相似性搜索

    介绍一篇关于当存在拼写错误的字符串如何进行相似性搜索的论文,该论文结合字符串相似性和语音相似性可在大型存储库中进行快速的相似性搜索. 论文连接 一.介绍 背景:字符串相似性算法可以处理字符串拼写错误的 ...

最新文章

  1. 用Eclipse 开发Dynamic Web Project应用程序
  2. 【实用】面对枯燥的源码,如何才能看得下去?
  3. android10分区镜像,分区和映像  |  Android 开源项目  |  Android Open Source Project
  4. Java自带的线程池ThreadPoolExecutor详细介绍说明和实例运用
  5. /opt/hbase/conf 中不能启动hbase_Hbase从入门到入坑
  6. ASP.NET Core 网站运行时修改设置如何自动生效
  7. 谭浩强c语言规范化的指数形式,C语言程序设计谭浩强第四期末复习重点.docx
  8. matlab lmi 定义一个任意方阵,matlab中LMI应用说明
  9. Angular 第一章 开始
  10. java按钮陷下去_付费?广告?捐款?如何让开源软件活下去?
  11. 计算机密码学奖,上海交通大学计算机科学与工程系(CSE)
  12. Win11体验——该来的来了,该走的没走,不该走的走了
  13. Cheese 游戏编程:第 4 部分 (转自MSDN)
  14. jQuery常用选择器总结(超详细)
  15. 【Leetcode】98. 验证二叉搜索树
  16. 学计算机基本文化,计算机文化基础简单介绍
  17. fscan扫描工具安装
  18. Radio Dream流媒体直播平台基于Docker的应用
  19. outlook登陆Exchange邮箱不断掉线并弹出需要登陆的窗口
  20. 【网络】吐血整理-Java网络合集

热门文章

  1. 2021年大数据Kafka(十二):❤️Kafka配额限速机制❤️
  2. java 抽象方法 虚方法的区别_声明抽象类(纯虚方法)会大幅增加二进制大小
  3. Thread start()方法和run()方法的区别
  4. java.lang.RuntimeException: Parcelable encountered IOException writing
  5. Manifest merger failed with multiple errors, see logs
  6. 使用SSH和Nginx做内网HTTP映射
  7. SQL SERVER 查询所有数据表名称和数据行数
  8. 2022-2028年中国绝缘栅双极晶体管(IGBT)行业投资分析及前景预测报告
  9. 删除maven仓库中的LastUpdated文件
  10. Android WiFi开发教程(三)——WiFi热点数据传输