opencv-python 基于ORB的特征检测和特征匹配(FAST+BRIEF+BF)笔记

opencv-python 基于ORB的特征检测和特征匹配(FAST+BRIEF+BF)笔记

FAST(Features from Accelerated Segment Test)角点检测:

首先选取一个像素点p,并判断p点是否为关键点。设ip为像素点p的灰度值。
选取适当的阈值t。
如图,对p点周围的16个像素点进行检测。
在这里插入图片描述
如果16个点当中存在n个连续的像素点都高于Ip+t或者都小于Ip−t,那么像素点p可看作一个角点。
上图中n为12,如虚线所示。

为了取得更快的速度,对于每个待检测的像素点,使用何种顺序去寻找周围的16个像素点也是有讲究的:
首先先找12点、3点、6点、9点钟方向的四个点,先检测12点和6点钟方向的点,然后是3点和9点钟方向的点。如果p点为角点,那么四个点至少有3个符合要求。如果小于3个,那么p点不是角点。

不过,上面的方法有如下的几条缺点:
1.当n<12时不会舍弃数量过多的候选点
2.像素的选取不是最优的,因为效果取决于问题的要求和角点的分布。
3.高速检测的结果被丢弃
4.检测到的特征点互相连接
前三个问题使用机器学习的手段解决,最后一个问题使用非极大值抑制的方法解决。

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('img/lena.jpg')

fast = cv2.FastFeatureDetector_create(threshold=40, nonmaxSuppression=True,
                                      type=cv2.FAST_FEATURE_DETECTOR_TYPE_9_16)
  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值