Why does my SIFT implementation only find flat regions?

I am trying to write a SIFT implementation as an exercise. However, I encounter problems that I have not yet been able to figure out. As far as I can tell, what I get is the opposite of SIFT: it finds uninteresting, flat areas of the image. I am using VXL.

In any case, my understanding of the early stages of SIFT is as follows:

  • Build a Guassian pyramid

  • Using this pyramid, get the gaussians difference pyramid

  • Find all local extremes to get potential key points

  • It doesn’t matter since I don’t know.

I have a pastebin of my code, if someone wants to help, I will be infinitely grateful. So far, this is what my algorithm pulls out, with a magenta pixel at the location of each detected “key point”.

Finally, a standard disclaimer, my apologies if I did something wrong or violated some rules of conduct.

+5
source share
2 answers

You could see if the opencv prose implementation has the same behavior: http://docs.opencv.org/modules/nonfree/doc/feature_detection.html#sift

0
source

For those who have this problem: I believe that because you did not understand that this is a blur. I was wrong too.

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

e.g. sigma = 1.5, blur should be:

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

All Articles