理论

我们已经学习带走几个特征检测器,它们都really good , 但是从实时的角度来说,它们的速度还不够快.作为解决方案,FAST(加速段测试的特征)算法由Edward Rosten和Tom Drummond在2006年的论文“Machine learning for high-speed corner detection”中提出(后来在2010年修订).

FAST 全称 Features from accelerated segment test,一种用于角点检测的算法,该算法的原理是取图像中检测点,以该点为圆心的周围的16个像素点判断检测点是否为角点,通俗的讲就是中心的的像素值比大部分周围的像素值要亮一个阈值或者暗一个阈值则为角点.

实现步骤:

一个以像素p为中心,半径为3的圆上,有16个像素点(p1、p2、...、p16)

定义一个阈值,计算p1、p9与中心p的像素差,若它们绝对值都小于阈值,则p点不可能是特征点,直接pass掉,否则,当做候选点

若p是候选点,则计算p1、p9、p5、p13与中心p的像素差,若它们的绝对值有至少3个超过阈值,则当做候选点,否则,直接pass掉

若p是候选点,则计算p1到p16这16个点与中心p的像素差,若它们有至少9个超过阈值,则是特征点,否则,直接pass掉

对图像进行非极大值抑制:计算特征点出的FAST得分值(即score值,也即s值),判断以特征点p为中心的一个邻域(如3x3或5x5)内,计算若有多个特征点,则判断每个特征点的s值(16个点与中心差值的绝对值总和),若p是邻域所有特征点中响应值最大的,则保留;否则,抑制。若邻域内只有一个特征点(角点),则保留,得分计算公式如下(公式中用V表示得分,t表示阈值):

NOTE:

它比其他现有的角落探测器快几倍

但它对高水平的噪音并不稳健,效果取决于阈值

FAST Feature Detector in OpenCV

import numpy as np

import cv2

from matplotlib import pyplot as plt

img = cv2.imread('img8.png')

# Initiate FAST object with default values

fast = cv2.FastFeatureDetector_create()

# find and draw the keypoints

kp = fast.detect(img,None)

img2 = cv2.drawKeypoints(img, kp, None, color=(255,0,0))

# Print all default params

print( "Threshold: {}".format(fast.getThreshold()) )

print( "nonmaxSuppression:{}".format(fast.getNonmaxSuppression()) )

print( "neighborhood: {}".format(fast.getType()) )

print( "Total Keypoints with nonmaxSuppression: {}".format(len(kp)) )

cv2.imshow('fast_true',img2)

# Disable nonmaxSuppression

fast.setNonmaxSuppression(0)

kp = fast.detect(img,None)

print( "Total Keypoints without nonmaxSuppression: {}".format(len(kp)) )

img3 = cv2.drawKeypoints(img, kp, None, color=(255,0,0))

cv2.imshow('fast_false',img3)

cv2.waitKey()

python opencv 识别角度_opencv python 角点检测/FAST算法相关推荐

  1. python opencv 识别角度_OpenCV入门之获取图像的旋转角度

    在我们的日常生活中,所碰到的图像往往都有一定的倾斜.那么,如何用OpenCV来获取图像的旋转角度呢? 我们以下面的图片为例,简单介绍如何用OpenCV来获取图像的旋转角度. 可以看到,该图像存在着许多 ...

  2. python opencv 录制视频_OpenCV Python 录制视频

    学到实用OpenCV调用笔记本电脑的摄像头,并录制视频保存到本地硬盘的时候,出现了一点故障,那就是获取到的文件总是为0KB.经过一番查找,终于找到了解决办法. 调用摄像头 调用摄像头作为本实验的基础是 ...

  3. python opencv压缩图片_OpenCV Python 缩放图片

    By 凌顺 2019年9月12日 本示例使用的OpenCV版本是:4.1.1 运行Python的编辑器:Jupyter notebook 示例目的 使用OpneCV的cv2.resize()函数对图片 ...

  4. python车辆识别硬件_Opencv python之车辆识别项目

    图片车辆识别 根据文章搭建好环境后开始进行做项目linkimport sys import cv2 from PyQt5.QtGui import * from PyQt5.QtWidgets imp ...

  5. Python+OpenCV 识别银行卡卡号

    Python+OpenCV 识别银行卡卡号 今天尝试一下用python+OpenCV,使用模板匹配的方式做个简单地识别银行卡卡号(大部分参考网上的,自己改了一部分,代码写的有点不太好,但是思路很清晰, ...

  6. Python OpenCV识别行人入口进出人数统计

     程序示例精选 Python OpenCV识别行人入口进出人数统计 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 这篇博客针对<Python OpenCV识别行 ...

  7. 使用Python,OpenCV在视频中进行实时条形码检测

    使用Python,OpenCV在视频中进行实时条形码检测 1. 步骤 2. 适用场景及优化 3. 总结 4. 源码 参考 上一篇博客介绍了如何检测和查找图像中的条形码.这篇博客将进行一些优化以检测实时 ...

  8. Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%

    Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38% 仅用 Python 和命令行就可以实现人脸识别的库开源了.该库使用 dlib 顶尖的深度学习人脸识别技术构建 ...

  9. Python条码识别:使用Python进行条形码识别的详细教程

    Python条码识别:使用Python进行条形码识别的详细教程 身处数字化时代,条形码作为重要的物流标识符,已经广泛应用于各行各业.对于条形码的识别,在Python中,有许多开源库可以使用,例如Zba ...

  10. OpenCV实战(16)——角点检测详解

    OpenCV实战(16)--角点检测详解 0. 前言 1. Harris 特征检测器 1.1 检测 Harris 角点 1.2 cv::cornerHarris 函数参数 2. 可追踪的良好特征 3. ...

最新文章

  1. Java日常开发的21个坑,你踩过几个?
  2. Kubernetes — Kubespray 开箱即用的部署工具
  3. Ubutun重启网卡
  4. IntelliJ IDEA版本和junit版本不适配
  5. thinkphp 随机取10条数据_spark调优-数据倾斜
  6. DMX512协议是什么 DMX512数字灯光控制系统介绍
  7. 使用人人开源遇到的bug
  8. FutureMapping:空间人工智能的计算结构
  9. 中专计算机教师天涯,天涯里有教职高或中专的教师吗?你们现在过得好吗~~
  10. 项目周期所涉及到的文档控制说明
  11. 第十七周助教工作总结——NWNU李泓毅
  12. 利用 Andorid 手机连接 Arduino 并控制 LED灯开关
  13. C++ fstream 在文件末尾写入问题
  14. 普源DG1022U信号发生器技术参数
  15. 家庭版操作系统打不开任务管理器解决办法
  16. PSP 版本Bookr修改支持中文
  17. 配置好某个版本的驱动类之后运行程序出现以下报错:UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.min
  18. APP权限越界:多款APP开启与主业无关的敏感权限
  19. 做好网站优化的18条建议
  20. 易语言5.11破解精简版

热门文章

  1. 转 Spring是如何管理Hibernate和Struts的(二)
  2. 爱上Ada语言与系统
  3. 生成n*n蛇形矩阵的算法
  4. 【车道线检测与寻迹】4月17 【多方内容总结】大模块:车辆检测,车道线检测,车辆压线判别
  5. slam的回顾(一)
  6. 3月19日 视觉里程计,PnP方法对两帧求解,BA优化的直观理解
  7. 2月28日 PCA降维,SVD压缩,中心化、归一化、标准化、k-l变换
  8. Java 重写(Override)与重载(Overload)区别
  9. 003::每天五分钟入门TCP/IP协议栈::IP协议之TOS字段说明
  10. 新建mavan项目转为web项目