Matlab中的尺度不变特征变换(SIFT)实现

时间:2011-08-15 16:23:41

标签: matlab image-processing computer-vision sift

我正在尝试在matlab中实现SIFT。我正在关注Lowe 2004年的论文。我完成了关键点的计算和为它们分配方向(即所有八度音阶)。在实现描述符之前,我有一个疑问..如何在其他大小的八度音阶中找到关键点的描述符。 (如果原始图像尺寸为256 * 256,则其他尺寸的八度音程表示类似128 * 128,64 * 64)。

我的方法解释如下。

  1. 这里我拍摄了256 * 256的图像和八度为256 * 256,128 * 128,64 * 64,32 * 32的图像。在每个八度音阶中有5个图像(一个原始图像和4个模糊图像)。

  2. 我计算了所有八度音阶的关键点和方向。 (在这里我每个八度音阶都有2张图像)。

  3. 大小为128 * 128,64 * 64,32 * 32的八度音阶关键点。如果我想在256 * 256图像的图像上表示这些关键点,我该如何表示? (我怀疑是例如.64 * 64图像的关键点范围高达(64,64))。

    如果答案是64 * 64图像插值到256 * 256。如何插入关键点(即位置,比例和方向)?

  4. 非常感谢任何建议。谢谢。

2 个答案:

答案 0 :(得分:4)

我建议你看一下VLFeat的SIFT实现(围绕C / C ++代码的mex包装)。深入了解源代码,了解他们正在做什么以及为什么做。与Lowe的论文比较。

答案 1 :(得分:0)

我不确定你究竟是指什么。是不是你在matlab中重现了sift代码。如果是这样,您实际上不需要将较低比例图像中存在的关键点表示为原始比例。这些值与它所在的八度音程一起存储在“矢量”中。在编码的后期阶段,八度数可用于进一步计算和执行匹配功能。