图片角点快速检测算法FAST(翻译)

原始论文链接: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 。这些改进的FAST算法主要是为了提供一种能实时检测的算法。如在移动端的SLAM。

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值低的特征点。




猜你喜欢

转载自blog.csdn.net/koibiki/article/details/80191307
今日推荐