【问题标题】:How does the Lowe's ratio test work?劳氏比率测试如何工作?
【发布时间】:2018-12-14 06:39:32
【问题描述】:

假设我有一组 N 个图像,并且我已经计算了每个图像的 SIFT 描述符。我知道想计算不同特征之间的匹配。我听说一种常见的方法是劳氏比率测试,但我不明白它是如何工作的。有人可以向我解释吗?

【问题讨论】:

  • 您可以阅读下面的教程:docs.opencv.org/3.0-beta/doc/tutorials/features2d/… 总而言之,每个特征描述符都与 n 个最近邻相匹配。 (n=2 在下面的情况下) matcher.knnMatch(desc1, desc2, nn_matches, 2);然后 Lowe's ratio 测试,试图找出两者中的哪一个是最佳匹配。
  • @eiki 比率测试无法确定两者中的哪一个是最佳匹配。比率测试检查匹配是否不明确并应删除。您可以将其视为一种异常值去除技术。
  • 亲爱的@dari,你能更清楚地解释一下吗?
  • @elena 如果比率接近 1,则两个匹配项同样出色,选择一个匹配项会给您带来 50% 左右的异常值。因此,通常最好丢弃两个匹配项。
  • 有可能爱上算法吗? (感谢 o.g. Lowe 和所有回答者 - 我今天学到了一些东西!)

标签: computer-vision sift


【解决方案1】:

为了更好地理解比率测试,您需要阅读他的文章。只有阅读文章,您才能找到答案。 简单的答案是低,Lowe 在他的实验中实现了这一点,并建议在两个相似距离之间进行选择,选择距离为 0.7 的另一个。

查看以下链接: https://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf

【讨论】:

  • 我全力以赴写了一个答案,这是对Lowe文章的总结,并添加了一些在论文中不言自明的指针。请看一下。 :)
【解决方案2】:

短版:第一张图片的每个关键点都与第二张图片的多个关键点相匹配。我们为每个关键点保留 2 个最佳匹配(最佳匹配 = 距离测量值最小的那些)。劳氏检验检查这两个距离是否足够不同。如果不是,则该关键点被消除,不再用于进一步计算。

加长版:

David Lowe 提出了一种过滤关键点匹配的简单方法,即在次优匹配几乎相同时消除匹配。请注意,尽管在计算机视觉的背景下得到普及,但这种方法与 CV 无关。在这里,我描述了该方法,以及它是如何在计算机视觉环境中实现/应用的。

假设 L1 是图像 1 的一组关键点,每个关键点都有一个描述,列出关键点的信息,该信息的性质实际上取决于所使用的描述符算法。 L2 是图像 2 的关键点集。典型的匹配算法将通过为 L1 中的每个关键点找到 L2 中最接近的匹配来工作。如果使用欧几里得距离,就像在 Lowe 的论文中一样,这意味着集合 L2 中的关键点与 L1 中的关键点的欧几里得距离最小。

在这里,我们可能只想设置一个阈值并消除距离高于该阈值的所有配对。但这并不是那么简单,因为并非描述符中的所有变量都具有“判别性”:两个关键点的距离测量值可能很小,因为它们的描述符中的大多数变量具有相似的值,但是这些变量可能与实际匹配无关。人们总是可以为描述符的变量添加权重,以便更具区分性的特征“计数”更多。 Lowe 提出了一个更简单的解决方案,如下所述。

首先,我们将 L1 中的关键点与 L2 中的 两个 关键点进行匹配。根据图像 1 中的关键点在图像 2 中不能有多个等价点的假设,我们推断这两个匹配项不可能都是正确的:至少其中一个是错误的。按照 Lowe 的推理,距离最小的匹配是“好”匹配,距离第二小的匹配相当于随机噪声,一种基本速率。如果“好”匹配无法与噪声区分开来,那么“好”匹配应该被拒绝,因为它不会带来任何有趣的信息。所以一般原则是最佳匹配和次佳匹配之间需要有足够的差异。

“足够的差异”的概念如何操作很重要:Lowe 使用两个距离的比率,通常表示如下:

if distance1 < distance2 * a_constant then ....

其中 distance1 是关键点与其最佳匹配之间的距离,distance2 是关键点与其次佳匹配之间的距离。使用“小于”符号可能会有些混乱,但当考虑到较小的距离意味着该点更近时,这一点就变得很明显了。在 OpenCV 世界中,knnMatch 函数会从最好到最差的顺序返回匹配,因此第一个匹配的距离会更小。问题实际上是“有多小?”为了弄清楚这一点,我们将 distance2 乘以一个必须在 0 和 1 之间的常数,从而减小 distance2 的值。那我们再看distance1:还是比distance2小吗?如果是,那么它通过了测试,并将被添加到好点列表中。如果不是,就必须淘汰。

这样就解释了“小于”部分,但是乘法呢?既然我们正在查看距离之间的差异,为什么不直接使用距离 1 和距离 2 之间的实际数学差异呢?虽然从技术上讲我们可以,但最终的差异将是绝对值,它太依赖于描述符中的变量、我们使用的距离测量类型等。如果提取描述的代码发生变化,影响所有距离测量怎么办?简而言之,进行距离1 - 距离2 的鲁棒性会降低,需要经常进行调整,并且会使方法比较更加复杂。关键在于比例。

要点:Lowe 的解决方案很有趣,不仅因为它简单,而且因为它在很多方面与算法无关。

【讨论】:

  • 我认为这也适用于计算机视觉环境之外,它是一种不使用硬阈值来选择距离的好方法
  • 你是对的。我添加了一个句子来表达比率测试与CV无关的想法。
  • 如果您使用bf.knnMatch(des1, des2, k=3) 或一般情况下k &gt; 2 会怎样?在这种情况下,它将返回一个列表列表,每个列表的大小为k。应该如何进行劳氏比率检验?
  • nbro:对于 k > 2,其他配对将是第 3 佳、第 4 佳,依此类推。 Lowe 的测试比较了最佳和第二佳,因为第二佳被认为是“噪音”(不良配对)中的最佳配对。就像算法在说“给我你认为正确的配对。现在为同一个关键点提供最好的坏配对。我认为没有显着差异,因此与该关键点相关的任何配对都不能使用计算单应性”。
  • 中版:获得关键点匹配的前两个最佳结果。如果这些匹配在关键点之间具有相似的“距离”,那么它们可能不是很好的匹配,应该被丢弃。如果最佳结果与次佳匹配的距离相差很大,则它可能是“好”匹配,应该保留。
【解决方案3】:

劳氏比率检验


算法:

  1. 首先,我们计算图像一中的特征 fi 与图像二中的所有特征 fj 之间的距离。
  2. 我们选择图像 2 中的特征 fc 与图像 2 中的特征 fi 的最小距离作为我们最接近的匹配。
  3. 然后我们继续获取特征 fs 图像 2 中与特征 fi 距离第二近的特征。
  4. 然后我们通过距离比计算最接近的匹配 fc 与第二接近的匹配 fs 的距离。
  5. 最后我们用距离比保持匹配。

距离比 = d(fi, fc)/d(fi, fs) 可以定义为图像一中的特征 fi 与最接近的 fc 之间的距离匹配图二。在特征 fi 和 fs 之间计算的距离上,图像二中第二接近的匹配。

我们通常将距离比阈值 (ρ) 设置为 0.5 左右,这意味着我们要求我们的最佳匹配与我们的初始特征描述符的第二最佳匹配至少接近两倍。从而丢弃我们模棱两可的匹配并保留好的匹配。

【讨论】:

  • 点赞!如果您发现这个答案比接受的答案更清晰简洁;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2021-10-31
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多