FAST角点检测算法

FAST角点检测算法FAST 是一种角点检测算法 其思想源于 corner 的定义 也就是检测候选点周围像素点的像素值 如果候选点周围邻域内有足够多的像素点与该候选点的灰度值差别够大 则认为该候选点为一个特征点 nbsp nbsp nbsp nbsp FAST 检测角点的过程 nbsp nbsp nbsp nbsp 1 初步筛选 如下图所示 将像素点 P1 P5 P9 P13 的像素值与中心像素点 P 的像素值进行比较 如果至少有三个像素点的像素值都大于 Ip nbsp t

       FAST是一种角点检测算法,其思想源于corner的定义,也就是检测候选点周围像素点的像素值,如果候选点周围邻域内有足够多的像素点与该候选点的灰度值差别够大,则认为该候选点为一个特征点。

       FAST检测角点的过程:

       1. 初步筛选,如下图所示,将像素点P1、P5、P9、P13的像素值与中心像素点P的像素值进行比较, 如果至少有三个像素点的像素值都大于I+ t,或者都小于I– t,则像素点P可能是角点,并在步骤2中进一步判断,否则像素点P不是角点。

       2.进一步判断,将像素点P周围的16个像素点的像素值与像素点P的像素值进行比较, 如果有连续12个像素点的像素值都大于I+t,或者都小于I– t,则像素点P是角点。

       3. 非极大抑制,首先计算角点的FAST得分(记为V),也就是上一步中12个连续像素点的像素值与该点像素值的差值的绝对值之和,按如下公式计算;然后,对于相邻的两个角点,比较它们的FAST得分,保留得分较大的角点。

FAST角点检测算法

FAST角点检测算法

       分析与总结:


       该角点检测算法的速度比较快,但是也存在一些缺点:

       1. 检测效果依赖于阈值t

       2. 当图像中存在噪声点时,检测效果不理想

       3. 不产生多尺度特征,所以不具有尺度不变性

       4. 特征点没有方向性,这样会失去旋转不变性


代码实现:(opencv3.0)

#include 
   
     #include 
    
      #include 
     
       #include 
      
        using namespace cv; void main() { Mat image; image = imread("dog.png"); // vector of keyPoints std::vector 
       
         keyPoints; // construction of the fast feature detector object Ptr 
        
          fast; fast = cv::FastFeatureDetector::create(40); // 检测的阈值为40 // feature point detection fast->detect(image, keyPoints); drawKeypoints(image, keyPoints, image, cvScalar(0, 225,0), DrawMatchesFlags::DRAW_OVER_OUTIMG); imshow("FAST feature", image); cvWaitKey(0); } 
         
        
       
      
     
   

相关的论文:

Real-time Video Annotations for Augmented Reality




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176322.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午10:13
下一篇 2026年3月26日 下午10:13


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号