![]() |
OpenCV
开源计算机视觉
|
本章中
我们知道 SIFT 使用 128 维向量来表示描述符。由于它使用浮点数,因此它基本占用 512 字节。同样地,SURF 也至少占用 256 字节(对于 64 维)。为数千个特征创建这样一个向量会占用大量内存,对于资源受限的应用程序而言,这是不可行的,尤其对于嵌入式系统而言。内存越大,匹配所需的时间就越长。
但是所有这些维度可能都不需要实际匹配。我们可以使用多种方法(如 PCA、LDA 等)压缩它。甚至其他方法,如使用 LSH(局部敏感哈希)的哈希,用于将浮点数表示的这些 SIFT 描述符转换成二进制字符串。这些二进制字符串用于通过汉明距离匹配特征。这提供了更好的速度提升,因为查找汉明距离只是应用 XOR 和位计数,这在具有 SSE 指令的现代 CPU 中非常快。但在本例中,我们需要首先查找描述符,然后才能应用哈希,这并不能解决我们关于内存的初始问题。
这时 BRIEF 就派上用场了。它提供了一个捷径,可以在不查找描述符的情况下直接查找二进制字符串。它获取平滑化的图像块并以唯一的方式选择一组
此
一个重要的一点是 BRIEF 是一个特征描述符,它不提供任何查找特征的方法。因此,必须使用任何其他特征检测器,如 SIFT、SURF 等。该论文建议使用 CenSurE,它是一个快速检测器,而 BRIEF 对 CenSurE 点的处理甚至比对 SURF 点的处理稍微好一点。
简言之,BRIEF 是一种更快的特征描述符计算和匹配方法。它还提供高识别率,除非存在较大的平面旋转。
STAR 是一个源自 CenSurE 的特征检测器。然而,与 CenSurE 使用正方形、六边形和八边形等多边形来逼近一个圆不同,Star 使用 2 个重叠的正方形来模拟一个圆:1 个直立的和 1 个旋转了 45 度的。这些多边形是双层的。它们可以被看作带有粗边框的多边形。边框和封闭区域的权重符号相反。这比其他尺度空间检测器具有更好的计算特性,并且能够实时实现。与 SIFT 和 SURF 相比,SIFT 和 SURF 找到在较大的尺度上会影响精度的子采样像素处的极值,而 CenSurE 在金字塔中使用所有尺度的完整空间分辨率创建特征向量。
下面的代码展示了在 CenSurE 检测器的帮助下计算 BRIEF 描述符。
注意,您需要 opencv contrib) 才能使用此功能。
函数 brief.getDescriptorSize() 给出了以字节为单位使用的