BruteForce Feature Matching 如何计算 "distance" 值?

How does BruteForce Feature Matching computes the "distance" value?

我编写了一个应用程序来检测关键点,计算它们的描述符并将它们与 OpenCV 中的 BruteForce 相匹配。这很有魅力。

但是: 匹配对象中的距离是如何计算的?

例如:我正在使用 SIFT 并获得每个关键点具有 128 个浮点值的描述符向量。 在匹配中,将关键点与例如 10 个具有相同矢量大小的其他描述符进行比较。 现在,我得到距离为 0.723 的 "best match"。

这是一个向量到另一个向量的所有浮点数的每一个欧氏距离的平均值吗? 我只想了解这个值是如何创建的。

默认情况下,根据 Open-CV 文档,BFMatcher 使用 L2 范数。

C++: BFMatcher::BFMatcher(int normType=NORM_L2, bool crossCheck=false )

Parameters: 
normType – One of NORM_L1, NORM_L2, NORM_HAMMING, NORM_HAMMING2. 
L1 and L2 norms are preferable choices for SIFT and SURF descriptors ...

参见:http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_descriptor_matchers.html?highlight=bruteforcematcher#bruteforcematcher

最佳匹配是与所有其他特征向量相比距离最短的特征向量。