# Revision history [back]

### Are SURF feature descriptors computed differently in 2.3.1 and 2.4.2?

I recently updated OpenCV from 2.3.1 to 2.4.2 and realized that I got different results when computing SURF feature descriptors. Keypoints seem to be the same. Where did something change and why? How can I reproduce the results frm 2.3.1 with 2.4.2?

### Are SURF feature descriptors computed differently in 2.3.1 and 2.4.2?

I recently updated OpenCV from 2.3.1 to 2.4.2 and realized that I got different results when computing SURF feature descriptors. Keypoints seem to be the same. Where did something change and why? How can I reproduce the 2.3.1 results frm 2.3.1 with 2.4.2?

### Are SURF feature descriptors computed differently in 2.3.1 and 2.4.2?

I recently updated OpenCV from 2.3.1 to 2.4.2 and realized that I got different results when computing SURF feature descriptors. Keypoints seem to be the same. Where did something change and why? How can I reproduce the 2.3.1 results with 2.4.2?

EDIT

To be more precise: I've clustered millions of features with a self-written HKM data structure on 2.3.1. Quantizing image features lead to a rather well distribution. After changing to 2.4.2 (but still using the data structure trained with 2.3.1), some features seem to appear far more often in images than others. This means that somehow the SURF features must be computed differently in 2.3.1 and 2.4.2

### Are SURF feature descriptors computed differently in 2.3.1 and 2.4.2?

I recently updated OpenCV from 2.3.1 to 2.4.2 and realized that I got different results when computing SURF feature descriptors. Keypoints seem to be the same. Where did something change and why? How can I reproduce the 2.3.1 results with 2.4.2?

EDIT

To be more precise: I've clustered millions of features with a self-written HKM data structure on 2.3.1. Quantizing image features lead to a rather well distribution. After changing to 2.4.2 (but still using the data structure trained with 2.3.1), some features seem to appear far more often in images than others. This means that somehow the SURF features must be computed differently in 2.3.1 and 2.4.2

UPDATE

As foelin pointed out in his answer, there is a difference between 2.3.1 and 2.4.2 code in surf.cpp:

• 2.3.1, surf.cpp line 688:

descriptor_dir = cvFastArctan( besty, bestx );

*2.4.2, surf.cpp line 670:

descriptor_dir = fastAtan2( -besty, bestx );

Could someone please confirm this is a bug in 2.4.2?

### Are SURF feature descriptors computed differently in 2.3.1 and 2.4.2?

I recently updated OpenCV from 2.3.1 to 2.4.2 and realized that I got different results when computing SURF feature descriptors. Keypoints seem to be the same. Where did something change and why? How can I reproduce the 2.3.1 results with 2.4.2?

EDIT

To be more precise: I've clustered millions of features with a self-written HKM data structure on 2.3.1. Quantizing image features lead to a rather well distribution. After changing to 2.4.2 (but still using the data structure trained with 2.3.1), some features seem to appear far more often in images than others. This means that somehow the SURF features must be computed differently in 2.3.1 and 2.4.2

UPDATE

As foelin pointed out in his answer, there is a difference between 2.3.1 and 2.4.2 code in surf.cpp:

• 2.3.1, surf.cpp line 688:

descriptor_dir = cvFastArctan( besty, bestx ); *2.4.2, );


2.4.2, surf.cpp line 670:

descriptor_dir = fastAtan2( -besty, bestx );
• 
); 

Could someone please confirm this is a bug in 2.4.2?

### Are SURF feature descriptors computed differently in 2.3.1 and 2.4.2?2.4.2? (bug or feature ???)

I recently updated OpenCV from 2.3.1 to 2.4.2 and realized that I got different results when computing SURF feature descriptors. Keypoints seem to be the same. Where did something change and why? How can I reproduce the 2.3.1 results with 2.4.2?

EDIT

To be more precise: I've clustered millions of features with a self-written HKM data structure on 2.3.1. Quantizing image features lead to a rather well distribution. After changing to 2.4.2 (but still using the data structure trained with 2.3.1), some features seem to appear far more often in images than others. This means that somehow the SURF features must be computed differently in 2.3.1 and 2.4.2

UPDATE

As foelin pointed out in his answer, there is a difference between 2.3.1 and 2.4.2 code in surf.cpp:

2.3.1, surf.cpp line 688:

descriptor_dir = cvFastArctan( besty, bestx );


2.4.2, surf.cpp line 670:

descriptor_dir = fastAtan2( -besty, bestx );


Could someone please confirm this is a bug in 2.4.2?