HarrisZ+ and DoG + AffNet + OriNet + HardNet + Blob matching + DTM + RANSAC
- DTM is a non-deep spatial matching filter based on Delaunay triangulation, like GMS or LPM.
- The original code was released in Matlab, this is the Python implementation.
- DTM was originally developed to work with Blob matching, a general framework wich also includes matching strategies like MNN or NNR. Blob matching is also included in this implementation (but it is not mandatory).
- For the best result, DTM requires as input the candidate matches and their similarity, but can works with spatial information only and no descriptor similarity clues.
- DTM can also be used as guided matching to increase the correspondences.
Run from the terminal
git clone https://github.com/fb82/DTM.git
cd DTM
git submodule update --init --recursive
pip install -r requirements.txt
The current requirement file has been tested on Ubuntu 24.04.
To use the demo with the default example image pair run from the terminal
python ./demo.py
or with your image pair as
python ./demo.py <path of 1st image> <path of the 2nd image>
For further details or customizations please inspect the comments in demo.py.
- The demo uses DoG and HarrisZ+ keypoints to compute the matches. In case of OOM issues you can select only one kind of keypoints.
- Blob matching is implemented in PyTorch. By default it runs on CPU to avoid OOM, but if you have enough memory you can try on GPU. The demo allows alternatively the usage of the standard MNN.
See the paper SIFT Matching by Context Exposed (TPAMI 2022).