matlab角点检测fast_第十四节、FAST角点检测(附源码)

在前面我们已经陆续介绍了许多特征检测算子,我们可以根据图像局部的自相关函数求得Harris角点,后面又提到了两种十分优秀的特征点以及他们的描述方法SIFT特征和SURF特征。SURF特征是为了提高运算效率对SIFT特征的一种近似,虽然在有些实验环境中已经达到了实时,但是我们实践工程应用中,特征点的提取与匹配只是整个应用算法中的一部分,所以我们对于特征点的提取必须有更高的要求,从这一点来看前面介绍的的那些特征点方法都不可取。

一 FAST算法原理

为了解决这个问题,Edward Rosten和Tom Drummond在2006年发表的“Machine learning for high-speed corner detection”文章中提出了一种FAST特征,并在2010年对这篇论文作了小幅度的修改后重新发表。FAST的全称为Features From Accelerated Segment Test。

Rosten等人将FAST角点定义为:若某像素点与其周围领域内足够多的像素点处于不同的区域,则该像素点可能为角点。也就是某些属性与众不同,考虑灰度图像,即若该点的灰度值比其周围领域内足够多的像素点的灰度值大或者小,则该点可能为角点。

二 FAST算法步骤

从图片中选取一个像素$P$,下面我们将判断它是不是一个特征点。我们首先把它的亮度值设为$I_p$;

设定一个合适的阈值$t$;

考虑以该像素点为中心的一个半径等于3像素的离散化的Bresenham圆,这个圆的边界上有16个像素;

4.现在,如果在这个大小为16个像素的圆上有$n$个连续的像素点,他们的像素值要么都比$I_p+t$大,要么都比$I_p-t$小,那么他就是一个角点。$n$的值可以设置为12或者9,实验证明选择9可能会有更好的效果。

上面的算法中,对于图像中的每一个点,我们都要去遍历其邻域圆上的16个点的像素,效率较低。我们下面提出了一种高效的测试(high-speed test)来快速排除一大部分非角点的像素。该方法仅仅检查在位置1,9,5和13四个位置的像素,首先检测位置1和位置9,如果它们都比阈值暗或比阈值亮,再检测位置5和位置13。如果$p$是一个角点,那么上述四个像素点中至少有3个应该必须都大于$I_p+t$或者小于$I_p-t$,因为若是一个角点,超过四分之三圆的部分应该满足判断条件。如果不满足,那么$p$不可能是一个角点。对于所有点做上面这一部分初步的检测后,符合条件的将成为候选的角点,我们再对候选的角点,做完整的测试,即检测圆上的所有点。

上面的算法效率实际上是很高的,但是有点一些缺点:

当我们设置$n<12$时就不能使用快速算法来过滤非角点的点;

检测出来的角点不是最优的,这是因为它的效率取决于问题的排序与角点的分布;

对于角点分析的结果被丢弃了;

多个特征点容易挤在一起。

三 使用机器学习做一个角点分类器

首先选取你进行角点提取的应用场景下很多张的测试图片;

使用 FAST 算法找出每幅图像的特征点;

对每一个特征点,将其周围的 16 个像素存储构成一个向量。对于步骤二中得到的角点,把他存储在$P$中;

对于图像上的每一个像素点,它周围邻域圆上位置为$x$,$x\in\{1,2,...,16\}$的点表示为$p\to{x}$,可以用下面的判断公式将该点$p\to{x}$分为三类:$$S_{p\to{x}}=\begin{cases}d,I_{p\to{x}}≤I_p-t \quad(darker)\\ s, I_p-t < I_{p\to{x}}

我们任意16个位置中的一个位置$x$,可以把集合$P$分为三个部分$P_d,P_s,P_b$,其中$P_d$的定义如下,$P_s$和$P_b$的定义与其类似:$$P_b=\{p\in{P}:S_{p\to{x}}=b\}$$ 换句话说,对于给定的位置$x$,它都是可以把所有图像中的点分为三类,第一类$P_d$包含了所有位置$x$处的像素在阈值$t$下暗于中心像素,$P_b$包含了所有位置$x$处的像素在阈值$t$亮于中心元素;

定义一个新的布尔变量$K_p$,如果$p$是一个角点,那些$K_p$为真,否则为假;

使用ID3算法(决策树分类器)来查询每一个子集;

递归计算所有的子集直至$K_p$的熵为0;

被创建的决策树就用于于其他图片的FAST检测。

四 非极大值抑制

如何解决从邻近的位置选取了多个特征点的问题,我们可以使用Non-Maximal Suppression来解决。

为每一个检测到的特征点计算它的响应大小(score function)$V$,这里$V$定义为点$p$和它周围16个像素点的绝对偏差之和;

考虑两个相邻的特征点,并比较它们的$V$值;

$V$值较低的点会被删除。

五 OpenCV库FAST特征检测

#-*-

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值