zoukankan      html  css  js  c++  java
  • FAST特征点检测算法

    一 原始方法

    简介

            在局部特征点检测快速发展的时候,人们对于特征的认识也越来越深入,近几年来许多学者提出了许许多多的特征检测算法及其改进算法,在众多的特征提取算法中,不乏涌现出佼佼者。

            从最早期的Moravec,到Harris,再到SIFT、SUSAN、GLOH、SURF算法,可以说特征提取算法层出不穷。各种改进算法PCA-SIFT、ICA-SIFT、P-ASURF、R-ASURF、Radon-SIFT等也是搞得如火如荼,不亦乐乎。上面的算法如SIFT、SURF提取到的特征也是非常优秀(有较强的不变性),但是时间消耗依然很大,而在一个系统中,特征提取仅仅是一部分,还要进行诸如配准、提纯、融合等后续算法。这使得实时性不好,降系了统性能。

            Edward Rosten和Tom Drummond两位大神经过研究,于2006年在《Machine learning for high-speed corner detection》中提出了一种FAST特征点,并在2010年稍作修改后发表了《Features From Accelerated Segment Test》,简称FAST注意:FAST只是一种特征点检测算法,并不涉及特征点的特征描述。

    FAST详解

    FAST特征的定义

          FAST的提出者Rosten等将FAST角点定义为:若某像素与其周围邻域内足够多的像素点相差较大,则该像素可能是角点。

    FAST算法的步骤


    1、上图所示,一个以像素p为中心,半径为3的圆上,有16个像素点(p1、p2、...、p16)。

    2、定义一个阈值。计算p1、p9与中心p的像素差,若它们绝对值都小于阈值,则p点不可能是特征点,直接pass掉;否则,当做候选点,有待进一步考察;

    3、若p是候选点,则计算p1、p9、p5、p13与中心p的像素差,若它们的绝对值有至少3个超过阈值,则当做候选点,再进行下一步考察;否则,直接pass掉;

    4、若p是候选点,则计算p1到p16这16个点与中心p的像素差,若它们有至少9个超过阈值,则是特征点;否则,直接pass掉。

    5、对图像进行非极大值抑制:计算特征点出的FAST得分值(即score值,也即s值),判断以特征点p为中心的一个邻域(如3x3或5x5)内,计算若有多个特征点,则判断每个特征点的s值(16个点与中心差值的绝对值总和),若p是邻域所有特征点中响应值最大的,则保留;否则,抑制。若邻域内只有一个特征点(角点),则保留。得分计算公式如下(公式中用V表示得分,t表示阈值):


           上面是FAST-9,当然FAST-10、FAST-11、FAST-12也是一样的,只是步骤4中,超过阈值的个数不一样。FAST算法实现起来简单,尤其是以速度快著称。

           以上便是FAST特征检测的过程,清晰明了,而对于角点的定义也是做到了返璞归真,大师就是大师,还原本质的能力很强,估计以前这种简单想法被很多人忽略了。

     1 # -*-coding:utf-8-*-
     2 
     3 
     4 import cv2
     5 import datetime
     6 
     7 img1 = cv2.imread('/home/260158/code/pictures-data/CMU0/medium00.JPG')
     8 
     9 starttime = datetime.datetime.now()
    10 
    11 fast = cv2.FastFeatureDetector_create(90)
    12 kp = fast.detect(img1,None)
    13 img2 = cv2.drawKeypoints(img1,kp,(0,0,255))
    14 
    15 endtime = datetime.datetime.now()
    16 a = endtime- starttime
    17 
    18 
    19 #cv2.namedWindow('fast', cv2.WINDOW_NORMAL)
    20 
    21 cv2.imshow('fast',img2)
    22 cv2.waitKey(0)
    23 print a

    结果

  • 相关阅读:
    C程序的存储空间布局
    获取系统数据文件信息
    基于UDP的一对回射客户/服务器程序
    一段经典的 Java 风格程序 ( 类,包 )
    Vue 脱坑记
    vue面试题总汇
    JavaScript调试技巧
    伪元素小技巧
    JavaScript 开发人员需要知道的简写技巧
    select2插件改造之设置自定义选项 源码
  • 原文地址:https://www.cnblogs.com/wyuzl/p/7834159.html
Copyright © 2011-2022 走看看