Hello, being new to the Math Forum, please let me know if this is the wrong place for the question. I am trying to re-invent the wheel and implement the SIFT algorithm (no Matlab, all I have is pure C#). Situation: Currently, I am producing the Gauss and the DoG pyramids, and then I detect extrema within neighbored DoGs and localize them. So far so good, but I am very uncertain about the results. So here I have a bunch of questions (again, forgive me if I am wrong here): * From all the published papers I have found on the internet, it is not 100% clear (to me) how to build the Gauss pyramid. Is the original image already part of it, or does it start with the first blured image? I implemented as follows: - Say I determine 2 octaves with 2 intervals. - Blur original with sigma = 0.5 and copy it as Gauss image #1 - Blur #1 with sigma = 1.4 => Gauss image #2 - Blur #1 with sigma = 1.98 => Gauss image #3 - Subract #3 - #2 => DoG image #1 - Blur #1 with sigma = 2.8 => Gauss image #4 - Subtract #4 - #3 => DoG image #2 - Continue to - Blur #1 with sigma = 5.6 => Gauss image #6 - Subract #6 -#5 => DoG image #4 - Re-sample Gauss image #4 (sigma is 2*1.4) to #1 Gauss image in 2nd Octave What do you think? Is the algorithm correctly interpreted this way?
* Subtraction of images means pixel subtraction. However, calculating the pixels already has a trade off regarding the accuracy, right? So would it help the accuracy to calculate the whole pyramides as floating arrays instead of images?
* Are there any ways at all to determine the accuracy of the implemented algorithm steps?
* I experimented, manipulating the same image (human face) slightly (softening, noise add, rotate 45 degrees, etc.), and I manually count the extrema which are "obviously" identical. I found 15-30% identity. Is this a ratio to be expected up to this stage? To me, it seems quite low.
* On another example ( house front ), my keypoints are more or less randomly distributed, while in other papers I have seen keypoints mainly close to the window edges.