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?
1 | initial version |
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?
2 | No.2 Revision |
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?
3 | No.3 Revision |
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
4 | No.4 Revision |
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?
5 | No.5 Revision |
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?
6 | No.6 Revision |
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?