FAST角点检测

FAST角点检测

  • 概述
  • 算法流程
  • 算法特点
  • 代码实现

概述

FAST,全称Features From Accelerated Segment Test,是一种快速的角点检测算法。该算法的核心思想是加上合适的阈值t来和邻域像素的灰度值进行比较来确定是否角点。

算法流程

FAST角点检测_第1张图片
1.在图像中选取一个像素P,其像素值为Ip;
2.以该像素点为中心画一个半径为3像素的离散化圆,这个圆的边界上有16个像素;
3.设置一个阈值t;
4.如果在这个大小为16个像素的圆上有n个连续的像素值都比Ip+t大,或者都比Ip−t小,那么它就是一个角点。
5.加速后的改进:仅仅检查在位置1,9,5和13四个位置的像素。如果P是一个角点,四个像素点中至少有3个应该必须都大于Ip+t或者小于Ip−t,因为若是一个角点,超过四分之三圆的部分应该满足判断条件。
6.非极大值抑制:比较两个相邻的特征点,并比较它们的响应值大小,较低的点将会被删除。

算法特点

1.依赖阈值t的设置;
2.不产生多尺度特征,特征点没有方向信息,会失去旋转不变性。

代码实现

FAST角点检测_第2张图片

#创建一个FAST对象,传入阈值t
fast = cv2.FastFeatureDetector_create(threshold=50)
keypoints = fast.detect(image,None)
#在图像上绘制关键点
image = cv2.drawKeypoints(image,keypoints = keypoints,outImage=image,color=(255,0,255),flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

你可能感兴趣的:(图像处理)