原始论文链接:Features from Accelerated Segment Test (FAST)
多个论文对比:Faster and better: a machine learning approach to corner detection
1.介绍:
FAST是一种由Rosten和Drummond提出的用于检测图片特征点的算法。图片特征点应拥有良好边界,并能被快速识别。特征点含有许多局部信息。这些局部信息应该能在不同的图片上重现。特征点检测已经被广泛应用于图片匹配,目标识别,跟踪等任务。
特征点(或称角点)检测不是新出现的想法。目前已有许多成熟的算法,如:Moravec corner detection algorithm, Harris & Stephens corner detection algorithm, SUSAN corner detector
2.使用FAST特征检测
算法解释如下:
1.在图片中选择一个像素p,其像素强度为 IP
2.设置一个阈值T,(通常为图片像素强度的20%)
3.以像素点p为中心,半径为3的圆上有16个像素点(p1, p2,...pP16),分别计算这些像素点与中心点P的像素差。
4.如果存在连续的n个像素点的像素差绝对值大于阈值T,则这个中心点P为特征点。(本文选择 n = 12)
5.为了加速算法,开始时只比较像素点p1, p5, p9, p13与中心点的强度差。如果其中至少3个点的像素差大于阈值,则p为特征候选点。
6.对于特征候选点再进行第3个步骤,判断全部16个像素点,确定p是否为特征点。
7.对所有像素点重复以上步骤
本算法存在一些不足:
1.在快速检测时,如果n < 12 时,其会检测出过多的特征点。
2.方案的准确性依赖于特征点的位置和分布。有可能选择不是最佳
3.会检测到多个临近的特征点
问题1和2可以通过使用机器学习的方式解决。问题3可以通过抑制非最大值解决。
3.机器学习方案
本方案需要决策树的知识。
1.选择一组图片用于训练
2.对每一张图片均使用FAST算法检测特征点
3.对于每一个像素点p,保存环绕它的16个像素点为一个向量P(如下图)
4.对图片中所有像素重复以上步骤。
5.对于向量P中的每一个值,都存在3种状态。比像素p暗,比像素p亮,与像素p相似。
6.根据像素的状态,可以将P划分到3个子集中: Pd,Pl,Ps
7.对每个向量定义一个对应的变量Kp, 当p为特征点时,Kp为true;当p不是特征点时,Kp为false。
8.使用ID3算法搜索所有子集,并将变量Kp作为训练集的分类值。
9.ID3算法是基于最小熵原则。即找到包含最多信息(关于像素p)的像素x。对于集合P的熵可以用公式表示为:
10. 对Pd,Pl, Ps这三个子集递归地使用最小熵算法
11.当子集为0的时候停止
12.生成的决策树也可以用于其他图片
4.通过抑制非最大值,移除临近的特征点
本算法的最初版本会检测到多个临近的特征点。这个问题可以通过抑制非最大值处理。
算法详细描述如下:
1.定义FAST score函数为中心点p和其环绕的16个像素点,强度差值的绝对值和。对每个特征点均运行score函数。
2.比较两个临近的特征点的FAST score值
3.丢弃score值低的特征点。