资讯专栏INFORMATION COLUMN

opencv python 角点检测/FAST算法

CoreDump / 3137人阅读

摘要:若邻域内只有一个特征点角点,则保留,得分计算公式如下公式中用表示得分,表示阈值它比其他现有的角落探测器快几倍但它对高水平的噪音并不稳健,效果取决于阈值

FAST Algorithm for Corner Detection

理论

我们已经学习带走几个特征检测器,它们都really good , 但是从实时的角度来说,它们的速度还不够快.作为解决方案,FAST(加速段测试的特征)算法由Edward Rosten和Tom Drummond在2006年的论文“Machine learning for high-speed corner detection”中提出(后来在2010年修订).

FAST 全称 Features from accelerated segment test,一种用于角点检测的算法,该算法的原理是取图像中检测点,以该点为圆心的周围的16个像素点判断检测点是否为角点,通俗的讲就是中心的的像素值比大部分周围的像素值要亮一个阈值或者暗一个阈值则为角点.


实现步骤:

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

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

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

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

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

NOTE

它比其他现有的角落探测器快几倍

但它对高水平的噪音并不稳健,效果取决于阈值

FAST Feature Detector in OpenCV
import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread("img8.png")
# Initiate FAST object with default values
fast = cv2.FastFeatureDetector_create()

# find and draw the keypoints
kp = fast.detect(img,None)
img2 = cv2.drawKeypoints(img, kp, None, color=(255,0,0))

# Print all default params
print( "Threshold: {}".format(fast.getThreshold()) )
print( "nonmaxSuppression:{}".format(fast.getNonmaxSuppression()) )
print( "neighborhood: {}".format(fast.getType()) )
print( "Total Keypoints with nonmaxSuppression: {}".format(len(kp)) )

cv2.imshow("fast_true",img2)

# Disable nonmaxSuppression
fast.setNonmaxSuppression(0)
kp = fast.detect(img,None)

print( "Total Keypoints without nonmaxSuppression: {}".format(len(kp)) )

img3 = cv2.drawKeypoints(img, kp, None, color=(255,0,0))

cv2.imshow("fast_false",img3)

cv2.waitKey()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42085.html

相关文章

  • opencv python SIFT(尺度不变特征变换)

    摘要:理论前面讲的角点检测器中的角点在旋转的图像中也是角点,但是缩放呢如果缩放图像,则角可能不是角例如,检查下面的简单图像,当在同一窗口中放大时,小窗口内的小图像中的角是平坦的所以角点检测器不是尺度不变的所以,在年,不列颠哥伦比亚大学的在他的论 Introduction to SIFT (Scale-Invariant Feature Transform) 理论 前面讲的Harris角点检...

    marek 评论0 收藏0
  • opencv python Harris角点检测

    摘要:角点角点所具有的特征轮廓之间的交点对于同一场景,即使视角发生变化,通常具备稳定性质的特征该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化角点检测基本原理使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况 Harris Corner Detection 角点 角点所具有的特征: 轮廓之间的交点 对于同一场景,即使视角发生变化,通常具备稳定性质的特...

    宋华 评论0 收藏0
  • opencv python Shi-Tomasi角点检测

    摘要:低于质量水平的所有角落都被拒绝,然后它根据质量按降序对剩余的角进行排序 Shi-Tomasi Corner Detector & Good Features to Track cv2.goodFeaturesToTrack(image, maxCorners, qualityLevel, minDistance[, corners[, mask[, blockSize[, useHa...

    red_bricks 评论0 收藏0
  • Programming Computer Vision with Python (学习笔记十二)

    摘要:图像矩图像矩或称几何矩是由在年提出的。矩给出了对图像形状的一种度量。使用建议的第二种采样方法即以图像中心进行高斯分布采样,长度使用,然后在基础上增加了旋转的描述以及快速的计算方法,这种方法被称为。 ORB(Oriented FAST and Rotated BRIEF)可用来替代SIFT(或SURF),它对图像更具有抗噪特性,是一种特征检测高效算法,其速度满足实时要求,可用于增强图像匹...

    xbynet 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<