8

I am trying to implement SIFT in MATLAB.

I have obtained keypoints for (say) 4 different octaves by locating local maxima and minima in DOG (difference of gaussian) space. However I am at loss at what to do with the keypoints from the last 3 octaves.

Do I include them in keypoints for the original image, if yes then how do I do the translation from the reduced image to the original e.g pixel (i,j) in 256 x 256 image(2nd octave) to pixel(i',j') in 512x512 image (1st octave). I tried many sift tutorials but didn't find anything conclusive.

joemaller
  • 19,579
  • 7
  • 67
  • 84
shujj
  • 355
  • 1
  • 2
  • 11
  • 1
    My understanding is that, when you filter at different scales, you don't downsample the image, just change the sigma of the Gaussian. That way, you can still detect keypoints in the same coordinates of the original image. – Lord Henry Wotton Dec 12 '14 at 04:43
  • 1
    And by the way, there is ``freely" usable SIFT code for Matlab case you don't know. For example, [this](http://www.robots.ox.ac.uk/~vedaldi/code/sift.html). You may be able to check out their implementation to clarify your doubts. – Lord Henry Wotton Dec 12 '14 at 04:46
  • @LordHenryWotton, indeed, for every octave one does not down sample, only the sigma of the Gaussian is increased. But, to create a second, third and etc. octaves, one downsamples the image. – Tal J. Levy Jun 27 '18 at 08:01

1 Answers1

1

It is not clear, what do you mean by "last 3 octaves"? About translation - you multiply obtained scale (from blurring kerkel) and (x,y) by factor of two for 2nd octave, by 4 for 3rd octave, etc...

old-ufo
  • 2,799
  • 2
  • 28
  • 40
  • Yes do we pick one octave to compute the keypoints? how do we use the octaves? – Hani Goc Dec 12 '14 at 14:52
  • So correct me If i am wrong If we have 3 octaves then Can't we concatenate them together? For example: Octave 1 = 100 keys, octave 2 = 40, octave 3 = 20 Total = 160 keys. and every key is described by a set of 128 features? – Hani Goc Dec 12 '14 at 15:47
  • 2
    We centainly do this. By I don`t call it concatenation, just set of keypoints (x,y,scale==octave, vec[128]). – old-ufo Dec 12 '14 at 15:57
  • i'll consider it as an answer: We compute for every layer of every octave the keypoints and we get a set of keypoints like this (x,y,scale==octave, vec[128]). – Hani Goc Dec 12 '14 at 16:19
  • 1
    >We compute for every layer of every octave the keypoints Not exactly. Every octave - yes, every layer - no. For generation of keypoints for one level we use three - (x-1), x, (x+1)th layers and then do non-maximum supression around 26 neighbors (8 spatial from current and 9 from prev and next). – old-ufo Dec 12 '14 at 23:10