ele*_*ena 22 computer-vision sift
假设我有一组 N 个图像,并且我已经计算了每个图像的 SIFT 描述符。我知道想计算不同特征之间的匹配。我听说一种常见的方法是 Lowe 比率测试,但我无法理解它是如何工作的。有人可以向我解释一下吗?
Gui*_*meL 39
简短版本:第一张图像的每个关键点都与第二张图像中的多个关键点相匹配。我们为每个关键点保留 2 个最佳匹配(最佳匹配 = 距离测量值最小的那些)。Lowe's 检验检查两个距离是否足够不同。如果不是,则关键点将被消除并且不会用于进一步的计算。
长版:
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 ....
Run Code Online (Sandbox Code Playgroud)
其中 distance1 是关键点与其最佳匹配之间的距离, distance2 是关键点与其次佳匹配之间的距离。使用“小于”符号可能会有些混乱,但考虑到较小的距离意味着该点更近时,这一点就变得很明显了。在 OpenCV 世界中,knnMatch 函数将返回从最好到最差的匹配,因此第一个匹配将有更小的距离。问题真的是“有多小?” 为了弄清楚这一点,我们将距离 2 乘以一个必须介于 0 和 1 之间的常数,从而减小距离 2 的值。然后我们再看一下distance1:还是比distance2小吗?如果是,那么它通过了测试并将被添加到好点列表中。如果不是,则必须将其消除。
所以这解释了“小于”部分,但是乘法呢?既然我们正在研究距离之间的差异,为什么不直接使用距离 1 和距离 2 之间的实际数学差异呢?虽然从技术上讲我们可以,但结果差异是绝对值,它太依赖于描述符中的变量,我们使用的距离测量类型等。 如果提取描述的代码发生变化,影响所有距离测量怎么办? 简而言之,执行距离 1 - 距离 2 会不太稳健,需要频繁调整,并使方法比较更加复杂。这都是关于比例的。
要点信息:Lowe 的解决方案很有趣,不仅因为它简单,而且因为它在很多方面都与算法无关。
距离比 =d(fi, fc)/d(fi, fs)
可以定义为图像一中的特征 f i与图像二中最接近的匹配特征f c之间计算的距离。在特征 f i和 f s之间计算的距离上,图像二中第二接近的匹配。
我们通常将距离比阈值 (\xcf\x81)设置为 0.5 左右,这意味着我们要求最佳匹配与初始特征描述符的距离至少是第二最佳匹配的两倍。从而丢弃我们不明确的匹配并保留好的匹配。
\n 归档时间: |
|
查看次数: |
13833 次 |
最近记录: |