我正在使用 ORB 的 OpenCV 实现以及 BFMatcher。 OpenCV 声明 NORM_HAMMING
应该与 ORB 一起使用。
这是为什么? norm_hamming
与其他方法(如欧氏距离、norm_l1 等)相比有何优势
最佳答案
在比较计算机视觉中的描述符时,欧氏距离通常被理解为两个向量元素之间的平方差之和的平方根。
ORB 描述符是二进制值的向量。如果将欧几里德距离应用于二元向量,单次比较的平方结果将始终为 1 或 0,这在估计元素之间的差异时没有提供信息。整体欧几里德距离将是这些 1 和 0 之和的平方根,这同样不是向量之间差异的良好估计。
这就是使用汉明距离的原因。这里的距离是不相同的元素的数量。正如 Catree 所指出的,您可以通过对向量进行简单的 bool 运算来计算它,如下图所示。这里 D1 是一个 4 位描述符,我们将其与 D2 中显示的 4 个描述符进行比较。矩阵H是每一行的汉明距离。
关于opencv - ORB/BFMatcher - 为什么是 norm_hamming 距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43614497/