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