# I think the Gaussian weighting of SIFT descriptor is wrong

In David G. Lowe's paper, the Sigma of Gaussian weighting function is one half the width of the descriptor window. If the descriptor window is 32x32 pixels with 4x4 subregions, I think the Sigma should be 8 rather than 2. But in sift.cpp, the code is "float exp_scale = -1.f/(d * d * 0.5f)", which means the Sigma is 2. Is there anything wrong?

edit retag close merge delete

2

Hmm even if it is wrong, your calculation is off also right? You say half of descriptor windows which is 32x32pixels. This means that sigma in this case should be 16 right? I do not know how half of 32 would result in 8.

( 2013-08-01 02:37:51 -0500 )edit

Sorry, it is not exact. I think 32x32 means (2xwidth+1)x(2xwidth+1), so width is 15.5 and Sigma is 7.75.

( 2013-08-01 03:01:37 -0500 )edit
1

Hmm, have you checked the vlfeat-implementation? http://www.vlfeat.org/overview/sift.html#tut.sift.ubc

( 2013-08-01 05:51:52 -0500 )edit

I see. Similar with vlfeat,"c_rot" and "r_rot" have been normalized by "hist_width", so the sigma is "d/2". Thanks for Guanta and StevenPuttemans' help.

( 2013-08-01 09:45:20 -0500 )edit

Sort by ยป oldest newest most voted

OpenCV is correct. Similar with vlfeat,"c_rot" and "r_rot" have been normalized by "hist_width", so the sigma is "d/2".

more

2

Sorry, I have not 50 points to accept my own answer.

( 2013-08-09 04:43:28 -0500 )edit
1

Then help him out and accept his answer :) Also closes this topic down :)

( 2013-08-09 05:02:50 -0500 )edit
2

added some karma points, now you can accept it ;)

( 2013-08-09 05:33:53 -0500 )edit

have done, thanks :)

( 2013-08-11 23:33:22 -0500 )edit

Official site

GitHub

Wiki

Documentation