使用机器学习了解FAST算法

时间:2019-03-25 13:10:23

标签: algorithm computer-vision decision-tree

我一直在阅读this questionthis opencv article,当然还有original关于使用机器学习的FAST算法的论文。

我似乎并不了解它。以下是我的理解所摘录的文章摘录:

  1. 选择一组图像进行训练(最好从目标应用程序域中进行训练)。假设这是我的具有4个功能的灰度图片。

            +------------+
            |   +    +   |
            |   |    |   |
            | +--------+ |
            |   |    |   |
            | +--------+ |
            |   +    +   |
            |            |
            +------------+
    
  2. 在每个图像中运行FAST算法以查找特征点。 如上一步所述,它具有4个功能(角落功能)。

  3. 对于每个特征点,将其周围的16个像素存储为矢量。对所有图像执行此操作以获得特征向量P。想象一下,这些是像素值,每个特征向量中有16个像素值。 enter image description here

  4. 这16个像素中的每个像素(例如x)可以具有以下三种状态之一:

enter image description here

现在,我将所有这些特征向量放入1个称为P的特征向量中,并根据给定的p评估每个像素是否更暗,相似或更亮。

  

向量P

     

b s d b s d b s b b s d d d | | b b b b d d s d b s d b s d b s | s d s d s d d d | d s b d s b d s b d s s d b s

  1. 根据这些状态,特征向量P分为3个子集P_d,P_s,P_b。

我不明白这部分。是否将其中的每个特征划分为P_s,P_b和P_d?

  

b b b b s s s s d d d d d d | b b b b s s s s s d d d d d | | b b b b b b s s s s s d d d | b b b b b s s s s s d d d d d

还是我将整个向量P分成三个子集?

  

b b b b b b b b b b b b b b b b b s s s s s s s s s s s s s s s s d d d d d d d d ...

或者因为我可以计算出b,d和s中哪一个最高,所以我可以说Feature1是b,feature2是d,feature3,是s,feature4是b?

我们如何使用它来创建ID3?我认为这是我不理解的主要部分。

  1. 定义一个新的布尔变量K_p,如果p是一个角,则为true,否则为false。

  2. 使用ID3算法(决策树分类器)使用变量K_p查询每个子集,以获取有关真实类的知识。它会选择x,该x会根据K_p的熵衡量得出有关候选像素是否为角的最多信息。

  3. 这将递归应用于所有子集,直到其熵为零为止。

  4. 这样创建的决策树用于其他图像中的快速检测。

0 个答案:

没有答案