SURF Descriptor Stability in 2.4.3 (Bug #2640)
Description
Stability of the SURF descriptor has dropped significantly since 2.3.1. This potential bug was discovered when updating a benchmark comparing SURF implementations. SURF detector stability remains unchanged.
Performance in 2.3.1: 11.971205372636376
Performance in 2.4.3: 8.460255240182965
Sum of F-Statistic across a set of images. Larger values are better. The same benchmark code was run on both versions.
Benchmark Website: http://boofcv.org/index.php?title=Performance:SURF
Github: https://github.com/lessthanoptimal/SURFPerformance
Note that the webpage (as of 12/17/2012) results use a different performance metric and will be updated soon.
Source Code:
void process( Mat image , FILE *output) { // detect the features std::vector<KeyPoint> ipts; SurfFeatureDetector detector(1100,4,4,false); detector.detect(image,ipts); // save detected points to a file for( size_t i = 0; i < ipts.size(); i++ ) { KeyPoint &p = ipts.at(i); fprintf(output,"%.3f %.3f %.5f %.5f\n",p.pt.x,p.pt.y,p.size,0.0); } fclose(output); printf("Done: %d\n",(int)ipts.size()); }
Related issues
related to Bug #2219: Example SURF_Homography.cpp no longer works as expected w... | Done | 2012-07-31 |
Associated revisions
Merge pull request #2640 from a-wi:2.4
History
Updated by Andrey Pavlenko about 12 years ago
- Category set to features2d
- Priority changed from High to Normal
- Assignee set to Maria Dimashova
- Start date deleted (
2012-12-17)
Updated by Peter Abeles about 12 years ago
I pasted the wrong code. This problem deals with the SURF descriptor and not the detector. The actual source file on github can be found at
Correct Source code:
// Create Surf Descriptor Object SurfDescriptorExtractor extractor; printf("points before: %d\n",(int)ipts.size()); // Extract the descriptors for the ipts Mat descriptors; extractor.compute( image, ipts, descriptors ); // output the description fprintf(output,"64\n"); for( size_t i = 0; i < ipts.size(); i++ ) { KeyPoint &p = ipts.at(i); fprintf(output,"%7.3f %7.3f %7.5f",p.pt.x,p.pt.y,p.angle); for( int j = 0; j < 64; j++ ) { float val = descriptors.at<float>(i,j); fprintf(output," %0.10f",(float)val); } fprintf(output,"\n"); } printf("Done\n");
Updated by Vadim Pisarevsky about 12 years ago
- Affected version set to 2.4.3
- Target version deleted ()
Updated by Vadim Pisarevsky about 12 years ago
- Assignee deleted (
Maria Dimashova)
Updated by Vadim Pisarevsky about 12 years ago
- Category changed from features2d to nonfree
Updated by Vadim Pisarevsky about 12 years ago
- Assignee set to Vadim Pisarevsky
Updated by Andrey Kamaev about 12 years ago
Fix is pushed to 2.4: 1f261c2
- Status changed from Open to Done
Updated by Kirill Kornyakov about 12 years ago
- Target version set to 2.4.4