我是图像处理和模式识别方面的新手。我正在尝试实现 SIFT 算法,我可以在其中创建 DoG 金字塔并识别每个八度音程中的局部最大值或最小值。我不明白的是如何在每个八度音程中使用这些局部最大值/最小值。我如何结合这些点?
我的问题可能听起来很微不足道。我读过 Lowe 的论文,但无法真正理解他在建造了 DoG 金字塔后做了什么。任何帮助表示赞赏。
谢谢
我是图像处理和模式识别方面的新手。我正在尝试实现 SIFT 算法,我可以在其中创建 DoG 金字塔并识别每个八度音程中的局部最大值或最小值。我不明白的是如何在每个八度音程中使用这些局部最大值/最小值。我如何结合这些点?
我的问题可能听起来很微不足道。我读过 Lowe 的论文,但无法真正理解他在建造了 DoG 金字塔后做了什么。任何帮助表示赞赏。
谢谢
基本上,他在构建 DoG 金字塔后所做的就是检测这些图像中的局部极值。之后,他丢弃了一些检测到的局部极值,因为它们可能不稳定。识别那些不稳定的关键点/特征的过程通过两个步骤完成:
为了能够执行这些步骤,首先您需要通过泰勒级数展开来获得极值的真实位置。它将为您提供解决这两个步骤的信息。
最后一步是构建描述符......
我也在研究这个算法,我觉得理解起来并不容易。Lowe 的论文中没有包含一些细节,因此这使得它更难理解。我没有找到很多额外的资源可以更深入地解释这个算法,但是有一些开源实现,所以你也可以使用它们。
编辑:更多信息:)
您链接的论文是他的早期作品,您应该获得最新版本的论文,因为有一些修改。搜索更多资源我也阅读了他的专利,它还包含旧信息,所以你也不应该看那里。
所以,我对这个尺度空间极值步骤的理解如下。首先,我们需要建立一个高斯金字塔。论文说,为了局部极值完整性,我们需要在每个倍频程中构建s+3 个高斯图像。经过一些测试,Lowe 得出结论,对于s = 3,他得到了最好的结果。这意味着我们在每个八度音程中有 6 个高斯图像,从中我们可以得到 5 个 DoG 图像。请注意,所有这些 DoG 图像都具有相同的分辨率。仅在传递到下一个八度音程时才进行重新采样。
下一步将是找到一个局部极值。Lowe 建议在 26 个邻域内搜索,这意味着我们应该从第二张图像开始搜索,因为这是存在 26 个邻域的第一张图像。同样,我们停止对第四张图像的搜索。对每个八度音阶单独重复此过程。对于找到的每个极值,至少您应该保存它的位置和比例。下一步找到极值将是更准确的定位,这是通过泰勒级数完成的。
这是我对这一步如何工作的理解,我希望我离真相不会太远:)
希望这能帮助更多一点。
我们有两个金字塔。一个高斯金字塔和一个DoG金字塔。高斯金字塔有 6 个模糊图像。DoG是这些图像的差异,所以DoG中有5个图像。你与高斯金字塔无关。请注意,所有这些都在第一个八度音阶中!创建第一个金字塔时,调整图像大小并开始为第二个八度构建新的金字塔。
假设您的原始图像是 512x512。在第一个八度音程中,所有图像都是 512x512,但在第二个八度音程中,所有图像都是 256x256。同样,您有 6 个图像高斯金字塔和 5 个在 DoG 金字塔中。但它们在第二个 ocave 中都是 256x256。无需提及第三个八度。
现在对于最小值和最大值的匹配:(你在第一个八度音阶)假设你在第一个八度音阶中寻找最大值。您必须使用 DoG 金字塔并从第二张图像开始。您取一个像素并计算它是否为最大值。在此计算中,您应该使用 DoG 金字塔的第 1、第 2 和第 3 张图像。如果完成,通过考虑第 2、3 和第 4 图像来找到第 3 图像中的最大值。最后通过考虑第 3、第 4 和第 5 个图像来找到第 4 个图像中的最大值。
现在在第一个 ocatave 中找到 mixama 已完成,转到下一个 octave 并重复这些步骤。