Opencv 在SIFT/SURF中,层和倍频程之间有什么区别?

Opencv 在SIFT/SURF中,层和倍频程之间有什么区别?,opencv,feature-detection,sift,surf,Opencv,Feature Detection,Sift,Surf,我读了劳的两篇论文('99&'04),我想说我理解其中的大部分。我在youtube上看到了所有与SIFT相关的类,但没有一个明确说明为什么我们要同时使用八度和层 我知道,在同一个八度音阶中,通过~计算不同西格玛的~Laplacian,然后将分辨率重新采样到下一个八度音阶的一半,再~计算与第一个八度音阶相同的西格玛的~Laplacian,可以得到更多的层。然后你想做多少次就做多少次 最初,我认为您可以使用图层(多个SIGMA)在一幅图像上查找不同大小的特征,然后重新采样,以便计算每个特征的每个倍频

我读了劳的两篇论文('99&'04),我想说我理解其中的大部分。我在youtube上看到了所有与SIFT相关的类,但没有一个明确说明为什么我们要同时使用八度和层

我知道,在同一个八度音阶中,通过~计算不同西格玛的~Laplacian,然后将分辨率重新采样到下一个八度音阶的一半,再~计算与第一个八度音阶相同的西格玛的~Laplacian,可以得到更多的层。然后你想做多少次就做多少次

最初,我认为您可以使用图层(多个SIGMA)在一幅图像上查找不同大小的特征,然后重新采样,以便计算每个特征的每个倍频程(重采样级别)上的描述符,因此,您可以获得不同比例的描述符,这些描述符可能与其他图像中相似比例的描述符更匹配。显然,我错了,每个特征只计算一个描述符,因为它是从梯度方向计算出来的,所以它对比例是不变的

但这让我想知道,为什么我们需要重采样,为什么不能或不应该只使用大量的层和一个倍频程(无重采样)。这仅仅是因为重新取样更便宜吗?如果是,我们为什么不重新取样呢

我用OpenCV做了一个实验,看看是如何检测到的,以及检测到了什么。以下是我的观察结果:

1倍频程,1层=>所有功能都具有完全相同的大小,正如预期的那样,找到263个匹配项

1倍频程,2层=>发现1o1l测试中的所有特征,以及一些比小特征大约x1.35的其他特征,发现326个匹配项

2倍频程,1层=>发现了1o1l测试中的大多数特征(可能全部),加上一些与x2一样大的其他特征,这也是预期的,因为我在一半时重新采样,发现了318个匹配项

2倍频程,2层=>功能具有x1大小、x1.35或x2大小。我找不到任何x2.7的尺寸,正如我预期的那样。仅找到299个匹配项。我想现在有了多个更紧密的层,更多的东西看起来太像了,并且没有通过比率测试,所以更多的层实际上可能会减少连接点的数量

注:~符号表示某种程度的。当我知道它不是确切的解释时,我会使用它,但确切的解释会更长,并且不会给问题增加任何价值