Ask Your Question

SIFT and OpponentSIFT normalisation

asked 2013-02-09 03:15:11 -0600

alexcv gravatar image

Hi all, When using SIFT or SURF descriptors, there output is normalized in a different way.

This can impact on the post-processing that is used afterwards. SURF seems to be L2 normalized. Regarding SIFT it is not the case.

Then, if using SIFT or Opponent SIFT, what normalization should be applied to converge to a L2 normalized version ? One can use a simple sift/(||sift||l2 +e) but regarding the current OpenCV SIFT implementation, is there a more convenient way to do ?


edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2013-02-09 08:48:40 -0600

alexcv gravatar image

This was actually a false question ;o)

SIFT is already L2 normalized using the cited normalization method. But for optimization purpose, SIFT signature is converted to unsigned char format (loose precision but gain computational efficacy for the next processing stages). To do so, each descriptor bin has been multiplied by 512.f (check constant value : SIFT_INT_DESCR_FCTR within opencv/modules/nonfree/src/sift.cpp).

Have a nice coding and experimentation !

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2013-02-09 03:15:11 -0600

Seen: 1,558 times

Last updated: Feb 09 '13