前面已经介绍多种图像特征点(角点、斑点、极值点)的检测算法,包括Harris、LoG、HoG以及SIFT、SURF等,这些方法大多涉及图像局部邻域的梯度计算和统计,相比较而言,FAST(Features From Accelerated Segment Test)在进行角点检测时,计算速度更快,实时性更好。
FAST角点定义
FAST角点定义为:若某像素点与周围邻域足够多的像素点处于不同区域,则该像素可能为角点。考虑灰度图像,即若某像素点的灰度值比周围邻域足够多的像素点的灰度值大或小,则该点可能为角点。
算法步骤
- 对于图像中一个像素点$p$,其灰度值为$I_p$
- 以该像素点为中心考虑一个半径为3的离散化的Bresenham圆,圆边界上有16个像素(如下图所示)
- 设定一个合适的阈值$t$,如果圆上有n个连续像素点的灰度值小于$I_p-t$或者大于$I_p+t$,那么这个点即可判断为角点(n的值可取12或9)
一种快速排除大部分非角点像素的方法就是检查周围1、5、9、13四个位置的像素,如果位置1和9与中心像素P点的灰度差小于给定阈值,则P点不可能是角点,直接排除;否则进一步判断位置5和13与中心像素的灰度差,如果四个像素中至少有3个像素与P点的灰度差超过阈值,则考察邻域圆上16个像素点与中心点的灰度差,如果有至少9个超过给定阈值则认为是角点。
角点分类器
- 选取需要检测的场景的多张图像进行FAST角点检测,选取合适的阈值n(n<12),提取多个特征点作为训练数据
- 对于特征点邻域圆上的16个像素$x \in {1,2,…,16 }$,按下式将其划分为3类
$$S_{p\rightarrow x} = \begin{cases} d, I_{p\rightarrow x} \leq I_p-t \\ s, I_p-t \leq I_{p\rightarrow x} \leq I_p+t \\ b, I_p+t \leq I_{p\rightarrow x} \end{cases}$$ - 对每个特征点定义一个bool变量$K_p$,如果$p$是一个角点,则$K_p$为真,否则为假
- 对提取的特征点集进行训练,使用ID3算法建立一颗决策树,通过第$x$个像素点进行决策树的划分,对集合$P$,得到熵值为
$$H(P)=(c+\hat{c})log_2 (c+\hat{c})-clog_2 c - \hat{c}log_2 \hat{c} $$
其中$c$为角点的数目,$\hat{c}$为非角点的数目。由此得到的信息增益为
$$\Delta H = H(P) - H(P_d) - H(P_s) - H(P_b)$$
选择信息增益最大位置进行划分,得到决策树 - 使用决策树对类似场景进行特征点的检测与分类
非极大值抑制
对于邻近位置存在多个特征点的情况,需要进一步做非极大值抑制(Non-Maximal Suppression)。给每个已经检测到的角点一个量化的值$V$,然后比较相邻角点的$V$值,保留局部邻域内$V$值最大的点。$V$值可定义为
- 特征点与邻域16个像素点灰度绝对差值的和
- $V = max(\Sigma_{x \in S_{bright}} |I_{p\rightarrow x} - I_p| - t, \Sigma_{x \in S_{dark}} |I_{p\rightarrow x} - I_p| - t)$
式中,$S_{bright}$是16个邻域像素点中灰度值大于$I_p+t$的像素点的集合,而$S_{dark}$表示的是那些灰度值小于$I_p−t$的像素点。
算法特点
- FAST算法比其他角点检测算法要快
- 受图像噪声以及设定阈值影响较大
- 当设置$n<12$时,不能用快速方法过滤非角点
- FAST不产生多尺度特征,不具备旋转不变性,而且检测到的角点不是最优
reference
- Paper: Machine learning for high-speed corner detection
- Paper: Faster and better: a machine learning approach to corner detection
- http://www.cnblogs.com/ronny/p/4078710.html
- http://blog.csdn.net/hujingshuang/article/details/46898007
- http://blog.csdn.net/lql0716/article/details/65662648
- https://liu-wenwu.github.io/2016/10/08/fast-corners/
- http://blog.csdn.net/skeeee/article/details/9405531