FAST算法小结

本文解决以下问题

  1. FAST算法的基本原理
  2. FAST 算法在OpenCV中的调用

一. FAST算法的基本原理

1. FAST算法的动机

大部分特征检测算法的效果较好,但是达不到实时,因此提出FAST
(Features from Accelerated Segment Test)

2. FAST算法的基本原理

  1. 在图像中任选一点p, 假定其像素(亮度)值为 Ip
  2. 以3为半径画圆,覆盖p点周围的16个像素,如下图所示
  3. 设定阈值t,如果这周围的16个像素中有连续的n个像素的像素值都小于 Ipt 或者有连续的n个像素都大于
    Ip+t , 那么这个点就被判断为角点。 在OpenCV的实现中n取值为12(16个像素周长的 3/4).
  4. 一种更加快的改进是: 首先检测p点周围的四个点,即1, 5, 9, 12四个点中是否有三个点满足超过 Ip+t , 如果不满足,则直接跳过,如果满足,则继续使用前面的算法,全部判断16个点中是否有12个满足条件。

FAST算法小结_第1张图片


以上算法的缺点:很可能大部分检测出来的点彼此之间相邻,我们要去除一部分这样的点。为了解决这一问题,我们采用了最大值抑制的算法

假设P,Q两个点相邻,计算两个点与其周围的16个像素点之间的差分和V,去除V值较小的点。

2. FAST 算法总结

  1. 在速度上要比其他算法速度快很多
  2. 受图像噪声以及设定的阈值影响很大
  3. FAST不产生多尺度特征而且FAST特征点没有方向信息,这样就会失去旋转不变性。

FAST openCV调用

FAST算法小结_第2张图片

这里的threshold就是我们前文中提到的t

vector keyPoints;
FAST(image, keyPoints, 40);

这里默认开启了非最大值抑制,同时开启的检测type是16-9模式

参考资料

http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_fast/py_fast.html
http://www.edwardrosten.com/work/fast.html
http://docs.opencv.org/2.4/modules/features2d/doc/feature_detection_and_description.html

你可能感兴趣的:(计算机视觉,OPENCV库的使用)