OpenCV  4.10.0
开源计算机视觉
正在加载...
搜索中...
无匹配项
BRIEF(二进制鲁棒独立的基本特征)

目标

本章中

  • 我们将学习 BRIEF 算法的基本知识

理论

我们知道 SIFT 使用 128 维向量来表示描述符。由于它使用浮点数,因此它基本占用 512 字节。同样地,SURF 也至少占用 256 字节(对于 64 维)。为数千个特征创建这样一个向量会占用大量内存,对于资源受限的应用程序而言,这是不可行的,尤其对于嵌入式系统而言。内存越大,匹配所需的时间就越长。

但是所有这些维度可能都不需要实际匹配。我们可以使用多种方法(如 PCA、LDA 等)压缩它。甚至其他方法,如使用 LSH(局部敏感哈希)的哈希,用于将浮点数表示的这些 SIFT 描述符转换成二进制字符串。这些二进制字符串用于通过汉明距离匹配特征。这提供了更好的速度提升,因为查找汉明距离只是应用 XOR 和位计数,这在具有 SSE 指令的现代 CPU 中非常快。但在本例中,我们需要首先查找描述符,然后才能应用哈希,这并不能解决我们关于内存的初始问题。

这时 BRIEF 就派上用场了。它提供了一个捷径,可以在不查找描述符的情况下直接查找二进制字符串。它获取平滑化的图像块并以唯一的方式选择一组 \(n_d\) (x,y) 位置对(论文中对此进行了说明)。然后在这些位置对上进行一些像素强度比较。例如,让第一个位置对为 \(p\) 和 \(q\)。如果 \(I(p) < I(q)\),则其结果为 1,否则为 0。这适用于所有 \(n_d\) 位置对,以生成 \(n_d\) 维位串。

此 \(n_d\) 可以是 128、256 或 512。OpenCV 支持所有这些,但默认情况下,它为 256(OpenCV 以字节表示它。因此值将为 16、32 和 64)。因此,一旦获得了此值,就可以使用汉明距离来匹配这些描述符。

一个重要的一点是 BRIEF 是一个特征描述符,它不提供任何查找特征的方法。因此,必须使用任何其他特征检测器,如 SIFT、SURF 等。该论文建议使用 CenSurE,它是一个快速检测器,而 BRIEF 对 CenSurE 点的处理甚至比对 SURF 点的处理稍微好一点。

简言之,BRIEF 是一种更快的特征描述符计算和匹配方法。它还提供高识别率,除非存在较大的平面旋转。

OpenCV 中的 STAR(CenSurE)

STAR 是一个源自 CenSurE 的特征检测器。然而,与 CenSurE 使用正方形、六边形和八边形等多边形来逼近一个圆不同,Star 使用 2 个重叠的正方形来模拟一个圆:1 个直立的和 1 个旋转了 45 度的。这些多边形是双层的。它们可以被看作带有粗边框的多边形。边框和封闭区域的权重符号相反。这比其他尺度空间检测器具有更好的计算特性,并且能够实时实现。与 SIFT 和 SURF 相比,SIFT 和 SURF 找到在较大的尺度上会影响精度的子采样像素处的极值,而 CenSurE 在金字塔中使用所有尺度的完整空间分辨率创建特征向量。

OpenCV 中的 BRIEF

下面的代码展示了在 CenSurE 检测器的帮助下计算 BRIEF 描述符。

注意,您需要 opencv contrib) 才能使用此功能。

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('simple.jpg', cv.IMREAD_GRAYSCALE)
# 初始化 FAST 检测器
star = cv.xfeatures2d.StarDetector_create()
# 初始化 BRIEF 提取器
brief = cv.xfeatures2d.BriefDescriptorExtractor_create()
# 使用 STAR 查找关键点
kp = star.detect(img,None)
# 使用 BRIEF 计算描述符
kp, des = brief.compute(img, kp)
print( brief.descriptorSize() )
print( des.shape )
CV_EXPORTS_W Mat imread(const String &filename, int flags=IMREAD_COLOR)
从文件中加载图像。

函数 brief.getDescriptorSize() 给出了以字节为单位使用的 \(n_d\) 大小。默认情况下,它是 32。下一个是匹配,将在另一章节中完成。

其他资源

  1. 迈克尔·卡隆德、文森特·勒佩蒂、克里斯托夫·斯特雷查和帕斯卡尔·富阿,“BRIEF:二进制稳健基本特征”,第 11 届欧洲计算机视觉会议 (ECCV),克里特岛赫拉克利翁。LNCS Springer,2010 年 9 月。
  2. LSH(局部敏感哈希) 在维基百科上。