基于光强的角点检测(SUSAN角点检测、FAST角点检测、FAST-ER角点检测)

7 篇文章 0 订阅
2 篇文章 0 订阅

Corner Feature Detector(Intensity-Based)

基于光强比较的角点检测,直接比较光强(像素灰度值),而不计算梯度。所以实时性更好,所需的存储空间更小。

SUSAN 角点检测

SUSAN 全称Smallest univalue segment assimilating nucleus,最小核同值区。提出者Smith与Brady, 1997.

SUSAN 使用一个圆形模板和一个圆的中心点,通过圆的中心点象素值与模板圆内其他象素值的比较,统计出与圆中心点象素值近似的象素数量,当这样的象素数量小于某一阈值时,则该圆中心点就被认为是角点。

  • 圆形模板:通常是半径为3.5,37个像素的圆形
  • 圆形模板中心点:圆心位置的像素
  • 最小核同值区:像素值与圆心位置像素值接近的区域和(颜色接近的区域)

有两种划分(了解):

平滑划分: c ( r ⃗ , r ⃗ 0 ) = e − ( I ( r ) − I ( r 0 ) t ) 6 c\left(\vec{r}, \vec{r}_{0}\right)=e^{-\left(\frac{I(r)-I\left(r_{0}\right)}{t}\right)^{6}} c(r ,r 0)=e(tI(r)I(r0))6

直接划分: c ( r ⃗ , r ⃗ 0 ) = { 1  if  ∣ I ( r ⃗ ) − I ( r ⃗ 0 ) ∣ ≤ t 0  if  ∣ I ( r ⃗ ) − I ( r ⃗ 0 ) ∣ > t c\left(\vec{r}, \vec{r}_{0}\right)=\left\{\begin{array}{ll}1 & \text { if }\left|I(\vec{r})-I\left(\vec{r}_{0}\right)\right| \leq t \\ 0 & \text { if }\left|I(\vec{r})-I\left(\vec{r}_{0}\right)\right|>t\end{array}\right. c(r ,r 0)={10 if I(r )I(r 0)t if I(r )I(r 0)>t

像素个数: n ( x 0 , y 0 ) = ∑ ( x , y ) ≠ ( x 0 , y 0 ) c ( x , y ) n\left(x_{0}, y_{0}\right)=\sum_{(x, y) \neq\left(x_{0}, y_{0}\right)} c(x, y) n(x0,y0)=(x,y)=(x0,y0)c(x,y)

像素个数与阈值 g g g进行比较,以此判断角点。
R ( r ⃗ 0 ) = { g − n ( r ⃗ 0 ) n ( r ⃗ 0 ) < g 0  otherwise  R\left(\vec{r}_{0}\right)=\left\{\begin{array}{cc} g-n\left(\vec{r}_{0}\right) & n\left(\vec{r}_{0}\right)<g \\ 0 & \text { otherwise } \end{array}\right. R(r 0)={gn(r 0)0n(r 0)<g otherwise 

FAST 角点检测

实时性好,不具有旋转不变性。

主要思想:比较中心像素与圆内(这里的圆内指的是圆边经过的像素)16个像素,如果圆内存在n个相邻的像素块都比中心像素的亮度 I p I_p Ip加上一个阈值 t t t亮,或者都比 I p − t I_p - t Ipt暗,则就判断其为角点。n通常选择为12. FAST uses binary comparison with each pixel along a circle pattern against the central pixel。

FAST算法描述,Cover知乎@南沙渔阳

算法描述:

  1. 以候选的像素角点为中心,画一个半径为3的圆,这样圆上就会有16个像素块。
  2. 比较pixel 1、pixel 9与中心像素的亮度值。如果它们距离 I p I_p Ip都在 p p p的阈值内,即比 I p + t I_p + t Ip+t亮或比 I p − t I_p - t Ipt暗,则该像素 p p p不可能是角点。
  3. 如果未能排除角点可能性,则判断pixel 5、pixel 13(可以观察到5、13是正交于1和9的)。如果 p p p是角点,那么在1,9,5,13中至少有3个像素全部比 I p + t I_p + t Ip+t亮或全部比 I p − t I_p - t Ipt暗。如果未满足该条件,则像素 p p p不可能是角点。
  4. 若还不能排除角点的可能性,则对所有16个像素块进行测试。判断n与12的大小。

在SUSAN上进行了改进,FAST效率极高,具有高重复性。但仍然存在一些问题:

  1. 如果圆环上的16个像素,一半明显比中心暗,一半明显比中心亮,则也有可能是角点。但会被FAST拒绝。
  2. 检测器的相率取决于像素点判断的顺序,无法保证最优。
  3. 相邻的几个特征像素点容易被重复检测为角点(可以使用非极大值抑制)。

FAST-ER 角点检测

FAST-ER,Rosten 2010年提出的对FAST算法的改进。

主要改进在于:使用ID3决策树策略对FAST进行了加速,使得其更快。

关于ID3决策树,可以参考:https://blog.csdn.net/weixin_43977640/article/details/114336485

每个像素点 x x x都能将全部像素构成的集合 P P P分为三个集合 P d , P b , P s P_d, P_b, P_s Pd,Pb,Ps,即比 I p − t I_p-t Ipt暗,比 I p + t I_p+t Ip+t亮,与之类似。这样就可以根据像素点 x x x来对决策树进行进一步的划分。

一个任意的角点集合的信息熵:
H ( Q ) = ( c + c ˉ ) log ⁡ 2 ( c + c ˉ ) − c log ⁡ 2 c − c ˉ log ⁡ 2 c ˉ H(Q)=(c+\bar{c}) \log _{2}(c+\bar{c})-c \log _{2} c-\bar{c} \log _{2} \bar{c} H(Q)=(c+cˉ)log2(c+cˉ)clog2ccˉlog2cˉ

c c c是集合中的角点数量, c ˉ \bar c cˉ是集合中的非角点数量。就是传统的信息熵计算方法。只不过把概率拆开写了。

而依据 x x x会将训练集中的全部像素构成的集合划分为三个子集,作者规定他们的贡献度都一样,所以 x x x的信息增益:
H g = H ( P ) − H ( P d ) − H ( P s ) − H ( P b ) H_{g}=H(P)-H\left(P_{d}\right)-H\left(P_{s}\right)-H\left(P_{b}\right) Hg=H(P)H(Pd)H(Ps)H(Pb)

计算周围16个像素点的信息增益,选择增益最大的 x x x,然后进一步递归构建决策树,直到递归结束。

这样构建出来的决策树可以正确分类训练集中的所有角点,因此非常近似地体现了FAST角点检测器的规则。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值