定义
一种快速角点检测算法。
FAST也是一种经典的特征点检测方法,这个方法正如其名,计算速度快,可以应用与实时场景中。在FAST特征提出之后,实时计算机视觉应用中特征提取性能才有显著改善。
FAST算法包含3个主要步骤:
(1)固定半径圆上的像素进行分割测试。
下图是12点的分割测试角点检测算法的示意图。12点分割测试角点检测算法是在一个图像块上进行,如上图中的左边方块,其中p是中心像素点,12点取的是图上用弧线连接的12个点的像素值都大于或都小于中心像素值,则认为该点处是候选角点。
在分割测试中,t是一个阈值,Ip表示的是中心像素的像素值,当中心像素的像素值Ip小于x处的像素值Ip->x+t时,则该像素属于darker,其他两种情况分别表示亮些和相似。这样一个块(圆形)区域就可以分成d、s和b三种类型。这时候只要统计圆形区域中d或b的次数,只要d或b出现的次数大于n,那么该点就被认为是候选角点。
(2)ID3决策树算法来训练角点检测。
通过上式中比较,可以将模板内的像素分成三部分d、s、b,分别记为:Pd,Ps,Pb。因此对于每个Sp->x都属于Pd,Ps,Pb中的一个。另外,令Kp为true,如果p为角点,否则为false。通过ID3算法来选择具有最大信息增益的像素来判断一个像素是否为角点。Kp的熵用下式来计算:
对上述像素依次进行如上处理,选择像素增益最大的像素作为判断角点的依据,生成决策树,从而实现角点的正确分类。
(3)非极大值抑制。
在上面的分割测试中,没有计算角点响应函数,非极大值抑制无法直接应用于提取的特征。因此,定义一个角点响应函数V,考虑到分割测试的特征以及计算速度的需要,角点响应函数的定义如下:
定义了角点响应函数后,就可以采用常规的非极大值抑制方法对非角点进行排除了。
FAST算法比其他已知的角点检测算法要快很多倍,但是当图片中的噪点较多时,它的健壮性并不好,而且算法的效果还依赖于一个阈值t。而且FAST不产生多尺度特征而且FAST特征点没有方向信息,这样就会失去旋转不变性。
参考文献
[1] Rosten E . Machine learning for high-speed corner detection[J]. 2006.