为什么我的SIFT实施仅发现平坦区域?

时间:2012-07-02 22:14:24

标签: c++ computer-vision sift

我正在尝试编写SIFT的实现,就像练习一样。但是,我遇到了一些我尚未弄清楚的问题。据我所知,我得到的是SIFT的反面:它找到了图像中无趣,平坦的区域。我正在使用VXL。

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

  1. 建立一个guassian金字塔

  2. 使用这个金字塔,获得高斯金字塔差异

  3. 查找所有本地极值以获得潜在关键点

  4. 没关系,因为我没有这么做。

  5. 我有pastebin我的代码,如果有人愿意提供帮助,我会永远感激。到目前为止,this是我的算法吐出的,在每个检测到的“关键点”的位置都有品红色像素。

    最后,标准免责声明,如果我做错了或违反了某些行为准则,我表示道歉。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

对于有这个问题的人:我相信那是因为你的模糊不变是错误的。我也犯了错误。

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 -> ...