多尺度FAST特征的检测 - sumpig/OpenCV GitHub Wiki


BRISK

首先创建检测器实例,然后对一幅图像调用detect 方法:

// 构造BRISK 特征检测器对象
cv::Ptr<cv::BRISK> ptrBRISK = cv::BRISK::create();

// 检测关键点
ptrBRISK->detect(image, keypoints);

原理

为了在不同尺度下检测兴趣点,该算法首先通过两个下采样过程构建一个图像金字塔。

第一个过程从原始图像尺寸开始,然后每一图层(八度)减少一半。

第二个过程先将原始图像的尺寸除以1.5 得到第一幅图像,然后在这幅图像的基础上每一层减少一半,两个过程产生的图层交替在一起。

然后在该金字塔的所有图像上应用 FAST 特征检测器,提取关键点的条件与 SIFT 算法类似。

将一个像素与相邻的八个像素之一进行强度值的比较,只有是局部最大值的像素才可能成为关键点。这个条件满足后,比较这个点与上下两层的相邻像素的评分;如果它的评分在尺度上也更高,那么就认为它是一个兴趣点。

cv::BRISK 检测器有两个主要参数,第一个参数是判断 FAST 关键点的阈值,第二个参数是图像金字塔中生成的八度的数量。


ORB

ORB 特征的检测方法如下所示:

// 构造ORB 特征检测器对象
cv::Ptr<cv::ORB> ptrORB =
    cv::ORB::create(75, // 关键点的总数
                    1.2, // 图层之间的缩放因子
                    8); // 金字塔的图层数量

// 检测关键点
ptrORB->detect(image, keypoints);

原理

跟 BRISK 一样,ORB 首先创建一个图像金字塔。它由一系列图层组成,每个图层都是用固定的缩放因子对前一个图层下采样得到的(典型情况是用8 个尺度,缩放因子为1.2;这是创建cv::ORB 检测器的默认参数)。

在具有关键点评分的位置接受 N 个强度最大的关键点,关键点评分用的是 Harris 角点强度衡量方法(这个方法的作者发现,衡量强度时用 Harris 评分比用常规的 FAST 角点强度更准确)。

⚠️ **GitHub.com Fallback** ⚠️