This program allows you to benchmark algorithms in OpenCV related to object detection using key points. It allows you to set all the required parameters using a simple interface and search for an object in a scene and view the results. This program is written in C++ using Qt and it uses OpenCV libraries.
Please note that this program should only be used for educational purposes. In my case I was using it for research purposes and as a tool for deciding which algorithm I should use in my programs.
Following are the calculation steps that are being performed in this program:
1. Input an object and a scene image (User simply browses for files)
2. Detect key points
3. Extract feature descriptors
4. Match descriptors
5. Find homography change using RANSAC algorithm
6. Draw best matches
7. Save and display the results (Saved under program’s folder “output.png”)
To be specific, following algorithms and parameters can be tested using this program.
SIFT:
Contrast Threshold, Edge Threshold, Number of Features, Number of Octave Layers, Sigma
SURF:
Hessian Threshold, Number of Octaves, Number of Octave Layers, Extended, Upright
BRIEF:
Descriptor Length in Bytes
ORB:
Number of Features, Scale Factor, Number of Levels, Edge Threshold, First Level, WTA K, Score Type, Patch Size
Note that for any algorithm it is possible to select Brute Force Matching instead of FLANN Based Matching.
Below you can find screenshots and result examples of my program. Please note that this program has nothing to do with Face Detection or Face Recognition algorithms and it uses key point extraction and matching methods to find any object in any scene.
You can download source codes from here:
You can also download the binary (ready to run) files from here:
For any questions or bugs and problems you may find in the program, or if you are facing problems in building it from source please use this link to contact me.