为什么我的 SIFT 实现只找到平坦区域

Why is my SIFT implementation only finding flat regions?

本文关键字:区域 我的 SIFT 实现 为什么      更新时间:2023-10-16

我正在尝试编写SIFT的实现,只是作为一种练习。但是,我遇到了我还无法弄清楚的问题。据我所知,我得到的是与SIFT相反的:它找到了图像中无趣的平面区域。我正在使用 VXL。

无论如何,我对SIFT早期阶段的理解如下:

  1. 建造瓜斯金字塔

  2. 使用此金字塔,得到高斯差

  3. 金字塔
  4. 查找所有局部极值以获取潜在关键点

  5. 没关系,因为我没有走到这一步。

我有我的代码,如果有人愿意帮助,我将永远感激不尽。到目前为止,这就是我的算法吐出的内容,在每个检测到的"关键点"的位置都有一个洋红色像素。

最后,标准免责声明,如果我做错了什么或违反了一些行为准则,我深表歉意。

您可以看到 sift 的 opencv 实现是否具有相同的行为:http://docs.opencv.org/modules/nonfree/doc/feature_detection.html#sift

对于任何有这个问题的人:我相信这是因为你弄错了模糊常数。我也犯了错误。

BLUR_i+1_oct(j) = BLUR_i_oct(j)*BLUR_STEP_CONSTANT;
BLUR_0_oct(j+1) = 2*BLUR_0_oct(j);

例如 Sigma = 1.5,模糊应为:

1 -> 1.5 -> 1.5^2 -> 1.5^3 -> 1.5^4
2 -> 2*1.5 -> ...