Design an abstract class where multiple image features, descriptors and matching methods can be chosen from the config file, including traditional and deep learning based methods, for some visual feature based tasks, such as visual slam, AR/VR and object tracking.
Supportted image features: BRISK, ORB, AKAZE, SIFT, SURF, CONTOUR, SuperPoint (with TensorRT accelerated)
Supportted descriptor types: BRIEF, ORB, FREAK, AKAZE, SIFT, BRISK, SURF, SuperPoint (with TensorRT accelerated)
Supported matching methods: BF_HAMMING, BF_L2, SuperGlue (with TensorRT accelerated)
- cmake >= 2.8
- All OSes: click here for installation instructions
- make >= 4.1 (Linux, Mac), 3.81 (Windows)
- Linux: make is installed by default on most Linux distros
- Mac: install Xcode command line tools to get make
- Windows: Click here for installation instructions
- OpenCV >= 4.1
- This must be compiled from source using the
-D OPENCV_ENABLE_NONFREE=ON
cmake flag for testing the SIFT and SURF detectors. - The OpenCV 4.1.0 source code can be found here
- This must be compiled from source using the
- gcc/g++ >= 5.4
- Linux: gcc / g++ is installed by default on most Linux distros
- Mac: same deal as make - install Xcode command line tools
- Windows: recommend using MinGW
- optional for USE_DEEP_FEATURES
- TensorRT 8.2.3
- Libtorch 1.8
- Clone this repo.
- Make a build directory in the top level directory:
mkdir build && cd build
- Compile:
cmake .. && make
- Run it:
./image_matching [keypoints type] [descriptor type]
.
Image Matching from Handcrafted to Deep Features: A Survey
Image Matching Across Wide Baselines: From Paper to Practice