FAST Corner Detection -- Edward Rosten

本文介绍了一种高效的FAST角点检测算法,包括其原理、实现方式、使用方法及在不同平台上的预编译二进制文件。此外,文章还提供了源代码,覆盖了多种编程语言,并详细说明了如何在OpenCV、LibCVD库中使用FAST。同时,文中展示了FAST在实际项目中的应用案例,如在iPhone、Solaris等平台上的应用。

Home :  Programs |  libCVD |  Hardware hacks |  Publications |  Teaching |  TooN |  Research ]

from: http://www.edwardrosten.com/work/fast.html

FAST Corner Detection -- Edward Rosten

FAST corner detection

Try FAST Today!

If you use FAST in published academic work then please cite both of the following papers:
  1. Fusing points and lines for high performance tracking.
  2. Machine learning for high-speed corner detection.
FAST-ER  is now accepted for publication:

Any figures ma be reporduced with appropriate citations. For convenience, the FAST corner figure is available in a variety of formats here.

If you want to use FAST, it is available in a variety of forms below:

  • Pre-compiled executables
  • Source code for several languages
  • In the OpenCV library
  • In the LibCVD library

Questions about FAST

If you have any questions, try the  FAQ , or ask a question about FAST in the  forum .

Precompiled FAST binaries

FAST is available precompiled for a wide variety of platforms: The FAST binary accepts an image as input and output image with corners drawn on or a list of corner locations. The threshold, number of points in the detector (9 to 12) and nonmaximal suppression can be selected. See the  unix README  or  Windows README  for more details.
Bugs
The windows executable has problems dealing widths which are not a multiple of 4. This bug does not affect the unix exectuables or the libraries.

FAST Source code

Python Source Code

Standalone C soure code

Note: this code is stable, not abandoned. The algorithm is fixed and this is the basic reference implementation. It will only change if bugs are found.

OpenCV

  • 2009-08-31 FAST is now officially in OpenCV
  • 2009-08-13 Released OpenCV compatible code
  • From the 2.x: fast_opencv-1.0.tar.gz [28KB] fast_opencv-1.0.zip [29KB]
  • This code works with OpenCV and accepts CvArr types.
  • See the README for details.
  • You probably want to use the version in OpenCV now.
  • License is the BSD license.

MATLAB Code

If you have the vision toolbox, then  it is built into MATLAB  and you don't need to download anything.

iPhone Port

FAST on the iPhone

Source code for the executables

  • FAST Test program (binaries provided above): fast-test-src.tar.gz [3.7KB]
    • Requires libCVD 13/02/2006 or newer (for FAST detection code etc)
    • License is BSD

FAST in libCVD

  • FAST in libCVD
    • This is the recommended source for FAST, and often has SSE accelerated versions.
    • License is LGPL

Build your own FAST detector

There are several options. The easiest is to use an learned detector, but output it in a new language. The FAST-ER code below contains pre-made trees in an easy to use format and a number of code generators. If you wish to build your own FAST detector (e.g. trained on your own data, targeting another language, or using some new optimizations), then the FAST-ER code provides programs for training new FAST-N detectors as well as FAST-ER detectors.

Or, you can use the original version, from the 2006 paper:

Compare your detector to FAST

If you wish to compare your detector to FAST, then there is a  set of registered images  available for download. These were used for testing FAST in  Machine learning for high-speed corner detection. . Source code for performing the comparisons is available in the  FAST-ER distribution below .

FAST-ER: Enhanced repeatability

Source code for FAST-ER is now available: This code is useful if you want to:
  • Train FAST-ER detectors.
  • Train FAST detectors.
  • Create detectors for new languages.
  • Compare the repeatability of detectors.
Documentation is available  here .

People who use FAST

If you use FAST in your project, let me know and I'll put a link to it right here.

Acknowledgements

I would like to additionally thank  Gabriel Brostow  for help preparing this web page and the test executables.

Updated September 12th 2015, 12:02 

### FAST Corner Detection Algorithm Overview FAST(Features from Accelerated Segment Test)是一种高效的角点检测算法,最初由Edward Rosten提出[^1]。该算法通过检测图像中局部亮度变化显著的区域来识别角点。与传统的角点检测方法相比,FAST在速度和效率上具有明显优势。 #### 算法核心原理 FAST算法的核心思想是利用一个圆形模板对像素点进行测试。具体来说,对于图像中的每个像素点,FAST会在其周围定义一个半径为3的圆,并检查该圆上的连续若干个点是否满足亮度变化条件。如果满足条件,则认为该像素点是一个潜在的角点[^1]。 - **亮度变化条件**:假设当前像素点的亮度为 \( I_p \),则在其周围的圆上需要找到至少 \( N \) 个连续的点,这些点的亮度要么都比 \( I_p + T \) 大,要么都比 \( I_p - T \) 小,其中 \( T \) 是一个阈值。 - **优化实现**:为了进一步提高检测速度,FAST还引入了非最大抑制(Non-Maximum Suppression)步骤,确保检测到的角点具有较高的独特性[^1]。 ```python import cv2 import numpy as np # 加载图像 image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE) # 创建FAST检测器 fast = cv2.FastFeatureDetector_create() # 检测关键点 keypoints = fast.detect(image, None) # 绘制关键点 image_with_keypoints = cv2.drawKeypoints(image, keypoints, None, color=(255, 0, 0)) # 显示结果 cv2.imshow('FAST Keypoints', image_with_keypoints) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 应用场景 FAST算法因其高效性和简洁性,被广泛应用于计算机视觉领域中的实时跟踪任务中[^1]。例如,在目标检测框架Fast R-CNN中,虽然主要关注的是区域提议网络(Region Proposal Network),但角点检测作为基础技术仍然发挥着重要作用[^2]。 ### 相关扩展 尽管FAST算法本身已经非常高效,但研究者们还在不断探索如何结合机器学习等技术进一步提升其性能。例如,FAST-ER通过引入机器学习方法改进了传统FAST算法的检测精度。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值